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 2017/12/17 15:17:40 UTC

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

Repository: hbase-site
Updated Branches:
  refs/heads/asf-site 3d2ba2bbb -> 48bd3915f


http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/VerySlowMapReduceTests.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/VerySlowMapReduceTests.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/VerySlowMapReduceTests.html
index c7a376c..d53e4bc 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/VerySlowMapReduceTests.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/VerySlowMapReduceTests.html
@@ -7,47 +7,46 @@
 <body>
 <div class="sourceContainer">
 <pre><span class="sourceLineNo">001</span>/*<a name="line.1"></a>
-<span class="sourceLineNo">002</span> *<a name="line.2"></a>
-<span class="sourceLineNo">003</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.3"></a>
-<span class="sourceLineNo">004</span> * or more contributor license agreements.  See the NOTICE file<a name="line.4"></a>
-<span class="sourceLineNo">005</span> * distributed with this work for additional information<a name="line.5"></a>
-<span class="sourceLineNo">006</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.6"></a>
-<span class="sourceLineNo">007</span> * to you under the Apache License, Version 2.0 (the<a name="line.7"></a>
-<span class="sourceLineNo">008</span> * "License"); you may not use this file except in compliance<a name="line.8"></a>
-<span class="sourceLineNo">009</span> * with the License.  You may obtain a copy of the License at<a name="line.9"></a>
-<span class="sourceLineNo">010</span> *<a name="line.10"></a>
-<span class="sourceLineNo">011</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.11"></a>
-<span class="sourceLineNo">012</span> *<a name="line.12"></a>
-<span class="sourceLineNo">013</span> * Unless required by applicable law or agreed to in writing, software<a name="line.13"></a>
-<span class="sourceLineNo">014</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.14"></a>
-<span class="sourceLineNo">015</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.15"></a>
-<span class="sourceLineNo">016</span> * See the License for the specific language governing permissions and<a name="line.16"></a>
-<span class="sourceLineNo">017</span> * limitations under the License.<a name="line.17"></a>
-<span class="sourceLineNo">018</span> */<a name="line.18"></a>
-<span class="sourceLineNo">019</span><a name="line.19"></a>
-<span class="sourceLineNo">020</span>/**<a name="line.20"></a>
-<span class="sourceLineNo">021</span> * Tag a test as related to  mapreduce and taking longer than 5 minutes to run on public build<a name="line.21"></a>
-<span class="sourceLineNo">022</span> * infrastructure.<a name="line.22"></a>
-<span class="sourceLineNo">023</span> * @see org.apache.hadoop.hbase.testclassification.ClientTests<a name="line.23"></a>
-<span class="sourceLineNo">024</span> * @see org.apache.hadoop.hbase.testclassification.CoprocessorTests<a name="line.24"></a>
-<span class="sourceLineNo">025</span> * @see org.apache.hadoop.hbase.testclassification.FilterTests<a name="line.25"></a>
-<span class="sourceLineNo">026</span> * @see org.apache.hadoop.hbase.testclassification.FlakeyTests<a name="line.26"></a>
-<span class="sourceLineNo">027</span> * @see org.apache.hadoop.hbase.testclassification.IOTests<a name="line.27"></a>
-<span class="sourceLineNo">028</span> * @see org.apache.hadoop.hbase.testclassification.MapReduceTests<a name="line.28"></a>
-<span class="sourceLineNo">029</span> * @see org.apache.hadoop.hbase.testclassification.MasterTests<a name="line.29"></a>
-<span class="sourceLineNo">030</span> * @see org.apache.hadoop.hbase.testclassification.MiscTests<a name="line.30"></a>
-<span class="sourceLineNo">031</span> * @see org.apache.hadoop.hbase.testclassification.RegionServerTests<a name="line.31"></a>
-<span class="sourceLineNo">032</span> * @see org.apache.hadoop.hbase.testclassification.ReplicationTests<a name="line.32"></a>
-<span class="sourceLineNo">033</span> * @see org.apache.hadoop.hbase.testclassification.RPCTests<a name="line.33"></a>
-<span class="sourceLineNo">034</span> * @see org.apache.hadoop.hbase.testclassification.SecurityTests<a name="line.34"></a>
-<span class="sourceLineNo">035</span> * @see org.apache.hadoop.hbase.testclassification.VerySlowRegionServerTests<a name="line.35"></a>
-<span class="sourceLineNo">036</span> * @see org.apache.hadoop.hbase.testclassification.VerySlowMapReduceTests<a name="line.36"></a>
-<span class="sourceLineNo">037</span> */<a name="line.37"></a>
-<span class="sourceLineNo">038</span>package org.apache.hadoop.hbase.testclassification;<a name="line.38"></a>
-<span class="sourceLineNo">039</span><a name="line.39"></a>
-<span class="sourceLineNo">040</span><a name="line.40"></a>
-<span class="sourceLineNo">041</span>public interface VerySlowMapReduceTests {<a name="line.41"></a>
-<span class="sourceLineNo">042</span>}<a name="line.42"></a>
+<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
+<span class="sourceLineNo">003</span> * or more contributor license agreements.  See the NOTICE file<a name="line.3"></a>
+<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
+<span class="sourceLineNo">005</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.5"></a>
+<span class="sourceLineNo">006</span> * to you under the Apache License, Version 2.0 (the<a name="line.6"></a>
+<span class="sourceLineNo">007</span> * "License"); you may not use this file except in compliance<a name="line.7"></a>
+<span class="sourceLineNo">008</span> * with the License.  You may obtain a copy of the License at<a name="line.8"></a>
+<span class="sourceLineNo">009</span> *<a name="line.9"></a>
+<span class="sourceLineNo">010</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.10"></a>
+<span class="sourceLineNo">011</span> *<a name="line.11"></a>
+<span class="sourceLineNo">012</span> * Unless required by applicable law or agreed to in writing, software<a name="line.12"></a>
+<span class="sourceLineNo">013</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.13"></a>
+<span class="sourceLineNo">014</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.14"></a>
+<span class="sourceLineNo">015</span> * See the License for the specific language governing permissions and<a name="line.15"></a>
+<span class="sourceLineNo">016</span> * limitations under the License.<a name="line.16"></a>
+<span class="sourceLineNo">017</span> */<a name="line.17"></a>
+<span class="sourceLineNo">018</span><a name="line.18"></a>
+<span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.testclassification;<a name="line.19"></a>
+<span class="sourceLineNo">020</span><a name="line.20"></a>
+<span class="sourceLineNo">021</span>/**<a name="line.21"></a>
+<span class="sourceLineNo">022</span> * Tag a test as related to  mapreduce and taking longer than 5 minutes to run on public build<a name="line.22"></a>
+<span class="sourceLineNo">023</span> * infrastructure.<a name="line.23"></a>
+<span class="sourceLineNo">024</span> *<a name="line.24"></a>
+<span class="sourceLineNo">025</span> * @see org.apache.hadoop.hbase.testclassification.ClientTests<a name="line.25"></a>
+<span class="sourceLineNo">026</span> * @see org.apache.hadoop.hbase.testclassification.CoprocessorTests<a name="line.26"></a>
+<span class="sourceLineNo">027</span> * @see org.apache.hadoop.hbase.testclassification.FilterTests<a name="line.27"></a>
+<span class="sourceLineNo">028</span> * @see org.apache.hadoop.hbase.testclassification.FlakeyTests<a name="line.28"></a>
+<span class="sourceLineNo">029</span> * @see org.apache.hadoop.hbase.testclassification.IOTests<a name="line.29"></a>
+<span class="sourceLineNo">030</span> * @see org.apache.hadoop.hbase.testclassification.MapReduceTests<a name="line.30"></a>
+<span class="sourceLineNo">031</span> * @see org.apache.hadoop.hbase.testclassification.MasterTests<a name="line.31"></a>
+<span class="sourceLineNo">032</span> * @see org.apache.hadoop.hbase.testclassification.MiscTests<a name="line.32"></a>
+<span class="sourceLineNo">033</span> * @see org.apache.hadoop.hbase.testclassification.RegionServerTests<a name="line.33"></a>
+<span class="sourceLineNo">034</span> * @see org.apache.hadoop.hbase.testclassification.ReplicationTests<a name="line.34"></a>
+<span class="sourceLineNo">035</span> * @see org.apache.hadoop.hbase.testclassification.RPCTests<a name="line.35"></a>
+<span class="sourceLineNo">036</span> * @see org.apache.hadoop.hbase.testclassification.SecurityTests<a name="line.36"></a>
+<span class="sourceLineNo">037</span> * @see org.apache.hadoop.hbase.testclassification.VerySlowRegionServerTests<a name="line.37"></a>
+<span class="sourceLineNo">038</span> * @see org.apache.hadoop.hbase.testclassification.VerySlowMapReduceTests<a name="line.38"></a>
+<span class="sourceLineNo">039</span> */<a name="line.39"></a>
+<span class="sourceLineNo">040</span>public interface VerySlowMapReduceTests {<a name="line.40"></a>
+<span class="sourceLineNo">041</span>}<a name="line.41"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/VerySlowRegionServerTests.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/VerySlowRegionServerTests.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/VerySlowRegionServerTests.html
index 3dd05d5..c4bd488 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/VerySlowRegionServerTests.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/VerySlowRegionServerTests.html
@@ -7,47 +7,46 @@
 <body>
 <div class="sourceContainer">
 <pre><span class="sourceLineNo">001</span>/*<a name="line.1"></a>
-<span class="sourceLineNo">002</span> *<a name="line.2"></a>
-<span class="sourceLineNo">003</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.3"></a>
-<span class="sourceLineNo">004</span> * or more contributor license agreements.  See the NOTICE file<a name="line.4"></a>
-<span class="sourceLineNo">005</span> * distributed with this work for additional information<a name="line.5"></a>
-<span class="sourceLineNo">006</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.6"></a>
-<span class="sourceLineNo">007</span> * to you under the Apache License, Version 2.0 (the<a name="line.7"></a>
-<span class="sourceLineNo">008</span> * "License"); you may not use this file except in compliance<a name="line.8"></a>
-<span class="sourceLineNo">009</span> * with the License.  You may obtain a copy of the License at<a name="line.9"></a>
-<span class="sourceLineNo">010</span> *<a name="line.10"></a>
-<span class="sourceLineNo">011</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.11"></a>
-<span class="sourceLineNo">012</span> *<a name="line.12"></a>
-<span class="sourceLineNo">013</span> * Unless required by applicable law or agreed to in writing, software<a name="line.13"></a>
-<span class="sourceLineNo">014</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.14"></a>
-<span class="sourceLineNo">015</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.15"></a>
-<span class="sourceLineNo">016</span> * See the License for the specific language governing permissions and<a name="line.16"></a>
-<span class="sourceLineNo">017</span> * limitations under the License.<a name="line.17"></a>
-<span class="sourceLineNo">018</span> */<a name="line.18"></a>
-<span class="sourceLineNo">019</span><a name="line.19"></a>
+<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
+<span class="sourceLineNo">003</span> * or more contributor license agreements.  See the NOTICE file<a name="line.3"></a>
+<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
+<span class="sourceLineNo">005</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.5"></a>
+<span class="sourceLineNo">006</span> * to you under the Apache License, Version 2.0 (the<a name="line.6"></a>
+<span class="sourceLineNo">007</span> * "License"); you may not use this file except in compliance<a name="line.7"></a>
+<span class="sourceLineNo">008</span> * with the License.  You may obtain a copy of the License at<a name="line.8"></a>
+<span class="sourceLineNo">009</span> *<a name="line.9"></a>
+<span class="sourceLineNo">010</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.10"></a>
+<span class="sourceLineNo">011</span> *<a name="line.11"></a>
+<span class="sourceLineNo">012</span> * Unless required by applicable law or agreed to in writing, software<a name="line.12"></a>
+<span class="sourceLineNo">013</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.13"></a>
+<span class="sourceLineNo">014</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.14"></a>
+<span class="sourceLineNo">015</span> * See the License for the specific language governing permissions and<a name="line.15"></a>
+<span class="sourceLineNo">016</span> * limitations under the License.<a name="line.16"></a>
+<span class="sourceLineNo">017</span> */<a name="line.17"></a>
+<span class="sourceLineNo">018</span><a name="line.18"></a>
+<span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.testclassification;<a name="line.19"></a>
 <span class="sourceLineNo">020</span><a name="line.20"></a>
 <span class="sourceLineNo">021</span>/**<a name="line.21"></a>
 <span class="sourceLineNo">022</span> * Tag a test as region tests which takes longer than 5 minutes to run on public build<a name="line.22"></a>
 <span class="sourceLineNo">023</span> * infrastructure.<a name="line.23"></a>
-<span class="sourceLineNo">024</span> * @see org.apache.hadoop.hbase.testclassification.ClientTests<a name="line.24"></a>
-<span class="sourceLineNo">025</span> * @see org.apache.hadoop.hbase.testclassification.CoprocessorTests<a name="line.25"></a>
-<span class="sourceLineNo">026</span> * @see org.apache.hadoop.hbase.testclassification.FilterTests<a name="line.26"></a>
-<span class="sourceLineNo">027</span> * @see org.apache.hadoop.hbase.testclassification.FlakeyTests<a name="line.27"></a>
-<span class="sourceLineNo">028</span> * @see org.apache.hadoop.hbase.testclassification.IOTests<a name="line.28"></a>
-<span class="sourceLineNo">029</span> * @see org.apache.hadoop.hbase.testclassification.MapReduceTests<a name="line.29"></a>
-<span class="sourceLineNo">030</span> * @see org.apache.hadoop.hbase.testclassification.MasterTests<a name="line.30"></a>
-<span class="sourceLineNo">031</span> * @see org.apache.hadoop.hbase.testclassification.MiscTests<a name="line.31"></a>
-<span class="sourceLineNo">032</span> * @see org.apache.hadoop.hbase.testclassification.RegionServerTests<a name="line.32"></a>
-<span class="sourceLineNo">033</span> * @see org.apache.hadoop.hbase.testclassification.ReplicationTests<a name="line.33"></a>
-<span class="sourceLineNo">034</span> * @see org.apache.hadoop.hbase.testclassification.RPCTests<a name="line.34"></a>
-<span class="sourceLineNo">035</span> * @see org.apache.hadoop.hbase.testclassification.SecurityTests<a name="line.35"></a>
-<span class="sourceLineNo">036</span> * @see org.apache.hadoop.hbase.testclassification.VerySlowRegionServerTests<a name="line.36"></a>
-<span class="sourceLineNo">037</span> * @see org.apache.hadoop.hbase.testclassification.VerySlowMapReduceTests<a name="line.37"></a>
-<span class="sourceLineNo">038</span> */<a name="line.38"></a>
-<span class="sourceLineNo">039</span>package org.apache.hadoop.hbase.testclassification;<a name="line.39"></a>
-<span class="sourceLineNo">040</span><a name="line.40"></a>
-<span class="sourceLineNo">041</span>public interface VerySlowRegionServerTests {<a name="line.41"></a>
-<span class="sourceLineNo">042</span>}<a name="line.42"></a>
+<span class="sourceLineNo">024</span> *<a name="line.24"></a>
+<span class="sourceLineNo">025</span> * @see org.apache.hadoop.hbase.testclassification.ClientTests<a name="line.25"></a>
+<span class="sourceLineNo">026</span> * @see org.apache.hadoop.hbase.testclassification.CoprocessorTests<a name="line.26"></a>
+<span class="sourceLineNo">027</span> * @see org.apache.hadoop.hbase.testclassification.FilterTests<a name="line.27"></a>
+<span class="sourceLineNo">028</span> * @see org.apache.hadoop.hbase.testclassification.FlakeyTests<a name="line.28"></a>
+<span class="sourceLineNo">029</span> * @see org.apache.hadoop.hbase.testclassification.IOTests<a name="line.29"></a>
+<span class="sourceLineNo">030</span> * @see org.apache.hadoop.hbase.testclassification.MapReduceTests<a name="line.30"></a>
+<span class="sourceLineNo">031</span> * @see org.apache.hadoop.hbase.testclassification.MasterTests<a name="line.31"></a>
+<span class="sourceLineNo">032</span> * @see org.apache.hadoop.hbase.testclassification.MiscTests<a name="line.32"></a>
+<span class="sourceLineNo">033</span> * @see org.apache.hadoop.hbase.testclassification.RegionServerTests<a name="line.33"></a>
+<span class="sourceLineNo">034</span> * @see org.apache.hadoop.hbase.testclassification.ReplicationTests<a name="line.34"></a>
+<span class="sourceLineNo">035</span> * @see org.apache.hadoop.hbase.testclassification.RPCTests<a name="line.35"></a>
+<span class="sourceLineNo">036</span> * @see org.apache.hadoop.hbase.testclassification.SecurityTests<a name="line.36"></a>
+<span class="sourceLineNo">037</span> * @see org.apache.hadoop.hbase.testclassification.VerySlowRegionServerTests<a name="line.37"></a>
+<span class="sourceLineNo">038</span> * @see org.apache.hadoop.hbase.testclassification.VerySlowMapReduceTests<a name="line.38"></a>
+<span class="sourceLineNo">039</span> */<a name="line.39"></a>
+<span class="sourceLineNo">040</span>public interface VerySlowRegionServerTests {<a name="line.40"></a>
+<span class="sourceLineNo">041</span>}<a name="line.41"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/ZKTests.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/ZKTests.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/ZKTests.html
index 8a1aaf4..28ec1a8 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/ZKTests.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/ZKTests.html
@@ -6,7 +6,7 @@
 </head>
 <body>
 <div class="sourceContainer">
-<pre><span class="sourceLineNo">001</span>/**<a name="line.1"></a>
+<pre><span class="sourceLineNo">001</span>/*<a name="line.1"></a>
 <span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
 <span class="sourceLineNo">003</span> * or more contributor license agreements.  See the NOTICE file<a name="line.3"></a>
 <span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
@@ -23,14 +23,15 @@
 <span class="sourceLineNo">015</span> * See the License for the specific language governing permissions and<a name="line.15"></a>
 <span class="sourceLineNo">016</span> * limitations under the License.<a name="line.16"></a>
 <span class="sourceLineNo">017</span> */<a name="line.17"></a>
-<span class="sourceLineNo">018</span>package org.apache.hadoop.hbase.testclassification;<a name="line.18"></a>
-<span class="sourceLineNo">019</span><a name="line.19"></a>
-<span class="sourceLineNo">020</span>/**<a name="line.20"></a>
-<span class="sourceLineNo">021</span> * For tests which test the general logic of zookeeper related tools, such as<a name="line.21"></a>
-<span class="sourceLineNo">022</span> * {@code RecoverableZooKeeper}, not for tests which depend on zookeeper.<a name="line.22"></a>
-<span class="sourceLineNo">023</span> */<a name="line.23"></a>
-<span class="sourceLineNo">024</span>public interface ZKTests {<a name="line.24"></a>
-<span class="sourceLineNo">025</span>}<a name="line.25"></a>
+<span class="sourceLineNo">018</span><a name="line.18"></a>
+<span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.testclassification;<a name="line.19"></a>
+<span class="sourceLineNo">020</span><a name="line.20"></a>
+<span class="sourceLineNo">021</span>/**<a name="line.21"></a>
+<span class="sourceLineNo">022</span> * For tests which test the general logic of zookeeper related tools, such as<a name="line.22"></a>
+<span class="sourceLineNo">023</span> * {@code RecoverableZooKeeper}, not for tests which depend on ZooKeeper.<a name="line.23"></a>
+<span class="sourceLineNo">024</span> */<a name="line.24"></a>
+<span class="sourceLineNo">025</span>public interface ZKTests {<a name="line.25"></a>
+<span class="sourceLineNo">026</span>}<a name="line.26"></a>
 
 
 


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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html b/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html
index 3d184a4..d7e78d9 100644
--- a/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html
+++ b/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html
@@ -540,7 +540,7 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <ul class="blockList">
 <li class="blockList">
 <h4>conf</h4>
-<pre>private final&nbsp;org.apache.hadoop.conf.Configuration <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.90">conf</a></pre>
+<pre>private final&nbsp;org.apache.hadoop.conf.Configuration <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.88">conf</a></pre>
 </li>
 </ul>
 <a name="NAME_PATTERN">
@@ -549,7 +549,7 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <ul class="blockListLast">
 <li class="blockList">
 <h4>NAME_PATTERN</h4>
-<pre>private static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html?is-external=true" title="class or interface in java.util.regex">Pattern</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.93">NAME_PATTERN</a></pre>
+<pre>private static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html?is-external=true" title="class or interface in java.util.regex">Pattern</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.91">NAME_PATTERN</a></pre>
 </li>
 </ul>
 </li>
@@ -566,7 +566,7 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <ul class="blockList">
 <li class="blockList">
 <h4>ZKWatcher</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.102">ZKWatcher</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.100">ZKWatcher</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                  <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;identifier,
                  <a href="../../../../../org/apache/hadoop/hbase/Abortable.html" title="interface in org.apache.hadoop.hbase">Abortable</a>&nbsp;abortable)
           throws <a href="../../../../../org/apache/hadoop/hbase/ZooKeeperConnectionException.html" title="class in org.apache.hadoop.hbase">ZooKeeperConnectionException</a>,
@@ -575,9 +575,9 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>identifier</code> - string that is passed to RecoverableZookeeper to be used as
- identifier for this instance. Use null for default.</dd>
+                   identifier for this instance. Use null for default.</dd>
 <dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code> - if the connection to ZooKeeper fails</dd>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/ZooKeeperConnectionException.html" title="class in org.apache.hadoop.hbase">ZooKeeperConnectionException</a></code></dd>
 </dl>
 </li>
@@ -588,7 +588,7 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ZKWatcher</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.118">ZKWatcher</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.116">ZKWatcher</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                  <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;identifier,
                  <a href="../../../../../org/apache/hadoop/hbase/Abortable.html" title="interface in org.apache.hadoop.hbase">Abortable</a>&nbsp;abortable,
                  boolean&nbsp;canCreateBaseZNode)
@@ -597,14 +597,14 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <div class="block">Instantiate a ZooKeeper connection and watcher.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>conf</code> - </dd>
+<dd><code>conf</code> - the configuration to use</dd>
 <dd><code>identifier</code> - string that is passed to RecoverableZookeeper to be used as identifier for
           this instance. Use null for default.</dd>
 <dd><code>abortable</code> - Can be null if there is on error there is no host to abort: e.g. client
           context.</dd>
-<dd><code>canCreateBaseZNode</code> - </dd>
+<dd><code>canCreateBaseZNode</code> - true if a base ZNode can be created</dd>
 <dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code> - if the connection to ZooKeeper fails</dd>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/ZooKeeperConnectionException.html" title="class in org.apache.hadoop.hbase">ZooKeeperConnectionException</a></code></dd>
 </dl>
 </li>
@@ -623,7 +623,7 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <ul class="blockList">
 <li class="blockList">
 <h4>createBaseZNodes</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.147">createBaseZNodes</a>()
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.145">createBaseZNodes</a>()
                        throws <a href="../../../../../org/apache/hadoop/hbase/ZooKeeperConnectionException.html" title="class in org.apache.hadoop.hbase">ZooKeeperConnectionException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -637,7 +637,7 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <ul class="blockList">
 <li class="blockList">
 <h4>isClientReadable</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.166">isClientReadable</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;node)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.164">isClientReadable</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;node)</pre>
 <div class="block">Returns whether the znode is supposed to be readable by the client
  and DOES NOT contain sensitive information (world readable).</div>
 </li>
@@ -648,7 +648,7 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <ul class="blockList">
 <li class="blockList">
 <h4>checkAndSetZNodeAcls</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.187">checkAndSetZNodeAcls</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.185">checkAndSetZNodeAcls</a>()</pre>
 <div class="block">On master start, we check the znode ACLs under the root directory and set the ACLs properly
  if needed. If the cluster goes from an unsecure setup to a secure setup, this step is needed
  so that the existing znodes created with open permissions are now changed with restrictive
@@ -661,14 +661,14 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <ul class="blockList">
 <li class="blockList">
 <h4>setZnodeAclsRecursive</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.216">setZnodeAclsRecursive</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;znode)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.214">setZnodeAclsRecursive</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;znode)
                             throws org.apache.zookeeper.KeeperException,
                                    <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <div class="block">Set the znode perms recursively. This will do post-order recursion, so that baseZnode ACLs
  will be set last in case the master fails in between.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>znode</code> - </dd>
+<dd><code>znode</code> - the ZNode to set the permissions for</dd>
 <dt><span class="throwsLabel">Throws:</span></dt>
 <dd><code>org.apache.zookeeper.KeeperException</code></dd>
 <dd><code><a href="http://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>
@@ -681,7 +681,7 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <ul class="blockList">
 <li class="blockList">
 <h4>isBaseZnodeAclSetup</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.233">isBaseZnodeAclSetup</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.zookeeper.data.ACL&gt;&nbsp;acls)
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.231">isBaseZnodeAclSetup</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.zookeeper.data.ACL&gt;&nbsp;acls)
                              throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Checks whether the ACLs returned from the base znode (/hbase) is set for secure setup.</div>
 <dl>
@@ -690,7 +690,7 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>whether ACLs are set for the base znode</dd>
 <dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code> - if getting the current user fails</dd>
 </dl>
 </li>
 </ul>
@@ -700,7 +700,7 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <ul class="blockList">
 <li class="blockList">
 <h4>checkACLForSuperUsers</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.309">checkACLForSuperUsers</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;superUsers,
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.307">checkACLForSuperUsers</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;superUsers,
                                       <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.zookeeper.data.ACL&gt;&nbsp;acls)</pre>
 </li>
 </ul>
@@ -710,7 +710,7 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <ul class="blockList">
 <li class="blockList">
 <h4>isSuperUserId</h4>
-<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.339">isSuperUserId</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;superUsers,
+<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.337">isSuperUserId</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;superUsers,
                                     org.apache.zookeeper.data.Id&nbsp;id)</pre>
 </li>
 </ul>
@@ -720,7 +720,7 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <ul class="blockList">
 <li class="blockList">
 <h4>toString</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.350">toString</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.348">toString</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a></code>&nbsp;in class&nbsp;<code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>
@@ -733,14 +733,14 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <ul class="blockList">
 <li class="blockList">
 <h4>prefix</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.360">prefix</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;str)</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.358">prefix</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;str)</pre>
 <div class="block">Adds this instance's identifier as a prefix to the passed <code>str</code></div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>str</code> - String to amend.</dd>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>A new string with this instance's identifier as prefix: e.g.
- if passed 'hello world', the returned string could be</dd>
+         if passed 'hello world', the returned string could be</dd>
 </dl>
 </li>
 </ul>
@@ -750,14 +750,14 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <ul class="blockList">
 <li class="blockList">
 <h4>getMetaReplicaNodes</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.369">getMetaReplicaNodes</a>()
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.367">getMetaReplicaNodes</a>()
                                  throws org.apache.zookeeper.KeeperException</pre>
 <div class="block">Get the znodes corresponding to the meta replicas from ZK</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>list of znodes</dd>
 <dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code>org.apache.zookeeper.KeeperException</code></dd>
+<dd><code>org.apache.zookeeper.KeeperException</code> - if a ZooKeeper operation fails</dd>
 </dl>
 </li>
 </ul>
@@ -771,7 +771,7 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <div class="block">Register the specified listener to receive ZooKeeper events.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>listener</code> - </dd>
+<dd><code>listener</code> - the listener to register</dd>
 </dl>
 </li>
 </ul>
@@ -786,7 +786,7 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
  the first in the list of current listeners.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>listener</code> - </dd>
+<dd><code>listener</code> - the listener to register</dd>
 </dl>
 </li>
 </ul>
@@ -923,7 +923,7 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
  <p></div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>event</code> - </dd>
+<dd><code>event</code> - the connection-related event</dd>
 </dl>
 </li>
 </ul>
@@ -967,9 +967,9 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
  <p></div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>ke</code> - </dd>
+<dd><code>ke</code> - the exception to rethrow</dd>
 <dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code>org.apache.zookeeper.KeeperException</code></dd>
+<dd><code>org.apache.zookeeper.KeeperException</code> - if a ZooKeeper operation fails</dd>
 </dl>
 </li>
 </ul>
@@ -979,7 +979,7 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <ul class="blockList">
 <li class="blockList">
 <h4>interruptedException</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.588">interruptedException</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a>&nbsp;ie)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.587">interruptedException</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a>&nbsp;ie)
                           throws org.apache.zookeeper.KeeperException</pre>
 <div class="block">Handles InterruptedExceptions in client calls.</div>
 <dl>
@@ -996,7 +996,7 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <ul class="blockList">
 <li class="blockList">
 <h4>interruptedExceptionNoThrow</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.599">interruptedExceptionNoThrow</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a>&nbsp;ie,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.598">interruptedExceptionNoThrow</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a>&nbsp;ie,
                                         boolean&nbsp;throwLater)</pre>
 <div class="block">Log the InterruptedException and interrupt current thread</div>
 <dl>
@@ -1012,7 +1012,7 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <ul class="blockList">
 <li class="blockList">
 <h4>close</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.612">close</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.611">close</a>()</pre>
 <div class="block">Close the connection to ZooKeeper.</div>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -1028,7 +1028,7 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <ul class="blockList">
 <li class="blockList">
 <h4>getConfiguration</h4>
-<pre>public&nbsp;org.apache.hadoop.conf.Configuration&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.620">getConfiguration</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.conf.Configuration&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.619">getConfiguration</a>()</pre>
 </li>
 </ul>
 <a name="abort-java.lang.String-java.lang.Throwable-">
@@ -1037,7 +1037,7 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <ul class="blockList">
 <li class="blockList">
 <h4>abort</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.625">abort</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;why,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.624">abort</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;why,
                   <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;e)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/Abortable.html#abort-java.lang.String-java.lang.Throwable-">Abortable</a></code></span></div>
 <div class="block">Abort the server or client.</div>
@@ -1056,7 +1056,7 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <ul class="blockListLast">
 <li class="blockList">
 <h4>isAborted</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.631">isAborted</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.633">isAborted</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/Abortable.html#isAborted--">Abortable</a></code></span></div>
 <div class="block">Check if the server or client was aborted.</div>
 <dl>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/devapidocs/org/apache/hadoop/hbase/zookeeper/class-use/ZKWatcher.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/zookeeper/class-use/ZKWatcher.html b/devapidocs/org/apache/hadoop/hbase/zookeeper/class-use/ZKWatcher.html
index 644a981..6a8bff6 100644
--- a/devapidocs/org/apache/hadoop/hbase/zookeeper/class-use/ZKWatcher.html
+++ b/devapidocs/org/apache/hadoop/hbase/zookeeper/class-use/ZKWatcher.html
@@ -1388,12 +1388,16 @@
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&gt;</code></td>
-<td class="colLast"><span class="typeNameLabel">MetaTableLocator.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html#getMetaRegions-org.apache.hadoop.hbase.zookeeper.ZKWatcher-">getMetaRegions</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw)</code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">MetaTableLocator.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html#getMetaRegions-org.apache.hadoop.hbase.zookeeper.ZKWatcher-">getMetaRegions</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw)</code>
+<div class="block">Gets the meta regions for the given path with the default replica ID.</div>
+</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&gt;</code></td>
 <td class="colLast"><span class="typeNameLabel">MetaTableLocator.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html#getMetaRegions-org.apache.hadoop.hbase.zookeeper.ZKWatcher-int-">getMetaRegions</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
-              int&nbsp;replicaId)</code>&nbsp;</td>
+              int&nbsp;replicaId)</code>
+<div class="block">Gets the meta regions for the given path and replica ID.</div>
+</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/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;&gt;</code></td>
@@ -1402,7 +1406,9 @@
 <tr class="rowColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/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;&gt;</code></td>
 <td class="colLast"><span class="typeNameLabel">MetaTableLocator.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html#getMetaRegionsAndLocations-org.apache.hadoop.hbase.zookeeper.ZKWatcher-int-">getMetaRegionsAndLocations</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
-                          int&nbsp;replicaId)</code>&nbsp;</td>
+                          int&nbsp;replicaId)</code>
+<div class="block">Gets the meta regions and their locations for the given path and replica ID.</div>
+</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../../org/apache/hadoop/hbase/master/RegionState.html" title="class in org.apache.hadoop.hbase.master">RegionState</a></code></td>
@@ -1423,8 +1429,8 @@
                        <a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                        long&nbsp;timeout,
                        int&nbsp;replicaId)</code>
-<div class="block">Gets a connection to the server hosting meta, as reported by ZooKeeper,
- waiting up to the specified timeout for availability.</div>
+<div class="block">Gets a connection to the server hosting meta, as reported by ZooKeeper, waiting up to the
+ specified timeout for availability.</div>
 </td>
 </tr>
 <tr class="rowColor">
@@ -1466,7 +1472,9 @@
 <tr class="rowColor">
 <td class="colFirst"><code>static boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">ZKSplitLog.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKSplitLog.html#isRescanNode-org.apache.hadoop.hbase.zookeeper.ZKWatcher-java.lang.String-">isRescanNode</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
-            <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path)</code>&nbsp;</td>
+            <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path)</code>
+<div class="block">Checks if the given path represents a rescan node.</div>
+</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;</code></td>
@@ -1603,8 +1611,7 @@
                <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
                int&nbsp;replicaId,
                <a href="../../../../../../org/apache/hadoop/hbase/master/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master">RegionState.State</a>&nbsp;state)</code>
-<div class="block">Sets the location of <code>hbase:meta</code> in ZooKeeper to the
- specified server address.</div>
+<div class="block">Sets the location of <code>hbase:meta</code> in ZooKeeper to the specified server address.</div>
 </td>
 </tr>
 <tr class="rowColor">
@@ -1669,8 +1676,8 @@
 <td class="colLast"><span class="typeNameLabel">MetaTableLocator.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html#waitMetaRegionLocation-org.apache.hadoop.hbase.zookeeper.ZKWatcher-int-long-">waitMetaRegionLocation</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                       int&nbsp;replicaId,
                       long&nbsp;timeout)</code>
-<div class="block">Gets the meta region location, if available, and waits for up to the
- specified timeout if not immediately available.</div>
+<div class="block">Gets the meta region location, if available, and waits for up to the specified timeout if not
+ immediately available.</div>
 </td>
 </tr>
 <tr class="rowColor">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/devapidocs/org/apache/hadoop/hbase/zookeeper/package-summary.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/zookeeper/package-summary.html b/devapidocs/org/apache/hadoop/hbase/zookeeper/package-summary.html
index ccec0f6..6845a5d 100644
--- a/devapidocs/org/apache/hadoop/hbase/zookeeper/package-summary.html
+++ b/devapidocs/org/apache/hadoop/hbase/zookeeper/package-summary.html
@@ -286,7 +286,8 @@
 <tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKSplitLog.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKSplitLog</a></td>
 <td class="colLast">
-<div class="block">Common methods and attributes used by SplitLogManager and SplitLogWorker running distributed splitting of WAL logs.</div>
+<div class="block">Common methods and attributes used by SplitLogManager and SplitLogWorker running distributed
+ splitting of WAL logs.</div>
 </td>
 </tr>
 <tr class="rowColor">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/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 6643967..7b335ff 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 = "979767824d37df0e05002fa76402ff2b9e534d50";<a name="line.11"></a>
+<span class="sourceLineNo">011</span>  public static final String revision = "26b69dc45bf3c953905d5ed279e3f691ea802157";<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 = "Sat Dec 16 14:41:51 UTC 2017";<a name="line.13"></a>
+<span class="sourceLineNo">013</span>  public static final String date = "Sun Dec 17 14:41:52 UTC 2017";<a name="line.13"></a>
 <span class="sourceLineNo">014</span>  public static final String url = "git://asf920.gq1.ygridcore.net/home/jenkins/jenkins-slave/workspace/hbase_generate_website/hbase";<a name="line.14"></a>
-<span class="sourceLineNo">015</span>  public static final String srcChecksum = "134238446ca4bc95900183b2706bfdbc";<a name="line.15"></a>
+<span class="sourceLineNo">015</span>  public static final String srcChecksum = "17b2bd885a9f8f4e728cc4b3cea18074";<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/48bd3915/devapidocs/src-html/org/apache/hadoop/hbase/master/cleaner/LogCleaner.CleanerContext.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/cleaner/LogCleaner.CleanerContext.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/cleaner/LogCleaner.CleanerContext.html
index 940be86..3ac33cc 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/cleaner/LogCleaner.CleanerContext.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/cleaner/LogCleaner.CleanerContext.html
@@ -171,65 +171,67 @@
 <span class="sourceLineNo">163</span>        LOG.warn("Failed to clean oldwals with exception: " + e);<a name="line.163"></a>
 <span class="sourceLineNo">164</span>        succeed = false;<a name="line.164"></a>
 <span class="sourceLineNo">165</span>      } finally {<a name="line.165"></a>
-<span class="sourceLineNo">166</span>        context.setResult(succeed);<a name="line.166"></a>
-<span class="sourceLineNo">167</span>        if (interrupted) {<a name="line.167"></a>
-<span class="sourceLineNo">168</span>          // Restore interrupt status<a name="line.168"></a>
-<span class="sourceLineNo">169</span>          Thread.currentThread().interrupt();<a name="line.169"></a>
-<span class="sourceLineNo">170</span>          break;<a name="line.170"></a>
-<span class="sourceLineNo">171</span>        }<a name="line.171"></a>
-<span class="sourceLineNo">172</span>      }<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    }<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    if (LOG.isDebugEnabled()) {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      LOG.debug("Exiting cleaner.");<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    }<a name="line.176"></a>
-<span class="sourceLineNo">177</span>  }<a name="line.177"></a>
-<span class="sourceLineNo">178</span><a name="line.178"></a>
-<span class="sourceLineNo">179</span>  private static final class CleanerContext {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    // At most waits 60 seconds<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    static final long MAX_WAIT = 60 * 1000;<a name="line.181"></a>
-<span class="sourceLineNo">182</span><a name="line.182"></a>
-<span class="sourceLineNo">183</span>    final FileStatus target;<a name="line.183"></a>
-<span class="sourceLineNo">184</span>    volatile boolean result;<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    volatile boolean setFromCleaner = false;<a name="line.185"></a>
-<span class="sourceLineNo">186</span><a name="line.186"></a>
-<span class="sourceLineNo">187</span>    static CleanerContext createCleanerContext(FileStatus status) {<a name="line.187"></a>
-<span class="sourceLineNo">188</span>      return status != null ? new CleanerContext(status) : null;<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>    private CleanerContext(FileStatus status) {<a name="line.191"></a>
-<span class="sourceLineNo">192</span>      this.target = status;<a name="line.192"></a>
-<span class="sourceLineNo">193</span>      this.result = false;<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>    synchronized void setResult(boolean res) {<a name="line.196"></a>
-<span class="sourceLineNo">197</span>      this.result = res;<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      this.setFromCleaner = true;<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      notify();<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>    synchronized boolean getResult(long waitIfNotFinished) {<a name="line.202"></a>
-<span class="sourceLineNo">203</span>      long totalTime = 0;<a name="line.203"></a>
-<span class="sourceLineNo">204</span>      try {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>        while (!setFromCleaner) {<a name="line.205"></a>
-<span class="sourceLineNo">206</span>          wait(waitIfNotFinished);<a name="line.206"></a>
-<span class="sourceLineNo">207</span>          totalTime += waitIfNotFinished;<a name="line.207"></a>
-<span class="sourceLineNo">208</span>          if (totalTime &gt;= MAX_WAIT) {<a name="line.208"></a>
-<span class="sourceLineNo">209</span>            LOG.warn("Spend too much time to delete oldwals " + target);<a name="line.209"></a>
-<span class="sourceLineNo">210</span>            return result;<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>      } catch (InterruptedException e) {<a name="line.213"></a>
-<span class="sourceLineNo">214</span>        LOG.warn("Interrupted while waiting deletion of " + target);<a name="line.214"></a>
-<span class="sourceLineNo">215</span>        return result;<a name="line.215"></a>
-<span class="sourceLineNo">216</span>      }<a name="line.216"></a>
-<span class="sourceLineNo">217</span>      return result;<a name="line.217"></a>
-<span class="sourceLineNo">218</span>    }<a name="line.218"></a>
-<span class="sourceLineNo">219</span><a name="line.219"></a>
-<span class="sourceLineNo">220</span>    FileStatus getTargetToClean() {<a name="line.220"></a>
-<span class="sourceLineNo">221</span>      return target;<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    }<a name="line.222"></a>
-<span class="sourceLineNo">223</span>  }<a name="line.223"></a>
-<span class="sourceLineNo">224</span>}<a name="line.224"></a>
+<span class="sourceLineNo">166</span>        if (context != null) {<a name="line.166"></a>
+<span class="sourceLineNo">167</span>          context.setResult(succeed);<a name="line.167"></a>
+<span class="sourceLineNo">168</span>        }<a name="line.168"></a>
+<span class="sourceLineNo">169</span>        if (interrupted) {<a name="line.169"></a>
+<span class="sourceLineNo">170</span>          // Restore interrupt status<a name="line.170"></a>
+<span class="sourceLineNo">171</span>          Thread.currentThread().interrupt();<a name="line.171"></a>
+<span class="sourceLineNo">172</span>          break;<a name="line.172"></a>
+<span class="sourceLineNo">173</span>        }<a name="line.173"></a>
+<span class="sourceLineNo">174</span>      }<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    }<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    if (LOG.isDebugEnabled()) {<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      LOG.debug("Exiting cleaner.");<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><a name="line.180"></a>
+<span class="sourceLineNo">181</span>  private static final class CleanerContext {<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    // At most waits 60 seconds<a name="line.182"></a>
+<span class="sourceLineNo">183</span>    static final long MAX_WAIT = 60 * 1000;<a name="line.183"></a>
+<span class="sourceLineNo">184</span><a name="line.184"></a>
+<span class="sourceLineNo">185</span>    final FileStatus target;<a name="line.185"></a>
+<span class="sourceLineNo">186</span>    volatile boolean result;<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    volatile boolean setFromCleaner = false;<a name="line.187"></a>
+<span class="sourceLineNo">188</span><a name="line.188"></a>
+<span class="sourceLineNo">189</span>    static CleanerContext createCleanerContext(FileStatus status) {<a name="line.189"></a>
+<span class="sourceLineNo">190</span>      return status != null ? new CleanerContext(status) : null;<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    }<a name="line.191"></a>
+<span class="sourceLineNo">192</span><a name="line.192"></a>
+<span class="sourceLineNo">193</span>    private CleanerContext(FileStatus status) {<a name="line.193"></a>
+<span class="sourceLineNo">194</span>      this.target = status;<a name="line.194"></a>
+<span class="sourceLineNo">195</span>      this.result = false;<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    }<a name="line.196"></a>
+<span class="sourceLineNo">197</span><a name="line.197"></a>
+<span class="sourceLineNo">198</span>    synchronized void setResult(boolean res) {<a name="line.198"></a>
+<span class="sourceLineNo">199</span>      this.result = res;<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      this.setFromCleaner = true;<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      notify();<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>    synchronized boolean getResult(long waitIfNotFinished) {<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      long totalTime = 0;<a name="line.205"></a>
+<span class="sourceLineNo">206</span>      try {<a name="line.206"></a>
+<span class="sourceLineNo">207</span>        while (!setFromCleaner) {<a name="line.207"></a>
+<span class="sourceLineNo">208</span>          wait(waitIfNotFinished);<a name="line.208"></a>
+<span class="sourceLineNo">209</span>          totalTime += waitIfNotFinished;<a name="line.209"></a>
+<span class="sourceLineNo">210</span>          if (totalTime &gt;= MAX_WAIT) {<a name="line.210"></a>
+<span class="sourceLineNo">211</span>            LOG.warn("Spend too much time to delete oldwals " + target);<a name="line.211"></a>
+<span class="sourceLineNo">212</span>            return result;<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>      } catch (InterruptedException e) {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>        LOG.warn("Interrupted while waiting deletion of " + target);<a name="line.216"></a>
+<span class="sourceLineNo">217</span>        return result;<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      }<a name="line.218"></a>
+<span class="sourceLineNo">219</span>      return result;<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    }<a name="line.220"></a>
+<span class="sourceLineNo">221</span><a name="line.221"></a>
+<span class="sourceLineNo">222</span>    FileStatus getTargetToClean() {<a name="line.222"></a>
+<span class="sourceLineNo">223</span>      return target;<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    }<a name="line.224"></a>
+<span class="sourceLineNo">225</span>  }<a name="line.225"></a>
+<span class="sourceLineNo">226</span>}<a name="line.226"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/devapidocs/src-html/org/apache/hadoop/hbase/master/cleaner/LogCleaner.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/cleaner/LogCleaner.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/cleaner/LogCleaner.html
index 940be86..3ac33cc 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/cleaner/LogCleaner.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/cleaner/LogCleaner.html
@@ -171,65 +171,67 @@
 <span class="sourceLineNo">163</span>        LOG.warn("Failed to clean oldwals with exception: " + e);<a name="line.163"></a>
 <span class="sourceLineNo">164</span>        succeed = false;<a name="line.164"></a>
 <span class="sourceLineNo">165</span>      } finally {<a name="line.165"></a>
-<span class="sourceLineNo">166</span>        context.setResult(succeed);<a name="line.166"></a>
-<span class="sourceLineNo">167</span>        if (interrupted) {<a name="line.167"></a>
-<span class="sourceLineNo">168</span>          // Restore interrupt status<a name="line.168"></a>
-<span class="sourceLineNo">169</span>          Thread.currentThread().interrupt();<a name="line.169"></a>
-<span class="sourceLineNo">170</span>          break;<a name="line.170"></a>
-<span class="sourceLineNo">171</span>        }<a name="line.171"></a>
-<span class="sourceLineNo">172</span>      }<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    }<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    if (LOG.isDebugEnabled()) {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      LOG.debug("Exiting cleaner.");<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    }<a name="line.176"></a>
-<span class="sourceLineNo">177</span>  }<a name="line.177"></a>
-<span class="sourceLineNo">178</span><a name="line.178"></a>
-<span class="sourceLineNo">179</span>  private static final class CleanerContext {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    // At most waits 60 seconds<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    static final long MAX_WAIT = 60 * 1000;<a name="line.181"></a>
-<span class="sourceLineNo">182</span><a name="line.182"></a>
-<span class="sourceLineNo">183</span>    final FileStatus target;<a name="line.183"></a>
-<span class="sourceLineNo">184</span>    volatile boolean result;<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    volatile boolean setFromCleaner = false;<a name="line.185"></a>
-<span class="sourceLineNo">186</span><a name="line.186"></a>
-<span class="sourceLineNo">187</span>    static CleanerContext createCleanerContext(FileStatus status) {<a name="line.187"></a>
-<span class="sourceLineNo">188</span>      return status != null ? new CleanerContext(status) : null;<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>    private CleanerContext(FileStatus status) {<a name="line.191"></a>
-<span class="sourceLineNo">192</span>      this.target = status;<a name="line.192"></a>
-<span class="sourceLineNo">193</span>      this.result = false;<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>    synchronized void setResult(boolean res) {<a name="line.196"></a>
-<span class="sourceLineNo">197</span>      this.result = res;<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      this.setFromCleaner = true;<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      notify();<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>    synchronized boolean getResult(long waitIfNotFinished) {<a name="line.202"></a>
-<span class="sourceLineNo">203</span>      long totalTime = 0;<a name="line.203"></a>
-<span class="sourceLineNo">204</span>      try {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>        while (!setFromCleaner) {<a name="line.205"></a>
-<span class="sourceLineNo">206</span>          wait(waitIfNotFinished);<a name="line.206"></a>
-<span class="sourceLineNo">207</span>          totalTime += waitIfNotFinished;<a name="line.207"></a>
-<span class="sourceLineNo">208</span>          if (totalTime &gt;= MAX_WAIT) {<a name="line.208"></a>
-<span class="sourceLineNo">209</span>            LOG.warn("Spend too much time to delete oldwals " + target);<a name="line.209"></a>
-<span class="sourceLineNo">210</span>            return result;<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>      } catch (InterruptedException e) {<a name="line.213"></a>
-<span class="sourceLineNo">214</span>        LOG.warn("Interrupted while waiting deletion of " + target);<a name="line.214"></a>
-<span class="sourceLineNo">215</span>        return result;<a name="line.215"></a>
-<span class="sourceLineNo">216</span>      }<a name="line.216"></a>
-<span class="sourceLineNo">217</span>      return result;<a name="line.217"></a>
-<span class="sourceLineNo">218</span>    }<a name="line.218"></a>
-<span class="sourceLineNo">219</span><a name="line.219"></a>
-<span class="sourceLineNo">220</span>    FileStatus getTargetToClean() {<a name="line.220"></a>
-<span class="sourceLineNo">221</span>      return target;<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    }<a name="line.222"></a>
-<span class="sourceLineNo">223</span>  }<a name="line.223"></a>
-<span class="sourceLineNo">224</span>}<a name="line.224"></a>
+<span class="sourceLineNo">166</span>        if (context != null) {<a name="line.166"></a>
+<span class="sourceLineNo">167</span>          context.setResult(succeed);<a name="line.167"></a>
+<span class="sourceLineNo">168</span>        }<a name="line.168"></a>
+<span class="sourceLineNo">169</span>        if (interrupted) {<a name="line.169"></a>
+<span class="sourceLineNo">170</span>          // Restore interrupt status<a name="line.170"></a>
+<span class="sourceLineNo">171</span>          Thread.currentThread().interrupt();<a name="line.171"></a>
+<span class="sourceLineNo">172</span>          break;<a name="line.172"></a>
+<span class="sourceLineNo">173</span>        }<a name="line.173"></a>
+<span class="sourceLineNo">174</span>      }<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    }<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    if (LOG.isDebugEnabled()) {<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      LOG.debug("Exiting cleaner.");<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><a name="line.180"></a>
+<span class="sourceLineNo">181</span>  private static final class CleanerContext {<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    // At most waits 60 seconds<a name="line.182"></a>
+<span class="sourceLineNo">183</span>    static final long MAX_WAIT = 60 * 1000;<a name="line.183"></a>
+<span class="sourceLineNo">184</span><a name="line.184"></a>
+<span class="sourceLineNo">185</span>    final FileStatus target;<a name="line.185"></a>
+<span class="sourceLineNo">186</span>    volatile boolean result;<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    volatile boolean setFromCleaner = false;<a name="line.187"></a>
+<span class="sourceLineNo">188</span><a name="line.188"></a>
+<span class="sourceLineNo">189</span>    static CleanerContext createCleanerContext(FileStatus status) {<a name="line.189"></a>
+<span class="sourceLineNo">190</span>      return status != null ? new CleanerContext(status) : null;<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    }<a name="line.191"></a>
+<span class="sourceLineNo">192</span><a name="line.192"></a>
+<span class="sourceLineNo">193</span>    private CleanerContext(FileStatus status) {<a name="line.193"></a>
+<span class="sourceLineNo">194</span>      this.target = status;<a name="line.194"></a>
+<span class="sourceLineNo">195</span>      this.result = false;<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    }<a name="line.196"></a>
+<span class="sourceLineNo">197</span><a name="line.197"></a>
+<span class="sourceLineNo">198</span>    synchronized void setResult(boolean res) {<a name="line.198"></a>
+<span class="sourceLineNo">199</span>      this.result = res;<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      this.setFromCleaner = true;<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      notify();<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>    synchronized boolean getResult(long waitIfNotFinished) {<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      long totalTime = 0;<a name="line.205"></a>
+<span class="sourceLineNo">206</span>      try {<a name="line.206"></a>
+<span class="sourceLineNo">207</span>        while (!setFromCleaner) {<a name="line.207"></a>
+<span class="sourceLineNo">208</span>          wait(waitIfNotFinished);<a name="line.208"></a>
+<span class="sourceLineNo">209</span>          totalTime += waitIfNotFinished;<a name="line.209"></a>
+<span class="sourceLineNo">210</span>          if (totalTime &gt;= MAX_WAIT) {<a name="line.210"></a>
+<span class="sourceLineNo">211</span>            LOG.warn("Spend too much time to delete oldwals " + target);<a name="line.211"></a>
+<span class="sourceLineNo">212</span>            return result;<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>      } catch (InterruptedException e) {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>        LOG.warn("Interrupted while waiting deletion of " + target);<a name="line.216"></a>
+<span class="sourceLineNo">217</span>        return result;<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      }<a name="line.218"></a>
+<span class="sourceLineNo">219</span>      return result;<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    }<a name="line.220"></a>
+<span class="sourceLineNo">221</span><a name="line.221"></a>
+<span class="sourceLineNo">222</span>    FileStatus getTargetToClean() {<a name="line.222"></a>
+<span class="sourceLineNo">223</span>      return target;<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    }<a name="line.224"></a>
+<span class="sourceLineNo">225</span>  }<a name="line.225"></a>
+<span class="sourceLineNo">226</span>}<a name="line.226"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ClusterStatusTracker.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ClusterStatusTracker.html b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ClusterStatusTracker.html
index 6ae0e1b..b8f5640 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ClusterStatusTracker.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ClusterStatusTracker.html
@@ -28,83 +28,85 @@
 <span class="sourceLineNo">020</span><a name="line.20"></a>
 <span class="sourceLineNo">021</span>import org.apache.commons.logging.Log;<a name="line.21"></a>
 <span class="sourceLineNo">022</span>import org.apache.commons.logging.LogFactory;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import org.apache.hadoop.hbase.Abortable;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ZooKeeperProtos;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import org.apache.zookeeper.KeeperException;<a name="line.27"></a>
-<span class="sourceLineNo">028</span><a name="line.28"></a>
-<span class="sourceLineNo">029</span>/**<a name="line.29"></a>
-<span class="sourceLineNo">030</span> * Tracker on cluster settings up in zookeeper.<a name="line.30"></a>
-<span class="sourceLineNo">031</span> * This is not related to {@link org.apache.hadoop.hbase.ClusterStatus}. That class<a name="line.31"></a>
-<span class="sourceLineNo">032</span> * is a data structure that holds snapshot of current view on cluster. This class<a name="line.32"></a>
-<span class="sourceLineNo">033</span> * is about tracking cluster attributes up in zookeeper.<a name="line.33"></a>
-<span class="sourceLineNo">034</span> *<a name="line.34"></a>
-<span class="sourceLineNo">035</span> */<a name="line.35"></a>
-<span class="sourceLineNo">036</span>@InterfaceAudience.Private<a name="line.36"></a>
-<span class="sourceLineNo">037</span>public class ClusterStatusTracker extends ZKNodeTracker {<a name="line.37"></a>
-<span class="sourceLineNo">038</span>  private static final Log LOG = LogFactory.getLog(ClusterStatusTracker.class);<a name="line.38"></a>
-<span class="sourceLineNo">039</span><a name="line.39"></a>
-<span class="sourceLineNo">040</span>  /**<a name="line.40"></a>
-<span class="sourceLineNo">041</span>   * Creates a cluster status tracker.<a name="line.41"></a>
-<span class="sourceLineNo">042</span>   *<a name="line.42"></a>
-<span class="sourceLineNo">043</span>   * &lt;p&gt;After construction, use {@link #start} to kick off tracking.<a name="line.43"></a>
-<span class="sourceLineNo">044</span>   *<a name="line.44"></a>
-<span class="sourceLineNo">045</span>   * @param watcher<a name="line.45"></a>
-<span class="sourceLineNo">046</span>   * @param abortable<a name="line.46"></a>
-<span class="sourceLineNo">047</span>   */<a name="line.47"></a>
-<span class="sourceLineNo">048</span>  public ClusterStatusTracker(ZKWatcher watcher, Abortable abortable) {<a name="line.48"></a>
-<span class="sourceLineNo">049</span>    super(watcher, watcher.znodePaths.clusterStateZNode, abortable);<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>  /**<a name="line.52"></a>
-<span class="sourceLineNo">053</span>   * Checks if cluster is up.<a name="line.53"></a>
-<span class="sourceLineNo">054</span>   * @return true if the cluster up ('shutdown' is its name up in zk) znode<a name="line.54"></a>
-<span class="sourceLineNo">055</span>   * exists with data, false if not<a name="line.55"></a>
-<span class="sourceLineNo">056</span>   */<a name="line.56"></a>
-<span class="sourceLineNo">057</span>  public boolean isClusterUp() {<a name="line.57"></a>
-<span class="sourceLineNo">058</span>    return super.getData(false) != null;<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>  /**<a name="line.61"></a>
-<span class="sourceLineNo">062</span>   * Sets the cluster as up.<a name="line.62"></a>
-<span class="sourceLineNo">063</span>   * @throws KeeperException unexpected zk exception<a name="line.63"></a>
-<span class="sourceLineNo">064</span>   */<a name="line.64"></a>
-<span class="sourceLineNo">065</span>  public void setClusterUp()<a name="line.65"></a>
-<span class="sourceLineNo">066</span>  throws KeeperException {<a name="line.66"></a>
-<span class="sourceLineNo">067</span>    byte [] upData = toByteArray();<a name="line.67"></a>
-<span class="sourceLineNo">068</span>    try {<a name="line.68"></a>
-<span class="sourceLineNo">069</span>      ZKUtil.createAndWatch(watcher, watcher.znodePaths.clusterStateZNode, upData);<a name="line.69"></a>
-<span class="sourceLineNo">070</span>    } catch(KeeperException.NodeExistsException nee) {<a name="line.70"></a>
-<span class="sourceLineNo">071</span>      ZKUtil.setData(watcher, watcher.znodePaths.clusterStateZNode, upData);<a name="line.71"></a>
-<span class="sourceLineNo">072</span>    }<a name="line.72"></a>
-<span class="sourceLineNo">073</span>  }<a name="line.73"></a>
-<span class="sourceLineNo">074</span><a name="line.74"></a>
-<span class="sourceLineNo">075</span>  /**<a name="line.75"></a>
-<span class="sourceLineNo">076</span>   * Sets the cluster as down by deleting the znode.<a name="line.76"></a>
-<span class="sourceLineNo">077</span>   * @throws KeeperException unexpected zk exception<a name="line.77"></a>
-<span class="sourceLineNo">078</span>   */<a name="line.78"></a>
-<span class="sourceLineNo">079</span>  public void setClusterDown()<a name="line.79"></a>
-<span class="sourceLineNo">080</span>  throws KeeperException {<a name="line.80"></a>
-<span class="sourceLineNo">081</span>    try {<a name="line.81"></a>
-<span class="sourceLineNo">082</span>      ZKUtil.deleteNode(watcher, watcher.znodePaths.clusterStateZNode);<a name="line.82"></a>
-<span class="sourceLineNo">083</span>    } catch(KeeperException.NoNodeException nne) {<a name="line.83"></a>
-<span class="sourceLineNo">084</span>      LOG.warn("Attempted to set cluster as down but already down, cluster " +<a name="line.84"></a>
-<span class="sourceLineNo">085</span>          "state node (" + watcher.znodePaths.clusterStateZNode + ") not found");<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    }<a name="line.86"></a>
-<span class="sourceLineNo">087</span>  }<a name="line.87"></a>
-<span class="sourceLineNo">088</span><a name="line.88"></a>
-<span class="sourceLineNo">089</span>  /**<a name="line.89"></a>
-<span class="sourceLineNo">090</span>   * @return Content of the clusterup znode as a serialized pb with the pb<a name="line.90"></a>
-<span class="sourceLineNo">091</span>   * magic as prefix.<a name="line.91"></a>
-<span class="sourceLineNo">092</span>   */<a name="line.92"></a>
-<span class="sourceLineNo">093</span>  static byte [] toByteArray() {<a name="line.93"></a>
-<span class="sourceLineNo">094</span>    ZooKeeperProtos.ClusterUp.Builder builder =<a name="line.94"></a>
-<span class="sourceLineNo">095</span>      ZooKeeperProtos.ClusterUp.newBuilder();<a name="line.95"></a>
-<span class="sourceLineNo">096</span>    builder.setStartDate(new java.util.Date().toString());<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    return ProtobufUtil.prependPBMagic(builder.build().toByteArray());<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">023</span>import org.apache.hadoop.hbase.Abortable;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.apache.zookeeper.KeeperException;<a name="line.25"></a>
+<span class="sourceLineNo">026</span><a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ZooKeeperProtos;<a name="line.28"></a>
+<span class="sourceLineNo">029</span><a name="line.29"></a>
+<span class="sourceLineNo">030</span>/**<a name="line.30"></a>
+<span class="sourceLineNo">031</span> * Tracker on cluster settings up in zookeeper.<a name="line.31"></a>
+<span class="sourceLineNo">032</span> * This is not related to {@link org.apache.hadoop.hbase.ClusterStatus}. That class<a name="line.32"></a>
+<span class="sourceLineNo">033</span> * is a data structure that holds snapshot of current view on cluster. This class<a name="line.33"></a>
+<span class="sourceLineNo">034</span> * is about tracking cluster attributes up in zookeeper.<a name="line.34"></a>
+<span class="sourceLineNo">035</span> *<a name="line.35"></a>
+<span class="sourceLineNo">036</span> */<a name="line.36"></a>
+<span class="sourceLineNo">037</span>@InterfaceAudience.Private<a name="line.37"></a>
+<span class="sourceLineNo">038</span>public class ClusterStatusTracker extends ZKNodeTracker {<a name="line.38"></a>
+<span class="sourceLineNo">039</span>  private static final Log LOG = LogFactory.getLog(ClusterStatusTracker.class);<a name="line.39"></a>
+<span class="sourceLineNo">040</span><a name="line.40"></a>
+<span class="sourceLineNo">041</span>  /**<a name="line.41"></a>
+<span class="sourceLineNo">042</span>   * Creates a cluster status tracker.<a name="line.42"></a>
+<span class="sourceLineNo">043</span>   *<a name="line.43"></a>
+<span class="sourceLineNo">044</span>   * &lt;p&gt;After construction, use {@link #start} to kick off tracking.<a name="line.44"></a>
+<span class="sourceLineNo">045</span>   *<a name="line.45"></a>
+<span class="sourceLineNo">046</span>   * @param watcher reference to the {@link ZKWatcher} which also contains configuration and<a name="line.46"></a>
+<span class="sourceLineNo">047</span>   *                constants<a name="line.47"></a>
+<span class="sourceLineNo">048</span>   * @param abortable used to abort if a fatal error occurs<a name="line.48"></a>
+<span class="sourceLineNo">049</span>   */<a name="line.49"></a>
+<span class="sourceLineNo">050</span>  public ClusterStatusTracker(ZKWatcher watcher, Abortable abortable) {<a name="line.50"></a>
+<span class="sourceLineNo">051</span>    super(watcher, watcher.znodePaths.clusterStateZNode, abortable);<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>  /**<a name="line.54"></a>
+<span class="sourceLineNo">055</span>   * Checks if cluster is up.<a name="line.55"></a>
+<span class="sourceLineNo">056</span>   * @return true if the cluster up ('shutdown' is its name up in zk) znode<a name="line.56"></a>
+<span class="sourceLineNo">057</span>   *         exists with data, false if not<a name="line.57"></a>
+<span class="sourceLineNo">058</span>   */<a name="line.58"></a>
+<span class="sourceLineNo">059</span>  public boolean isClusterUp() {<a name="line.59"></a>
+<span class="sourceLineNo">060</span>    return super.getData(false) != null;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>  }<a name="line.61"></a>
+<span class="sourceLineNo">062</span><a name="line.62"></a>
+<span class="sourceLineNo">063</span>  /**<a name="line.63"></a>
+<span class="sourceLineNo">064</span>   * Sets the cluster as up.<a name="line.64"></a>
+<span class="sourceLineNo">065</span>   * @throws KeeperException unexpected zk exception<a name="line.65"></a>
+<span class="sourceLineNo">066</span>   */<a name="line.66"></a>
+<span class="sourceLineNo">067</span>  public void setClusterUp()<a name="line.67"></a>
+<span class="sourceLineNo">068</span>  throws KeeperException {<a name="line.68"></a>
+<span class="sourceLineNo">069</span>    byte [] upData = toByteArray();<a name="line.69"></a>
+<span class="sourceLineNo">070</span>    try {<a name="line.70"></a>
+<span class="sourceLineNo">071</span>      ZKUtil.createAndWatch(watcher, watcher.znodePaths.clusterStateZNode, upData);<a name="line.71"></a>
+<span class="sourceLineNo">072</span>    } catch(KeeperException.NodeExistsException nee) {<a name="line.72"></a>
+<span class="sourceLineNo">073</span>      ZKUtil.setData(watcher, watcher.znodePaths.clusterStateZNode, upData);<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><a name="line.76"></a>
+<span class="sourceLineNo">077</span>  /**<a name="line.77"></a>
+<span class="sourceLineNo">078</span>   * Sets the cluster as down by deleting the znode.<a name="line.78"></a>
+<span class="sourceLineNo">079</span>   * @throws KeeperException unexpected zk exception<a name="line.79"></a>
+<span class="sourceLineNo">080</span>   */<a name="line.80"></a>
+<span class="sourceLineNo">081</span>  public void setClusterDown()<a name="line.81"></a>
+<span class="sourceLineNo">082</span>  throws KeeperException {<a name="line.82"></a>
+<span class="sourceLineNo">083</span>    try {<a name="line.83"></a>
+<span class="sourceLineNo">084</span>      ZKUtil.deleteNode(watcher, watcher.znodePaths.clusterStateZNode);<a name="line.84"></a>
+<span class="sourceLineNo">085</span>    } catch(KeeperException.NoNodeException nne) {<a name="line.85"></a>
+<span class="sourceLineNo">086</span>      LOG.warn("Attempted to set cluster as down but already down, cluster " +<a name="line.86"></a>
+<span class="sourceLineNo">087</span>          "state node (" + watcher.znodePaths.clusterStateZNode + ") not found");<a name="line.87"></a>
+<span class="sourceLineNo">088</span>    }<a name="line.88"></a>
+<span class="sourceLineNo">089</span>  }<a name="line.89"></a>
+<span class="sourceLineNo">090</span><a name="line.90"></a>
+<span class="sourceLineNo">091</span>  /**<a name="line.91"></a>
+<span class="sourceLineNo">092</span>   * @return Content of the clusterup znode as a serialized pb with the pb<a name="line.92"></a>
+<span class="sourceLineNo">093</span>   *         magic as prefix.<a name="line.93"></a>
+<span class="sourceLineNo">094</span>   */<a name="line.94"></a>
+<span class="sourceLineNo">095</span>  static byte [] toByteArray() {<a name="line.95"></a>
+<span class="sourceLineNo">096</span>    ZooKeeperProtos.ClusterUp.Builder builder =<a name="line.96"></a>
+<span class="sourceLineNo">097</span>      ZooKeeperProtos.ClusterUp.newBuilder();<a name="line.97"></a>
+<span class="sourceLineNo">098</span>    builder.setStartDate(new java.util.Date().toString());<a name="line.98"></a>
+<span class="sourceLineNo">099</span>    return ProtobufUtil.prependPBMagic(builder.build().toByteArray());<a name="line.99"></a>
+<span class="sourceLineNo">100</span>  }<a name="line.100"></a>
+<span class="sourceLineNo">101</span>}<a name="line.101"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/EmptyWatcher.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/EmptyWatcher.html b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/EmptyWatcher.html
index e343056..c3160af 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/EmptyWatcher.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/EmptyWatcher.html
@@ -33,7 +33,7 @@
 <span class="sourceLineNo">025</span> * An empty ZooKeeper watcher<a name="line.25"></a>
 <span class="sourceLineNo">026</span> */<a name="line.26"></a>
 <span class="sourceLineNo">027</span>@InterfaceAudience.Private<a name="line.27"></a>
-<span class="sourceLineNo">028</span>public class EmptyWatcher implements Watcher {<a name="line.28"></a>
+<span class="sourceLineNo">028</span>public final class EmptyWatcher implements Watcher {<a name="line.28"></a>
 <span class="sourceLineNo">029</span>  // Used in this package but also by tests so needs to be public<a name="line.29"></a>
 <span class="sourceLineNo">030</span>  public static final EmptyWatcher instance = new EmptyWatcher();<a name="line.30"></a>
 <span class="sourceLineNo">031</span>  private EmptyWatcher() {}<a name="line.31"></a>


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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/devapidocs/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html b/devapidocs/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html
index 253b8f3..323f853 100644
--- a/devapidocs/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html
+++ b/devapidocs/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html
@@ -568,7 +568,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>checkZk</h4>
-<pre>protected&nbsp;org.apache.zookeeper.ZooKeeper&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html#line.125">checkZk</a>()
+<pre>protected&nbsp;org.apache.zookeeper.ZooKeeper&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html#line.130">checkZk</a>()
                                           throws org.apache.zookeeper.KeeperException</pre>
 <div class="block">Try to create a ZooKeeper connection. Turns any exception encountered into a
  KeeperException.OperationTimeoutException so it can retried.</div>
@@ -576,7 +576,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>The created ZooKeeper connection object</dd>
 <dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code>org.apache.zookeeper.KeeperException</code></dd>
+<dd><code>org.apache.zookeeper.KeeperException</code> - if a ZooKeeper operation fails</dd>
 </dl>
 </li>
 </ul>
@@ -586,7 +586,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>reconnectAfterExpiration</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html#line.137">reconnectAfterExpiration</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html#line.142">reconnectAfterExpiration</a>()
                               throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                                      org.apache.zookeeper.KeeperException,
                                      <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
@@ -604,7 +604,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>delete</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html#line.156">delete</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html#line.161">delete</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path,
                    int&nbsp;version)
             throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a>,
                    org.apache.zookeeper.KeeperException</pre>
@@ -624,7 +624,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>exists</h4>
-<pre>public&nbsp;org.apache.zookeeper.data.Stat&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html#line.201">exists</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path,
+<pre>public&nbsp;org.apache.zookeeper.data.Stat&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html#line.207">exists</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path,
                                              org.apache.zookeeper.Watcher&nbsp;watcher)
                                       throws org.apache.zookeeper.KeeperException,
                                              <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
@@ -644,7 +644,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>exists</h4>
-<pre>public&nbsp;org.apache.zookeeper.data.Stat&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html#line.235">exists</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path,
+<pre>public&nbsp;org.apache.zookeeper.data.Stat&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html#line.242">exists</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path,
                                              boolean&nbsp;watch)
                                       throws org.apache.zookeeper.KeeperException,
                                              <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
@@ -664,7 +664,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>retryOrThrow</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html#line.265">retryOrThrow</a>(<a href="../../../../../org/apache/hadoop/hbase/util/RetryCounter.html" title="class in org.apache.hadoop.hbase.util">RetryCounter</a>&nbsp;retryCounter,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html#line.273">retryOrThrow</a>(<a href="../../../../../org/apache/hadoop/hbase/util/RetryCounter.html" title="class in org.apache.hadoop.hbase.util">RetryCounter</a>&nbsp;retryCounter,
                           org.apache.zookeeper.KeeperException&nbsp;e,
                           <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;opName)
                    throws org.apache.zookeeper.KeeperException</pre>
@@ -680,7 +680,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getChildren</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html#line.280">getChildren</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path,
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html#line.288">getChildren</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path,
                                 org.apache.zookeeper.Watcher&nbsp;watcher)
                          throws org.apache.zookeeper.KeeperException,
                                 <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
@@ -700,7 +700,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getChildren</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html#line.315">getChildren</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path,
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html#line.324">getChildren</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path,
                                 boolean&nbsp;watch)
                          throws org.apache.zookeeper.KeeperException,
                                 <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
@@ -720,7 +720,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getData</h4>
-<pre>public&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html#line.350">getData</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path,
+<pre>public&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html#line.360">getData</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path,
                       org.apache.zookeeper.Watcher&nbsp;watcher,
                       org.apache.zookeeper.data.Stat&nbsp;stat)
                throws org.apache.zookeeper.KeeperException,
@@ -741,7 +741,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getData</h4>
-<pre>public&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html#line.385">getData</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path,
+<pre>public&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html#line.396">getData</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path,
                       boolean&nbsp;watch,
                       org.apache.zookeeper.data.Stat&nbsp;stat)
                throws org.apache.zookeeper.KeeperException,
@@ -762,7 +762,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>setData</h4>
-<pre>public&nbsp;org.apache.zookeeper.data.Stat&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html#line.422">setData</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path,
+<pre>public&nbsp;org.apache.zookeeper.data.Stat&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html#line.434">setData</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path,
                                               byte[]&nbsp;data,
                                               int&nbsp;version)
                                        throws org.apache.zookeeper.KeeperException,
@@ -785,7 +785,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getAcl</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.zookeeper.data.ACL&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html#line.479">getAcl</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path,
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.zookeeper.data.ACL&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html#line.493">getAcl</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path,
                                                   org.apache.zookeeper.data.Stat&nbsp;stat)
                                            throws org.apache.zookeeper.KeeperException,
                                                   <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
@@ -805,7 +805,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>setAcl</h4>
-<pre>public&nbsp;org.apache.zookeeper.data.Stat&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html#line.514">setAcl</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path,
+<pre>public&nbsp;org.apache.zookeeper.data.Stat&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html#line.529">setAcl</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path,
                                              <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.zookeeper.data.ACL&gt;&nbsp;acls,
                                              int&nbsp;version)
                                       throws org.apache.zookeeper.KeeperException,
@@ -826,7 +826,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>create</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html#line.560">create</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path,
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html#line.576">create</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path,
                      byte[]&nbsp;data,
                      <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.zookeeper.data.ACL&gt;&nbsp;acl,
                      org.apache.zookeeper.CreateMode&nbsp;createMode)
@@ -858,7 +858,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>createNonSequential</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html#line.581">createNonSequential</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path,
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html#line.597">createNonSequential</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path,
                                    byte[]&nbsp;data,
                                    <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.zookeeper.data.ACL&gt;&nbsp;acl,
                                    org.apache.zookeeper.CreateMode&nbsp;createMode)
@@ -877,7 +877,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>createSequential</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html#line.634">createSequential</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path,
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html#line.652">createSequential</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path,
                                 byte[]&nbsp;data,
                                 <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.zookeeper.data.ACL&gt;&nbsp;acl,
                                 org.apache.zookeeper.CreateMode&nbsp;createMode)
@@ -896,7 +896,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>prepareZKMulti</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a>&lt;org.apache.zookeeper.Op&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html#line.677">prepareZKMulti</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a>&lt;org.apache.zookeeper.Op&gt;&nbsp;ops)
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a>&lt;org.apache.zookeeper.Op&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html#line.696">prepareZKMulti</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a>&lt;org.apache.zookeeper.Op&gt;&nbsp;ops)
                                                   throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</a></pre>
 <div class="block">Convert Iterable of <code>Op</code> we got into the ZooKeeper.Op
  instances to actually pass to multi (need to do this in order to appendMetaData).</div>
@@ -912,7 +912,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>multi</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.zookeeper.OpResult&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html#line.704">multi</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a>&lt;org.apache.zookeeper.Op&gt;&nbsp;ops)
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.zookeeper.OpResult&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html#line.724">multi</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a>&lt;org.apache.zookeeper.Op&gt;&nbsp;ops)
                                           throws org.apache.zookeeper.KeeperException,
                                                  <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <div class="block">Run multiple operations in a transactional manner. Retry before throwing exception</div>
@@ -929,7 +929,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>findPreviousSequentialNode</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html#line.736">findPreviousSequentialNode</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path)
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html#line.757">findPreviousSequentialNode</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path)
                                    throws org.apache.zookeeper.KeeperException,
                                           <a href="http://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>
@@ -945,7 +945,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getSessionId</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html#line.758">getSessionId</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html#line.781">getSessionId</a>()</pre>
 </li>
 </ul>
 <a name="close--">
@@ -954,7 +954,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>close</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html#line.762">close</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html#line.785">close</a>()
            throws <a href="http://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>
@@ -968,7 +968,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getState</h4>
-<pre>public&nbsp;org.apache.zookeeper.ZooKeeper.States&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html#line.766">getState</a>()</pre>
+<pre>public&nbsp;org.apache.zookeeper.ZooKeeper.States&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html#line.791">getState</a>()</pre>
 </li>
 </ul>
 <a name="getZooKeeper--">
@@ -977,7 +977,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getZooKeeper</h4>
-<pre>public&nbsp;org.apache.zookeeper.ZooKeeper&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html#line.770">getZooKeeper</a>()</pre>
+<pre>public&nbsp;org.apache.zookeeper.ZooKeeper&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html#line.795">getZooKeeper</a>()</pre>
 </li>
 </ul>
 <a name="getSessionPasswd--">
@@ -986,7 +986,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getSessionPasswd</h4>
-<pre>public&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html#line.774">getSessionPasswd</a>()</pre>
+<pre>public&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html#line.799">getSessionPasswd</a>()</pre>
 </li>
 </ul>
 <a name="sync-java.lang.String-org.apache.zookeeper.AsyncCallback.VoidCallback-java.lang.Object-">
@@ -995,7 +995,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>sync</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html#line.778">sync</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html#line.803">sync</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path,
                  org.apache.zookeeper.AsyncCallback.VoidCallback&nbsp;cb,
                  <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;ctx)
           throws org.apache.zookeeper.KeeperException</pre>
@@ -1011,7 +1011,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>filterByPrefix</h4>
-<pre>private static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html#line.793">filterByPrefix</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;nodes,
+<pre>private static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html#line.819">filterByPrefix</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;nodes,
                                            <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;prefixes)</pre>
 <div class="block">Filters the given node list by the given prefixes.
  This method is all-inclusive--if any element in the node list starts
@@ -1031,7 +1031,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getIdentifier</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html#line.807">getIdentifier</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html#line.833">getIdentifier</a>()</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/devapidocs/org/apache/hadoop/hbase/zookeeper/RegionNormalizerTracker.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/zookeeper/RegionNormalizerTracker.html b/devapidocs/org/apache/hadoop/hbase/zookeeper/RegionNormalizerTracker.html
index ff9d4db..71d79d2 100644
--- a/devapidocs/org/apache/hadoop/hbase/zookeeper/RegionNormalizerTracker.html
+++ b/devapidocs/org/apache/hadoop/hbase/zookeeper/RegionNormalizerTracker.html
@@ -119,7 +119,7 @@ var activeTableTab = "activeTableTab";
 <li class="blockList">
 <hr>
 <br>
-<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/RegionNormalizerTracker.html#line.35">RegionNormalizerTracker</a>
+<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/RegionNormalizerTracker.html#line.36">RegionNormalizerTracker</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKNodeTracker</a></pre>
 <div class="block">Tracks region normalizer state up in ZK</div>
 </li>
@@ -253,7 +253,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.
 <ul class="blockListLast">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/RegionNormalizerTracker.html#line.36">LOG</a></pre>
+<pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/RegionNormalizerTracker.html#line.37">LOG</a></pre>
 </li>
 </ul>
 </li>
@@ -270,7 +270,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.
 <ul class="blockListLast">
 <li class="blockList">
 <h4>RegionNormalizerTracker</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/RegionNormalizerTracker.html#line.38">RegionNormalizerTracker</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;watcher,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/RegionNormalizerTracker.html#line.39">RegionNormalizerTracker</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;watcher,
                                <a href="../../../../../org/apache/hadoop/hbase/Abortable.html" title="interface in org.apache.hadoop.hbase">Abortable</a>&nbsp;abortable)</pre>
 </li>
 </ul>
@@ -305,7 +305,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>normalizerOn</code> - whether normalizer should be on or off</dd>
 <dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code>org.apache.zookeeper.KeeperException</code></dd>
+<dd><code>org.apache.zookeeper.KeeperException</code> - if a ZooKeeper operation fails</dd>
 </dl>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKClusterId.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKClusterId.html b/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKClusterId.html
index 0df575d..a47628b 100644
--- a/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKClusterId.html
+++ b/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKClusterId.html
@@ -339,7 +339,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>the UUID read from zookeeper</dd>
 <dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code>org.apache.zookeeper.KeeperException</code></dd>
+<dd><code>org.apache.zookeeper.KeeperException</code> - if a ZooKeeper operation fails</dd>
 </dl>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKMainServer.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKMainServer.html b/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKMainServer.html
index fff4c09..4d5f4ab 100644
--- a/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKMainServer.html
+++ b/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKMainServer.html
@@ -285,7 +285,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <pre>private static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKMainServer.html#line.82">hasServer</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;args)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>args</code> - </dd>
+<dd><code>args</code> - the arguments to check</dd>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>True if argument strings have a '-server' in them.</dd>
 </dl>
@@ -300,7 +300,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <pre>private static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKMainServer.html#line.90">hasCommandLineArguments</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;args)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>args</code> - </dd>
+<dd><code>args</code> - the arguments to check for command-line arguments</dd>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>True if command-line arguments were passed.</dd>
 </dl>
@@ -312,7 +312,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>main</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKMainServer.html#line.102">main</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;args)
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKMainServer.html#line.106">main</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;args)
                  throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Run the tool.</div>
 <dl>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.html b/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.html
index e366818..5d4ef77 100644
--- a/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.html
+++ b/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.html
@@ -369,7 +369,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.htm
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ZKNodeTracker</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.html#line.60">ZKNodeTracker</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;watcher,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.html#line.61">ZKNodeTracker</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;watcher,
                      <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;node,
                      <a href="../../../../../org/apache/hadoop/hbase/Abortable.html" title="interface in org.apache.hadoop.hbase">Abortable</a>&nbsp;abortable)</pre>
 <div class="block">Constructs a new ZK node tracker.
@@ -377,9 +377,10 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.htm
  <p>After construction, use <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.html#start--"><code>start()</code></a> to kick off tracking.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>watcher</code> - </dd>
-<dd><code>node</code> - </dd>
-<dd><code>abortable</code> - </dd>
+<dd><code>watcher</code> - reference to the <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper"><code>ZKWatcher</code></a> which also contains configuration and
+                constants</dd>
+<dd><code>node</code> - path of the node being tracked</dd>
+<dd><code>abortable</code> - used to abort if a fatal error occurs</dd>
 </dl>
 </li>
 </ul>
@@ -397,7 +398,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>start</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.html#line.74">start</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.html#line.75">start</a>()</pre>
 <div class="block">Starts the tracking of the node in ZooKeeper.
 
  <p>Use <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.html#blockUntilAvailable--"><code>blockUntilAvailable()</code></a> to block until the node is available
@@ -410,7 +411,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>stop</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.html#line.92">stop</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.html#line.93">stop</a>()</pre>
 </li>
 </ul>
 <a name="blockUntilAvailable--">
@@ -419,7 +420,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>blockUntilAvailable</h4>
-<pre>public&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.html#line.103">blockUntilAvailable</a>()
+<pre>public&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.html#line.104">blockUntilAvailable</a>()
                            throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <div class="block">Gets the data of the node, blocking until the node is available.</div>
 <dl>
@@ -436,15 +437,15 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>blockUntilAvailable</h4>
-<pre>public&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.html#line.117">blockUntilAvailable</a>(long&nbsp;timeout,
+<pre>public&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.html#line.118">blockUntilAvailable</a>(long&nbsp;timeout,
                                   boolean&nbsp;refresh)
                            throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <div class="block">Gets the data of the node, blocking until the node is available or the
  specified timeout has elapsed.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>timeout</code> - maximum time to wait for the node data to be available,
- n milliseconds.  Pass 0 for no timeout.</dd>
+<dd><code>timeout</code> - maximum time to wait for the node data to be available, n milliseconds. Pass 0
+                for no timeout.</dd>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>data of the node</dd>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -458,7 +459,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>getData</h4>
-<pre>public&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.html#line.174">getData</a>(boolean&nbsp;refresh)</pre>
+<pre>public&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.html#line.177">getData</a>(boolean&nbsp;refresh)</pre>
 <div class="block">Gets the data of the node.
 
  <p>If the node is currently available, the most up-to-date known version of
@@ -478,7 +479,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>getNode</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.html#line.185">getNode</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.html#line.188">getNode</a>()</pre>
 </li>
 </ul>
 <a name="nodeCreated-java.lang.String-">
@@ -487,7 +488,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>nodeCreated</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.html#line.190">nodeCreated</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.html#line.193">nodeCreated</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.html#nodeCreated-java.lang.String-">ZKListener</a></code></span></div>
 <div class="block">Called when a new node has been created.</div>
 <dl>
@@ -504,7 +505,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>nodeDeleted</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.html#line.206">nodeDeleted</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.html#line.212">nodeDeleted</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.html#nodeDeleted-java.lang.String-">ZKListener</a></code></span></div>
 <div class="block">Called when a node has been deleted</div>
 <dl>
@@ -521,7 +522,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>nodeDataChanged</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.html#line.221">nodeDataChanged</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.html#line.227">nodeDataChanged</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.html#nodeDataChanged-java.lang.String-">ZKListener</a></code></span></div>
 <div class="block">Called when an existing node has changed data.</div>
 <dl>
@@ -538,7 +539,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>checkIfBaseNodeAvailable</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.html#line.233">checkIfBaseNodeAvailable</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.html#line.239">checkIfBaseNodeAvailable</a>()</pre>
 <div class="block">Checks if the baseznode set as per the property 'zookeeper.znode.parent'
  exists.</div>
 <dl>
@@ -554,7 +555,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.htm
 <ul class="blockListLast">
 <li class="blockList">
 <h4>toString</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.html#line.247">toString</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.html#line.253">toString</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a></code>&nbsp;in class&nbsp;<code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKServerTool.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKServerTool.html b/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKServerTool.html
index 5934b1b..fd28c4d 100644
--- a/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKServerTool.html
+++ b/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKServerTool.html
@@ -110,7 +110,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.LimitedPrivate(value="Tools")
-public class <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKServerTool.html#line.37">ZKServerTool</a>
+public final class <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKServerTool.html#line.37">ZKServerTool</a>
 extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 <div class="block">Tool for reading ZooKeeper servers from HBase XML configuration and producing
  a line-by-line list for use by bash scripts.</div>
@@ -129,10 +129,12 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <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>
+<th class="colFirst" scope="col">Modifier</th>
+<th class="colLast" scope="col">Constructor and Description</th>
 </tr>
 <tr class="altColor">
-<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKServerTool.html#ZKServerTool--">ZKServerTool</a></span>()</code>&nbsp;</td>
+<td class="colFirst"><code>private </code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKServerTool.html#ZKServerTool--">ZKServerTool</a></span>()</code>&nbsp;</td>
 </tr>
 </table>
 </li>
@@ -187,7 +189,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ZKServerTool</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKServerTool.html#line.37">ZKServerTool</a>()</pre>
+<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKServerTool.html#line.38">ZKServerTool</a>()</pre>
 </li>
 </ul>
 </li>
@@ -204,7 +206,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>readZKNodes</h4>
-<pre>public static&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/zookeeper/ZKServerTool.html#line.38">readZKNodes</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
+<pre>public static&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/zookeeper/ZKServerTool.html#line.41">readZKNodes</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
 </li>
 </ul>
 <a name="main-java.lang.String:A-">
@@ -213,7 +215,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>main</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKServerTool.html#line.59">main</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;args)</pre>
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKServerTool.html#line.62">main</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;args)</pre>
 <div class="block">Run the tool.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKSplitLog.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKSplitLog.html b/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKSplitLog.html
index 7bbaaaf..edd2549 100644
--- a/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKSplitLog.html
+++ b/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKSplitLog.html
@@ -110,9 +110,10 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Private
-public class <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKSplitLog.html#line.36">ZKSplitLog</a>
+public final class <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKSplitLog.html#line.37">ZKSplitLog</a>
 extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
-<div class="block">Common methods and attributes used by SplitLogManager and SplitLogWorker running distributed splitting of WAL logs.</div>
+<div class="block">Common methods and attributes used by SplitLogManager and SplitLogWorker running distributed
+ splitting of WAL logs.</div>
 </li>
 </ul>
 </div>
@@ -147,10 +148,12 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <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>
+<th class="colFirst" scope="col">Modifier</th>
+<th class="colLast" scope="col">Constructor and Description</th>
 </tr>
 <tr class="altColor">
-<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKSplitLog.html#ZKSplitLog--">ZKSplitLog</a></span>()</code>&nbsp;</td>
+<td class="colFirst"><code>private </code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKSplitLog.html#ZKSplitLog--">ZKSplitLog</a></span>()</code>&nbsp;</td>
 </tr>
 </table>
 </li>
@@ -208,7 +211,9 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <tr id="i8" class="altColor">
 <td class="colFirst"><code>static boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKSplitLog.html#isRescanNode-org.apache.hadoop.hbase.zookeeper.ZKWatcher-java.lang.String-">isRescanNode</a></span>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
-            <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path)</code>&nbsp;</td>
+            <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path)</code>
+<div class="block">Checks if the given path represents a rescan node.</div>
+</td>
 </tr>
 <tr id="i9" class="rowColor">
 <td class="colFirst"><code>static void</code></td>
@@ -244,7 +249,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKSplitLog.html#line.37">LOG</a></pre>
+<pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKSplitLog.html#line.38">LOG</a></pre>
 </li>
 </ul>
 </li>
@@ -261,7 +266,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ZKSplitLog</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKSplitLog.html#line.36">ZKSplitLog</a>()</pre>
+<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKSplitLog.html#line.40">ZKSplitLog</a>()</pre>
 </li>
 </ul>
 </li>
@@ -278,7 +283,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getEncodedNodeName</h4>
-<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKSplitLog.html#line.45">getEncodedNodeName</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
+<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKSplitLog.html#line.49">getEncodedNodeName</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                                         <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;filename)</pre>
 <div class="block">Gets the full path node name for the log file being split.
  This method will url encode the filename.</div>
@@ -295,7 +300,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getFileName</h4>
-<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKSplitLog.html#line.49">getFileName</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;node)</pre>
+<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKSplitLog.html#line.53">getFileName</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;node)</pre>
 </li>
 </ul>
 <a name="encode-java.lang.String-">
@@ -304,7 +309,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>encode</h4>
-<pre>static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKSplitLog.html#line.54">encode</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;s)</pre>
+<pre>static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKSplitLog.html#line.58">encode</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;s)</pre>
 </li>
 </ul>
 <a name="decode-java.lang.String-">
@@ -313,7 +318,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>decode</h4>
-<pre>static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKSplitLog.html#line.62">decode</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;s)</pre>
+<pre>static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKSplitLog.html#line.66">decode</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;s)</pre>
 </li>
 </ul>
 <a name="getRescanNode-org.apache.hadoop.hbase.zookeeper.ZKWatcher-">
@@ -322,7 +327,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getRescanNode</h4>
-<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKSplitLog.html#line.70">getRescanNode</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw)</pre>
+<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKSplitLog.html#line.74">getRescanNode</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw)</pre>
 </li>
 </ul>
 <a name="isRescanNode-java.lang.String-">
@@ -331,7 +336,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>isRescanNode</h4>
-<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKSplitLog.html#line.78">isRescanNode</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</pre>
+<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKSplitLog.html#line.82">isRescanNode</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>name</code> - the last part in path</dd>
@@ -346,11 +351,12 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>isRescanNode</h4>
-<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKSplitLog.html#line.87">isRescanNode</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
+<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKSplitLog.html#line.93">isRescanNode</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                                    <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path)</pre>
+<div class="block">Checks if the given path represents a rescan node.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>zkw</code> - </dd>
+<dd><code>zkw</code> - reference to the <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper"><code>ZKWatcher</code></a> which also contains configuration and constants</dd>
 <dd><code>path</code> - the absolute path, starts with '/'</dd>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>whether the path represents a rescan node</dd>
@@ -363,7 +369,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getSplitLogDir</h4>
-<pre>public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKSplitLog.html#line.100">getSplitLogDir</a>(org.apache.hadoop.fs.Path&nbsp;rootdir,
+<pre>public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKSplitLog.html#line.106">getSplitLogDir</a>(org.apache.hadoop.fs.Path&nbsp;rootdir,
                                                        <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;tmpname)</pre>
 </li>
 </ul>
@@ -373,7 +379,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>markCorrupted</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKSplitLog.html#line.104">markCorrupted</a>(org.apache.hadoop.fs.Path&nbsp;rootdir,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKSplitLog.html#line.110">markCorrupted</a>(org.apache.hadoop.fs.Path&nbsp;rootdir,
                                  <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;logFileName,
                                  org.apache.hadoop.fs.FileSystem&nbsp;fs)</pre>
 </li>
@@ -384,7 +390,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>isCorrupted</h4>
-<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKSplitLog.html#line.115">isCorrupted</a>(org.apache.hadoop.fs.Path&nbsp;rootdir,
+<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKSplitLog.html#line.121">isCorrupted</a>(org.apache.hadoop.fs.Path&nbsp;rootdir,
                                   <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;logFileName,
                                   org.apache.hadoop.fs.FileSystem&nbsp;fs)
                            throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKUtil.JaasConfiguration.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKUtil.JaasConfiguration.html b/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKUtil.JaasConfiguration.html
index 6c1fbdc..d6f9cc9 100644
--- a/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKUtil.JaasConfiguration.html
+++ b/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKUtil.JaasConfiguration.html
@@ -118,7 +118,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.231">ZKUtil.JaasConfiguration</a>
+<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.237">ZKUtil.JaasConfiguration</a>
 extends <a href="http://docs.oracle.com/javase/8/docs/api/javax/security/auth/login/Configuration.html?is-external=true" title="class or interface in javax.security.auth.login">Configuration</a></pre>
 <div class="block">A JAAS configuration that defines the login modules that we want to use for login.</div>
 </li>
@@ -280,7 +280,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/javax/security/auth/lo
 <ul class="blockList">
 <li class="blockList">
 <h4>SERVER_KEYTAB_KERBEROS_CONFIG_NAME</h4>
-<pre>private static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.JaasConfiguration.html#line.232">SERVER_KEYTAB_KERBEROS_CONFIG_NAME</a></pre>
+<pre>private static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.JaasConfiguration.html#line.238">SERVER_KEYTAB_KERBEROS_CONFIG_NAME</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.zookeeper.ZKUtil.JaasConfiguration.SERVER_KEYTAB_KERBEROS_CONFIG_NAME">Constant Field Values</a></dd>
@@ -293,7 +293,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/javax/security/auth/lo
 <ul class="blockList">
 <li class="blockList">
 <h4>CLIENT_KEYTAB_KERBEROS_CONFIG_NAME</h4>
-<pre>private static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.JaasConfiguration.html#line.234">CLIENT_KEYTAB_KERBEROS_CONFIG_NAME</a></pre>
+<pre>private static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.JaasConfiguration.html#line.240">CLIENT_KEYTAB_KERBEROS_CONFIG_NAME</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.zookeeper.ZKUtil.JaasConfiguration.CLIENT_KEYTAB_KERBEROS_CONFIG_NAME">Constant Field Values</a></dd>
@@ -306,7 +306,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/javax/security/auth/lo
 <ul class="blockList">
 <li class="blockList">
 <h4>BASIC_JAAS_OPTIONS</h4>
-<pre>private static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.JaasConfiguration.html#line.237">BASIC_JAAS_OPTIONS</a></pre>
+<pre>private static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.JaasConfiguration.html#line.243">BASIC_JAAS_OPTIONS</a></pre>
 </li>
 </ul>
 <a name="KEYTAB_KERBEROS_OPTIONS">
@@ -315,7 +315,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/javax/security/auth/lo
 <ul class="blockList">
 <li class="blockList">
 <h4>KEYTAB_KERBEROS_OPTIONS</h4>
-<pre>private static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.JaasConfiguration.html#line.245">KEYTAB_KERBEROS_OPTIONS</a></pre>
+<pre>private static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.JaasConfiguration.html#line.251">KEYTAB_KERBEROS_OPTIONS</a></pre>
 </li>
 </ul>
 <a name="KEYTAB_KERBEROS_LOGIN">
@@ -324,7 +324,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/javax/security/auth/lo
 <ul class="blockList">
 <li class="blockList">
 <h4>KEYTAB_KERBEROS_LOGIN</h4>
-<pre>private static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/javax/security/auth/login/AppConfigurationEntry.html?is-external=true" title="class or interface in javax.security.auth.login">AppConfigurationEntry</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.JaasConfiguration.html#line.253">KEYTAB_KERBEROS_LOGIN</a></pre>
+<pre>private static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/javax/security/auth/login/AppConfigurationEntry.html?is-external=true" title="class or interface in javax.security.auth.login">AppConfigurationEntry</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.JaasConfiguration.html#line.259">KEYTAB_KERBEROS_LOGIN</a></pre>
 </li>
 </ul>
 <a name="KEYTAB_KERBEROS_CONF">
@@ -333,7 +333,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/javax/security/auth/lo
 <ul class="blockList">
 <li class="blockList">
 <h4>KEYTAB_KERBEROS_CONF</h4>
-<pre>private static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/javax/security/auth/login/AppConfigurationEntry.html?is-external=true" title="class or interface in javax.security.auth.login">AppConfigurationEntry</a>[] <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.JaasConfiguration.html#line.258">KEYTAB_KERBEROS_CONF</a></pre>
+<pre>private static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/javax/security/auth/login/AppConfigurationEntry.html?is-external=true" title="class or interface in javax.security.auth.login">AppConfigurationEntry</a>[] <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.JaasConfiguration.html#line.264">KEYTAB_KERBEROS_CONF</a></pre>
 </li>
 </ul>
 <a name="baseConfig">
@@ -342,7 +342,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/javax/security/auth/lo
 <ul class="blockList">
 <li class="blockList">
 <h4>baseConfig</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/javax/security/auth/login/Configuration.html?is-external=true" title="class or interface in javax.security.auth.login">Configuration</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.JaasConfiguration.html#line.261">baseConfig</a></pre>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/javax/security/auth/login/Configuration.html?is-external=true" title="class or interface in javax.security.auth.login">Configuration</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.JaasConfiguration.html#line.267">baseConfig</a></pre>
 </li>
 </ul>
 <a name="loginContextName">
@@ -351,7 +351,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/javax/security/auth/lo
 <ul class="blockList">
 <li class="blockList">
 <h4>loginContextName</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.JaasConfiguration.html#line.262">loginContextName</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.JaasConfiguration.html#line.268">loginContextName</a></pre>
 </li>
 </ul>
 <a name="useTicketCache">
@@ -360,7 +360,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/javax/security/auth/lo
 <ul class="blockList">
 <li class="blockList">
 <h4>useTicketCache</h4>
-<pre>private final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.JaasConfiguration.html#line.263">useTicketCache</a></pre>
+<pre>private final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.JaasConfiguration.html#line.269">useTicketCache</a></pre>
 </li>
 </ul>
 <a name="keytabFile">
@@ -369,7 +369,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/javax/security/auth/lo
 <ul class="blockList">
 <li class="blockList">
 <h4>keytabFile</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.JaasConfiguration.html#line.264">keytabFile</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.JaasConfiguration.html#line.270">keytabFile</a></pre>
 </li>
 </ul>
 <a name="principal">
@@ -378,7 +378,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/javax/security/auth/lo
 <ul class="blockListLast">
 <li class="blockList">
 <h4>principal</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.JaasConfiguration.html#line.265">principal</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.JaasConfiguration.html#line.271">principal</a></pre>
 </li>
 </ul>
 </li>
@@ -395,7 +395,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/javax/security/auth/lo
 <ul class="blockList">
 <li class="blockList">
 <h4>JaasConfiguration</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.JaasConfiguration.html#line.267">JaasConfiguration</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;loginContextName,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.JaasConfiguration.html#line.273">JaasConfiguration</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;loginContextName,
                          <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;principal,
                          <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;keytabFile)</pre>
 </li>
@@ -406,7 +406,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/javax/security/auth/lo
 <ul class="blockListLast">
 <li class="blockList">
 <h4>JaasConfiguration</h4>
-<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.JaasConfiguration.html#line.271">JaasConfiguration</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;loginContextName,
+<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.JaasConfiguration.html#line.277">JaasConfiguration</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;loginContextName,
                           <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;principal,
                           <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;keytabFile,
                           boolean&nbsp;useTicketCache)</pre>
@@ -426,7 +426,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/javax/security/auth/lo
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getAppConfigurationEntry</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/javax/security/auth/login/AppConfigurationEntry.html?is-external=true" title="class or interface in javax.security.auth.login">AppConfigurationEntry</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.JaasConfiguration.html#line.288">getAppConfigurationEntry</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;appName)</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/javax/security/auth/login/AppConfigurationEntry.html?is-external=true" title="class or interface in javax.security.auth.login">AppConfigurationEntry</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.JaasConfiguration.html#line.294">getAppConfigurationEntry</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;appName)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/8/docs/api/javax/security/auth/login/Configuration.html?is-external=true#getAppConfigurationEntry-java.lang.String-" title="class or interface in javax.security.auth.login">getAppConfigurationEntry</a></code>&nbsp;in class&nbsp;<code><a href="http://docs.oracle.com/javase/8/docs/api/javax/security/auth/login/Configuration.html?is-external=true" title="class or interface in javax.security.auth.login">Configuration</a></code></dd>


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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/HQuorumPeer.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/HQuorumPeer.html b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/HQuorumPeer.html
index e621e0e..0b475e4 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/HQuorumPeer.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/HQuorumPeer.html
@@ -43,11 +43,11 @@
 <span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.35"></a>
 <span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.HBaseInterfaceAudience;<a name="line.36"></a>
 <span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.HConstants;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.yetus.audience.InterfaceStability;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.util.DNS;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.util.Strings;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.util.StringUtils;<a name="line.42"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.util.DNS;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.util.Strings;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.util.StringUtils;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.yetus.audience.InterfaceStability;<a name="line.42"></a>
 <span class="sourceLineNo">043</span>import org.apache.zookeeper.server.ServerConfig;<a name="line.43"></a>
 <span class="sourceLineNo">044</span>import org.apache.zookeeper.server.ZooKeeperServerMain;<a name="line.44"></a>
 <span class="sourceLineNo">045</span>import org.apache.zookeeper.server.quorum.QuorumPeerConfig;<a name="line.45"></a>
@@ -62,113 +62,116 @@
 <span class="sourceLineNo">054</span> */<a name="line.54"></a>
 <span class="sourceLineNo">055</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.TOOLS)<a name="line.55"></a>
 <span class="sourceLineNo">056</span>@InterfaceStability.Evolving<a name="line.56"></a>
-<span class="sourceLineNo">057</span>public class HQuorumPeer {<a name="line.57"></a>
-<span class="sourceLineNo">058</span><a name="line.58"></a>
-<span class="sourceLineNo">059</span>  /**<a name="line.59"></a>
-<span class="sourceLineNo">060</span>   * Parse ZooKeeper configuration from HBase XML config and run a QuorumPeer.<a name="line.60"></a>
-<span class="sourceLineNo">061</span>   * @param args String[] of command line arguments. Not used.<a name="line.61"></a>
-<span class="sourceLineNo">062</span>   */<a name="line.62"></a>
-<span class="sourceLineNo">063</span>  public static void main(String[] args) {<a name="line.63"></a>
-<span class="sourceLineNo">064</span>    Configuration conf = HBaseConfiguration.create();<a name="line.64"></a>
-<span class="sourceLineNo">065</span>    try {<a name="line.65"></a>
-<span class="sourceLineNo">066</span>      Properties zkProperties = ZKConfig.makeZKProps(conf);<a name="line.66"></a>
-<span class="sourceLineNo">067</span>      writeMyID(zkProperties);<a name="line.67"></a>
-<span class="sourceLineNo">068</span>      QuorumPeerConfig zkConfig = new QuorumPeerConfig();<a name="line.68"></a>
-<span class="sourceLineNo">069</span>      zkConfig.parseProperties(zkProperties);<a name="line.69"></a>
-<span class="sourceLineNo">070</span><a name="line.70"></a>
-<span class="sourceLineNo">071</span>      // login the zookeeper server principal (if using security)<a name="line.71"></a>
-<span class="sourceLineNo">072</span>      ZKUtil.loginServer(conf, HConstants.ZK_SERVER_KEYTAB_FILE,<a name="line.72"></a>
-<span class="sourceLineNo">073</span>        HConstants.ZK_SERVER_KERBEROS_PRINCIPAL,<a name="line.73"></a>
-<span class="sourceLineNo">074</span>        zkConfig.getClientPortAddress().getHostName());<a name="line.74"></a>
-<span class="sourceLineNo">075</span><a name="line.75"></a>
-<span class="sourceLineNo">076</span>      runZKServer(zkConfig);<a name="line.76"></a>
-<span class="sourceLineNo">077</span>    } catch (Exception e) {<a name="line.77"></a>
-<span class="sourceLineNo">078</span>      e.printStackTrace();<a name="line.78"></a>
-<span class="sourceLineNo">079</span>      System.exit(-1);<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>  private static void runZKServer(QuorumPeerConfig zkConfig) throws UnknownHostException, IOException {<a name="line.83"></a>
-<span class="sourceLineNo">084</span>    if (zkConfig.isDistributed()) {<a name="line.84"></a>
-<span class="sourceLineNo">085</span>      QuorumPeerMain qp = new QuorumPeerMain();<a name="line.85"></a>
-<span class="sourceLineNo">086</span>      qp.runFromConfig(zkConfig);<a name="line.86"></a>
-<span class="sourceLineNo">087</span>    } else {<a name="line.87"></a>
-<span class="sourceLineNo">088</span>      ZooKeeperServerMain zk = new ZooKeeperServerMain();<a name="line.88"></a>
-<span class="sourceLineNo">089</span>      ServerConfig serverConfig = new ServerConfig();<a name="line.89"></a>
-<span class="sourceLineNo">090</span>      serverConfig.readFrom(zkConfig);<a name="line.90"></a>
-<span class="sourceLineNo">091</span>      zk.runFromConfig(serverConfig);<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>  private static boolean addressIsLocalHost(String address) {<a name="line.95"></a>
-<span class="sourceLineNo">096</span>    return address.equals("localhost") || address.equals("127.0.0.1");<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>  static void writeMyID(Properties properties) throws IOException {<a name="line.99"></a>
-<span class="sourceLineNo">100</span>    long myId = -1;<a name="line.100"></a>
+<span class="sourceLineNo">057</span>public final class HQuorumPeer {<a name="line.57"></a>
+<span class="sourceLineNo">058</span>  private HQuorumPeer() {<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>  /**<a name="line.61"></a>
+<span class="sourceLineNo">062</span>   * Parse ZooKeeper configuration from HBase XML config and run a QuorumPeer.<a name="line.62"></a>
+<span class="sourceLineNo">063</span>   * @param args String[] of command line arguments. Not used.<a name="line.63"></a>
+<span class="sourceLineNo">064</span>   */<a name="line.64"></a>
+<span class="sourceLineNo">065</span>  public static void main(String[] args) {<a name="line.65"></a>
+<span class="sourceLineNo">066</span>    Configuration conf = HBaseConfiguration.create();<a name="line.66"></a>
+<span class="sourceLineNo">067</span>    try {<a name="line.67"></a>
+<span class="sourceLineNo">068</span>      Properties zkProperties = ZKConfig.makeZKProps(conf);<a name="line.68"></a>
+<span class="sourceLineNo">069</span>      writeMyID(zkProperties);<a name="line.69"></a>
+<span class="sourceLineNo">070</span>      QuorumPeerConfig zkConfig = new QuorumPeerConfig();<a name="line.70"></a>
+<span class="sourceLineNo">071</span>      zkConfig.parseProperties(zkProperties);<a name="line.71"></a>
+<span class="sourceLineNo">072</span><a name="line.72"></a>
+<span class="sourceLineNo">073</span>      // login the zookeeper server principal (if using security)<a name="line.73"></a>
+<span class="sourceLineNo">074</span>      ZKUtil.loginServer(conf, HConstants.ZK_SERVER_KEYTAB_FILE,<a name="line.74"></a>
+<span class="sourceLineNo">075</span>        HConstants.ZK_SERVER_KERBEROS_PRINCIPAL,<a name="line.75"></a>
+<span class="sourceLineNo">076</span>        zkConfig.getClientPortAddress().getHostName());<a name="line.76"></a>
+<span class="sourceLineNo">077</span><a name="line.77"></a>
+<span class="sourceLineNo">078</span>      runZKServer(zkConfig);<a name="line.78"></a>
+<span class="sourceLineNo">079</span>    } catch (Exception e) {<a name="line.79"></a>
+<span class="sourceLineNo">080</span>      e.printStackTrace();<a name="line.80"></a>
+<span class="sourceLineNo">081</span>      System.exit(-1);<a name="line.81"></a>
+<span class="sourceLineNo">082</span>    }<a name="line.82"></a>
+<span class="sourceLineNo">083</span>  }<a name="line.83"></a>
+<span class="sourceLineNo">084</span><a name="line.84"></a>
+<span class="sourceLineNo">085</span>  private static void runZKServer(QuorumPeerConfig zkConfig)<a name="line.85"></a>
+<span class="sourceLineNo">086</span>          throws UnknownHostException, IOException {<a name="line.86"></a>
+<span class="sourceLineNo">087</span>    if (zkConfig.isDistributed()) {<a name="line.87"></a>
+<span class="sourceLineNo">088</span>      QuorumPeerMain qp = new QuorumPeerMain();<a name="line.88"></a>
+<span class="sourceLineNo">089</span>      qp.runFromConfig(zkConfig);<a name="line.89"></a>
+<span class="sourceLineNo">090</span>    } else {<a name="line.90"></a>
+<span class="sourceLineNo">091</span>      ZooKeeperServerMain zk = new ZooKeeperServerMain();<a name="line.91"></a>
+<span class="sourceLineNo">092</span>      ServerConfig serverConfig = new ServerConfig();<a name="line.92"></a>
+<span class="sourceLineNo">093</span>      serverConfig.readFrom(zkConfig);<a name="line.93"></a>
+<span class="sourceLineNo">094</span>      zk.runFromConfig(serverConfig);<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><a name="line.97"></a>
+<span class="sourceLineNo">098</span>  private static boolean addressIsLocalHost(String address) {<a name="line.98"></a>
+<span class="sourceLineNo">099</span>    return address.equals("localhost") || address.equals("127.0.0.1");<a name="line.99"></a>
+<span class="sourceLineNo">100</span>  }<a name="line.100"></a>
 <span class="sourceLineNo">101</span><a name="line.101"></a>
-<span class="sourceLineNo">102</span>    Configuration conf = HBaseConfiguration.create();<a name="line.102"></a>
-<span class="sourceLineNo">103</span>    String myAddress = Strings.domainNamePointerToHostName(DNS.getDefaultHost(<a name="line.103"></a>
-<span class="sourceLineNo">104</span>        conf.get("hbase.zookeeper.dns.interface","default"),<a name="line.104"></a>
-<span class="sourceLineNo">105</span>        conf.get("hbase.zookeeper.dns.nameserver","default")));<a name="line.105"></a>
-<span class="sourceLineNo">106</span><a name="line.106"></a>
-<span class="sourceLineNo">107</span>    List&lt;String&gt; ips = new ArrayList&lt;&gt;();<a name="line.107"></a>
-<span class="sourceLineNo">108</span><a name="line.108"></a>
-<span class="sourceLineNo">109</span>    // Add what could be the best (configured) match<a name="line.109"></a>
-<span class="sourceLineNo">110</span>    ips.add(myAddress.contains(".") ?<a name="line.110"></a>
-<span class="sourceLineNo">111</span>        myAddress :<a name="line.111"></a>
-<span class="sourceLineNo">112</span>        StringUtils.simpleHostname(myAddress));<a name="line.112"></a>
-<span class="sourceLineNo">113</span><a name="line.113"></a>
-<span class="sourceLineNo">114</span>    // For all nics get all hostnames and IPs<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    Enumeration&lt;?&gt; nics = NetworkInterface.getNetworkInterfaces();<a name="line.115"></a>
-<span class="sourceLineNo">116</span>    while(nics.hasMoreElements()) {<a name="line.116"></a>
-<span class="sourceLineNo">117</span>      Enumeration&lt;?&gt; rawAdrs =<a name="line.117"></a>
-<span class="sourceLineNo">118</span>          ((NetworkInterface)nics.nextElement()).getInetAddresses();<a name="line.118"></a>
-<span class="sourceLineNo">119</span>      while(rawAdrs.hasMoreElements()) {<a name="line.119"></a>
-<span class="sourceLineNo">120</span>        InetAddress inet = (InetAddress) rawAdrs.nextElement();<a name="line.120"></a>
-<span class="sourceLineNo">121</span>        ips.add(StringUtils.simpleHostname(inet.getHostName()));<a name="line.121"></a>
-<span class="sourceLineNo">122</span>        ips.add(inet.getHostAddress());<a name="line.122"></a>
-<span class="sourceLineNo">123</span>      }<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    }<a name="line.124"></a>
-<span class="sourceLineNo">125</span><a name="line.125"></a>
-<span class="sourceLineNo">126</span>    for (Entry&lt;Object, Object&gt; entry : properties.entrySet()) {<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      String key = entry.getKey().toString().trim();<a name="line.127"></a>
-<span class="sourceLineNo">128</span>      String value = entry.getValue().toString().trim();<a name="line.128"></a>
-<span class="sourceLineNo">129</span>      if (key.startsWith("server.")) {<a name="line.129"></a>
-<span class="sourceLineNo">130</span>        int dot = key.indexOf('.');<a name="line.130"></a>
-<span class="sourceLineNo">131</span>        long id = Long.parseLong(key.substring(dot + 1));<a name="line.131"></a>
-<span class="sourceLineNo">132</span>        String[] parts = value.split(":");<a name="line.132"></a>
-<span class="sourceLineNo">133</span>        String address = parts[0];<a name="line.133"></a>
-<span class="sourceLineNo">134</span>        if (addressIsLocalHost(address) || ips.contains(address)) {<a name="line.134"></a>
-<span class="sourceLineNo">135</span>          myId = id;<a name="line.135"></a>
-<span class="sourceLineNo">136</span>          break;<a name="line.136"></a>
-<span class="sourceLineNo">137</span>        }<a name="line.137"></a>
-<span class="sourceLineNo">138</span>      }<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    }<a name="line.139"></a>
-<span class="sourceLineNo">140</span><a name="line.140"></a>
-<span class="sourceLineNo">141</span>    // Set the max session timeout from the provided client-side timeout<a name="line.141"></a>
-<span class="sourceLineNo">142</span>    properties.setProperty("maxSessionTimeout",<a name="line.142"></a>
-<span class="sourceLineNo">143</span>      conf.get(HConstants.ZK_SESSION_TIMEOUT, Integer.toString(HConstants.DEFAULT_ZK_SESSION_TIMEOUT)));<a name="line.143"></a>
-<span class="sourceLineNo">144</span><a name="line.144"></a>
-<span class="sourceLineNo">145</span>    if (myId == -1) {<a name="line.145"></a>
-<span class="sourceLineNo">146</span>      throw new IOException("Could not find my address: " + myAddress +<a name="line.146"></a>
-<span class="sourceLineNo">147</span>                            " in list of ZooKeeper quorum servers");<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>    String dataDirStr = properties.get("dataDir").toString().trim();<a name="line.150"></a>
-<span class="sourceLineNo">151</span>    File dataDir = new File(dataDirStr);<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    if (!dataDir.isDirectory()) {<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      if (!dataDir.mkdirs()) {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>        throw new IOException("Unable to create data dir " + dataDir);<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>    File myIdFile = new File(dataDir, "myid");<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    PrintWriter w = new PrintWriter(myIdFile, StandardCharsets.UTF_8.name());<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    w.println(myId);<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    w.close();<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">102</span>  static void writeMyID(Properties properties) throws IOException {<a name="line.102"></a>
+<span class="sourceLineNo">103</span>    long myId = -1;<a name="line.103"></a>
+<span class="sourceLineNo">104</span><a name="line.104"></a>
+<span class="sourceLineNo">105</span>    Configuration conf = HBaseConfiguration.create();<a name="line.105"></a>
+<span class="sourceLineNo">106</span>    String myAddress = Strings.domainNamePointerToHostName(DNS.getDefaultHost(<a name="line.106"></a>
+<span class="sourceLineNo">107</span>        conf.get("hbase.zookeeper.dns.interface","default"),<a name="line.107"></a>
+<span class="sourceLineNo">108</span>        conf.get("hbase.zookeeper.dns.nameserver","default")));<a name="line.108"></a>
+<span class="sourceLineNo">109</span><a name="line.109"></a>
+<span class="sourceLineNo">110</span>    List&lt;String&gt; ips = new ArrayList&lt;&gt;();<a name="line.110"></a>
+<span class="sourceLineNo">111</span><a name="line.111"></a>
+<span class="sourceLineNo">112</span>    // Add what could be the best (configured) match<a name="line.112"></a>
+<span class="sourceLineNo">113</span>    ips.add(myAddress.contains(".") ?<a name="line.113"></a>
+<span class="sourceLineNo">114</span>        myAddress :<a name="line.114"></a>
+<span class="sourceLineNo">115</span>        StringUtils.simpleHostname(myAddress));<a name="line.115"></a>
+<span class="sourceLineNo">116</span><a name="line.116"></a>
+<span class="sourceLineNo">117</span>    // For all nics get all hostnames and IPs<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    Enumeration&lt;?&gt; nics = NetworkInterface.getNetworkInterfaces();<a name="line.118"></a>
+<span class="sourceLineNo">119</span>    while(nics.hasMoreElements()) {<a name="line.119"></a>
+<span class="sourceLineNo">120</span>      Enumeration&lt;?&gt; rawAdrs =<a name="line.120"></a>
+<span class="sourceLineNo">121</span>          ((NetworkInterface)nics.nextElement()).getInetAddresses();<a name="line.121"></a>
+<span class="sourceLineNo">122</span>      while(rawAdrs.hasMoreElements()) {<a name="line.122"></a>
+<span class="sourceLineNo">123</span>        InetAddress inet = (InetAddress) rawAdrs.nextElement();<a name="line.123"></a>
+<span class="sourceLineNo">124</span>        ips.add(StringUtils.simpleHostname(inet.getHostName()));<a name="line.124"></a>
+<span class="sourceLineNo">125</span>        ips.add(inet.getHostAddress());<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>    for (Entry&lt;Object, Object&gt; entry : properties.entrySet()) {<a name="line.129"></a>
+<span class="sourceLineNo">130</span>      String key = entry.getKey().toString().trim();<a name="line.130"></a>
+<span class="sourceLineNo">131</span>      String value = entry.getValue().toString().trim();<a name="line.131"></a>
+<span class="sourceLineNo">132</span>      if (key.startsWith("server.")) {<a name="line.132"></a>
+<span class="sourceLineNo">133</span>        int dot = key.indexOf('.');<a name="line.133"></a>
+<span class="sourceLineNo">134</span>        long id = Long.parseLong(key.substring(dot + 1));<a name="line.134"></a>
+<span class="sourceLineNo">135</span>        String[] parts = value.split(":");<a name="line.135"></a>
+<span class="sourceLineNo">136</span>        String address = parts[0];<a name="line.136"></a>
+<span class="sourceLineNo">137</span>        if (addressIsLocalHost(address) || ips.contains(address)) {<a name="line.137"></a>
+<span class="sourceLineNo">138</span>          myId = id;<a name="line.138"></a>
+<span class="sourceLineNo">139</span>          break;<a name="line.139"></a>
+<span class="sourceLineNo">140</span>        }<a name="line.140"></a>
+<span class="sourceLineNo">141</span>      }<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    }<a name="line.142"></a>
+<span class="sourceLineNo">143</span><a name="line.143"></a>
+<span class="sourceLineNo">144</span>    // Set the max session timeout from the provided client-side timeout<a name="line.144"></a>
+<span class="sourceLineNo">145</span>    properties.setProperty("maxSessionTimeout", conf.get(HConstants.ZK_SESSION_TIMEOUT,<a name="line.145"></a>
+<span class="sourceLineNo">146</span>            Integer.toString(HConstants.DEFAULT_ZK_SESSION_TIMEOUT)));<a name="line.146"></a>
+<span class="sourceLineNo">147</span><a name="line.147"></a>
+<span class="sourceLineNo">148</span>    if (myId == -1) {<a name="line.148"></a>
+<span class="sourceLineNo">149</span>      throw new IOException("Could not find my address: " + myAddress +<a name="line.149"></a>
+<span class="sourceLineNo">150</span>                            " in list of ZooKeeper quorum servers");<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    }<a name="line.151"></a>
+<span class="sourceLineNo">152</span><a name="line.152"></a>
+<span class="sourceLineNo">153</span>    String dataDirStr = properties.get("dataDir").toString().trim();<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    File dataDir = new File(dataDirStr);<a name="line.154"></a>
+<span class="sourceLineNo">155</span>    if (!dataDir.isDirectory()) {<a name="line.155"></a>
+<span class="sourceLineNo">156</span>      if (!dataDir.mkdirs()) {<a name="line.156"></a>
+<span class="sourceLineNo">157</span>        throw new IOException("Unable to create data dir " + dataDir);<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><a name="line.160"></a>
+<span class="sourceLineNo">161</span>    File myIdFile = new File(dataDir, "myid");<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    PrintWriter w = new PrintWriter(myIdFile, StandardCharsets.UTF_8.name());<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    w.println(myId);<a name="line.163"></a>
+<span class="sourceLineNo">164</span>    w.close();<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>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/LoadBalancerTracker.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/LoadBalancerTracker.html b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/LoadBalancerTracker.html
index f845ae6..3a74b61 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/LoadBalancerTracker.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/LoadBalancerTracker.html
@@ -29,77 +29,80 @@
 <span class="sourceLineNo">021</span><a name="line.21"></a>
 <span class="sourceLineNo">022</span>import org.apache.commons.logging.Log;<a name="line.22"></a>
 <span class="sourceLineNo">023</span>import org.apache.commons.logging.LogFactory;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.Abortable;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.LoadBalancerProtos;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.zookeeper.KeeperException;<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> * Tracks the load balancer state up in ZK<a name="line.33"></a>
-<span class="sourceLineNo">034</span> */<a name="line.34"></a>
-<span class="sourceLineNo">035</span>@InterfaceAudience.Private<a name="line.35"></a>
-<span class="sourceLineNo">036</span>public class LoadBalancerTracker extends ZKNodeTracker {<a name="line.36"></a>
-<span class="sourceLineNo">037</span>  private static final Log LOG = LogFactory.getLog(LoadBalancerTracker.class);<a name="line.37"></a>
-<span class="sourceLineNo">038</span><a name="line.38"></a>
-<span class="sourceLineNo">039</span>  public LoadBalancerTracker(ZKWatcher watcher,<a name="line.39"></a>
-<span class="sourceLineNo">040</span>      Abortable abortable) {<a name="line.40"></a>
-<span class="sourceLineNo">041</span>    super(watcher, watcher.znodePaths.balancerZNode, abortable);<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>  /**<a name="line.44"></a>
-<span class="sourceLineNo">045</span>   * Return true if the balance switch is on, false otherwise<a name="line.45"></a>
-<span class="sourceLineNo">046</span>   */<a name="line.46"></a>
-<span class="sourceLineNo">047</span>  public boolean isBalancerOn() {<a name="line.47"></a>
-<span class="sourceLineNo">048</span>    byte [] upData = super.getData(false);<a name="line.48"></a>
-<span class="sourceLineNo">049</span>    try {<a name="line.49"></a>
-<span class="sourceLineNo">050</span>      // if data in ZK is null, use default of on.<a name="line.50"></a>
-<span class="sourceLineNo">051</span>      return upData == null || parseFrom(upData).getBalancerOn();<a name="line.51"></a>
-<span class="sourceLineNo">052</span>    } catch (DeserializationException dex) {<a name="line.52"></a>
-<span class="sourceLineNo">053</span>      LOG.error("ZK state for LoadBalancer could not be parsed " + Bytes.toStringBinary(upData));<a name="line.53"></a>
-<span class="sourceLineNo">054</span>      // return false to be safe.<a name="line.54"></a>
-<span class="sourceLineNo">055</span>      return false;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>    }<a name="line.56"></a>
-<span class="sourceLineNo">057</span>  }<a name="line.57"></a>
-<span class="sourceLineNo">058</span><a name="line.58"></a>
-<span class="sourceLineNo">059</span>  /**<a name="line.59"></a>
-<span class="sourceLineNo">060</span>   * Set the balancer on/off<a name="line.60"></a>
-<span class="sourceLineNo">061</span>   * @param balancerOn<a name="line.61"></a>
-<span class="sourceLineNo">062</span>   * @throws KeeperException<a name="line.62"></a>
-<span class="sourceLineNo">063</span>   */<a name="line.63"></a>
-<span class="sourceLineNo">064</span>  public void setBalancerOn(boolean balancerOn) throws KeeperException {<a name="line.64"></a>
-<span class="sourceLineNo">065</span>  byte [] upData = toByteArray(balancerOn);<a name="line.65"></a>
-<span class="sourceLineNo">066</span>    try {<a name="line.66"></a>
-<span class="sourceLineNo">067</span>      ZKUtil.setData(watcher, watcher.znodePaths.balancerZNode, upData);<a name="line.67"></a>
-<span class="sourceLineNo">068</span>    } catch(KeeperException.NoNodeException nne) {<a name="line.68"></a>
-<span class="sourceLineNo">069</span>      ZKUtil.createAndWatch(watcher, watcher.znodePaths.balancerZNode, upData);<a name="line.69"></a>
-<span class="sourceLineNo">070</span>    }<a name="line.70"></a>
-<span class="sourceLineNo">071</span>    super.nodeDataChanged(watcher.znodePaths.balancerZNode);<a name="line.71"></a>
-<span class="sourceLineNo">072</span>  }<a name="line.72"></a>
-<span class="sourceLineNo">073</span><a name="line.73"></a>
-<span class="sourceLineNo">074</span>  private byte [] toByteArray(boolean isBalancerOn) {<a name="line.74"></a>
-<span class="sourceLineNo">075</span>    LoadBalancerProtos.LoadBalancerState.Builder builder =<a name="line.75"></a>
-<span class="sourceLineNo">076</span>      LoadBalancerProtos.LoadBalancerState.newBuilder();<a name="line.76"></a>
-<span class="sourceLineNo">077</span>    builder.setBalancerOn(isBalancerOn);<a name="line.77"></a>
-<span class="sourceLineNo">078</span>    return ProtobufUtil.prependPBMagic(builder.build().toByteArray());<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 LoadBalancerProtos.LoadBalancerState parseFrom(byte [] pbBytes)<a name="line.81"></a>
-<span class="sourceLineNo">082</span>  throws DeserializationException {<a name="line.82"></a>
-<span class="sourceLineNo">083</span>    ProtobufUtil.expectPBMagicPrefix(pbBytes);<a name="line.83"></a>
-<span class="sourceLineNo">084</span>    LoadBalancerProtos.LoadBalancerState.Builder builder =<a name="line.84"></a>
-<span class="sourceLineNo">085</span>      LoadBalancerProtos.LoadBalancerState.newBuilder();<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    try {<a name="line.86"></a>
-<span class="sourceLineNo">087</span>      int magicLen = ProtobufUtil.lengthOfPBMagic();<a name="line.87"></a>
-<span class="sourceLineNo">088</span>      ProtobufUtil.mergeFrom(builder, pbBytes, magicLen, pbBytes.length - magicLen);<a name="line.88"></a>
-<span class="sourceLineNo">089</span>    } catch (IOException e) {<a name="line.89"></a>
-<span class="sourceLineNo">090</span>      throw new DeserializationException(e);<a name="line.90"></a>
-<span class="sourceLineNo">091</span>    }<a name="line.91"></a>
-<span class="sourceLineNo">092</span>    return builder.build();<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">024</span>import org.apache.hadoop.hbase.Abortable;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.zookeeper.KeeperException;<a name="line.28"></a>
+<span class="sourceLineNo">029</span><a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.LoadBalancerProtos;<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> * Tracks the load balancer state up in ZK<a name="line.34"></a>
+<span class="sourceLineNo">035</span> */<a name="line.35"></a>
+<span class="sourceLineNo">036</span>@InterfaceAudience.Private<a name="line.36"></a>
+<span class="sourceLineNo">037</span>public class LoadBalancerTracker extends ZKNodeTracker {<a name="line.37"></a>
+<span class="sourceLineNo">038</span>  private static final Log LOG = LogFactory.getLog(LoadBalancerTracker.class);<a name="line.38"></a>
+<span class="sourceLineNo">039</span><a name="line.39"></a>
+<span class="sourceLineNo">040</span>  public LoadBalancerTracker(ZKWatcher watcher,<a name="line.40"></a>
+<span class="sourceLineNo">041</span>      Abortable abortable) {<a name="line.41"></a>
+<span class="sourceLineNo">042</span>    super(watcher, watcher.znodePaths.balancerZNode, abortable);<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>  /**<a name="line.45"></a>
+<span class="sourceLineNo">046</span>   * Return true if the balance switch is on, false otherwise<a name="line.46"></a>
+<span class="sourceLineNo">047</span>   */<a name="line.47"></a>
+<span class="sourceLineNo">048</span>  public boolean isBalancerOn() {<a name="line.48"></a>
+<span class="sourceLineNo">049</span>    byte [] upData = super.getData(false);<a name="line.49"></a>
+<span class="sourceLineNo">050</span>    try {<a name="line.50"></a>
+<span class="sourceLineNo">051</span>      // if data in ZK is null, use default of on.<a name="line.51"></a>
+<span class="sourceLineNo">052</span>      return upData == null || parseFrom(upData).getBalancerOn();<a name="line.52"></a>
+<span class="sourceLineNo">053</span>    } catch (DeserializationException dex) {<a name="line.53"></a>
+<span class="sourceLineNo">054</span>      LOG.error("ZK state for LoadBalancer could not be parsed " + Bytes.toStringBinary(upData));<a name="line.54"></a>
+<span class="sourceLineNo">055</span>      // return false to be safe.<a name="line.55"></a>
+<span class="sourceLineNo">056</span>      return false;<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><a name="line.59"></a>
+<span class="sourceLineNo">060</span>  /**<a name="line.60"></a>
+<span class="sourceLineNo">061</span>   * Set the balancer on/off.<a name="line.61"></a>
+<span class="sourceLineNo">062</span>   *<a name="line.62"></a>
+<span class="sourceLineNo">063</span>   * @param balancerOn true if the balancher should be on, false otherwise<a name="line.63"></a>
+<span class="sourceLineNo">064</span>   * @throws KeeperException if a ZooKeeper operation fails<a name="line.64"></a>
+<span class="sourceLineNo">065</span>   */<a name="line.65"></a>
+<span class="sourceLineNo">066</span>  public void setBalancerOn(boolean balancerOn) throws KeeperException {<a name="line.66"></a>
+<span class="sourceLineNo">067</span>    byte [] upData = toByteArray(balancerOn);<a name="line.67"></a>
+<span class="sourceLineNo">068</span><a name="line.68"></a>
+<span class="sourceLineNo">069</span>    try {<a name="line.69"></a>
+<span class="sourceLineNo">070</span>      ZKUtil.setData(watcher, watcher.znodePaths.balancerZNode, upData);<a name="line.70"></a>
+<span class="sourceLineNo">071</span>    } catch(KeeperException.NoNodeException nne) {<a name="line.71"></a>
+<span class="sourceLineNo">072</span>      ZKUtil.createAndWatch(watcher, watcher.znodePaths.balancerZNode, upData);<a name="line.72"></a>
+<span class="sourceLineNo">073</span>    }<a name="line.73"></a>
+<span class="sourceLineNo">074</span>    super.nodeDataChanged(watcher.znodePaths.balancerZNode);<a name="line.74"></a>
+<span class="sourceLineNo">075</span>  }<a name="line.75"></a>
+<span class="sourceLineNo">076</span><a name="line.76"></a>
+<span class="sourceLineNo">077</span>  private byte [] toByteArray(boolean isBalancerOn) {<a name="line.77"></a>
+<span class="sourceLineNo">078</span>    LoadBalancerProtos.LoadBalancerState.Builder builder =<a name="line.78"></a>
+<span class="sourceLineNo">079</span>      LoadBalancerProtos.LoadBalancerState.newBuilder();<a name="line.79"></a>
+<span class="sourceLineNo">080</span>    builder.setBalancerOn(isBalancerOn);<a name="line.80"></a>
+<span class="sourceLineNo">081</span>    return ProtobufUtil.prependPBMagic(builder.build().toByteArray());<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>  private LoadBalancerProtos.LoadBalancerState parseFrom(byte [] pbBytes)<a name="line.84"></a>
+<span class="sourceLineNo">085</span>  throws DeserializationException {<a name="line.85"></a>
+<span class="sourceLineNo">086</span>    ProtobufUtil.expectPBMagicPrefix(pbBytes);<a name="line.86"></a>
+<span class="sourceLineNo">087</span>    LoadBalancerProtos.LoadBalancerState.Builder builder =<a name="line.87"></a>
+<span class="sourceLineNo">088</span>      LoadBalancerProtos.LoadBalancerState.newBuilder();<a name="line.88"></a>
+<span class="sourceLineNo">089</span>    try {<a name="line.89"></a>
+<span class="sourceLineNo">090</span>      int magicLen = ProtobufUtil.lengthOfPBMagic();<a name="line.90"></a>
+<span class="sourceLineNo">091</span>      ProtobufUtil.mergeFrom(builder, pbBytes, magicLen, pbBytes.length - magicLen);<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    } catch (IOException e) {<a name="line.92"></a>
+<span class="sourceLineNo">093</span>      throw new DeserializationException(e);<a name="line.93"></a>
+<span class="sourceLineNo">094</span>    }<a name="line.94"></a>
+<span class="sourceLineNo">095</span>    return builder.build();<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>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/MasterAddressTracker.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/MasterAddressTracker.html b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/MasterAddressTracker.html
index de63140..dac1d61 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/MasterAddressTracker.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/MasterAddressTracker.html
@@ -31,159 +31,159 @@
 <span class="sourceLineNo">023</span>import org.apache.hadoop.hbase.Abortable;<a name="line.23"></a>
 <span class="sourceLineNo">024</span>import org.apache.hadoop.hbase.HConstants;<a name="line.24"></a>
 <span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.ServerName;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ZooKeeperProtos;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.zookeeper.KeeperException;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.zookeeper.data.Stat;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.shaded.com.google.protobuf.InvalidProtocolBufferException;<a name="line.33"></a>
-<span class="sourceLineNo">034</span><a name="line.34"></a>
-<span class="sourceLineNo">035</span>/**<a name="line.35"></a>
-<span class="sourceLineNo">036</span> * Manages the location of the current active Master for the RegionServer.<a name="line.36"></a>
-<span class="sourceLineNo">037</span> * &lt;p&gt;<a name="line.37"></a>
-<span class="sourceLineNo">038</span> * Listens for ZooKeeper events related to the master address. The node<a name="line.38"></a>
-<span class="sourceLineNo">039</span> * &lt;code&gt;/master&lt;/code&gt; will contain the address of the current master.<a name="line.39"></a>
-<span class="sourceLineNo">040</span> * This listener is interested in<a name="line.40"></a>
-<span class="sourceLineNo">041</span> * &lt;code&gt;NodeDeleted&lt;/code&gt; and &lt;code&gt;NodeCreated&lt;/code&gt; events on<a name="line.41"></a>
-<span class="sourceLineNo">042</span> * &lt;code&gt;/master&lt;/code&gt;.<a name="line.42"></a>
-<span class="sourceLineNo">043</span> * &lt;p&gt;<a name="line.43"></a>
-<span class="sourceLineNo">044</span> * Utilizes {@link ZKNodeTracker} for zk interactions.<a name="line.44"></a>
-<span class="sourceLineNo">045</span> * &lt;p&gt;<a name="line.45"></a>
-<span class="sourceLineNo">046</span> * You can get the current master via {@link #getMasterAddress()} or via<a name="line.46"></a>
-<span class="sourceLineNo">047</span> * {@link #getMasterAddress(ZKWatcher)} if you do not have a running<a name="line.47"></a>
-<span class="sourceLineNo">048</span> * instance of this Tracker in your context.<a name="line.48"></a>
-<span class="sourceLineNo">049</span> * &lt;p&gt;<a name="line.49"></a>
-<span class="sourceLineNo">050</span> * This class also includes utility for interacting with the master znode, for<a name="line.50"></a>
-<span class="sourceLineNo">051</span> * writing and reading the znode content.<a name="line.51"></a>
-<span class="sourceLineNo">052</span> */<a name="line.52"></a>
-<span class="sourceLineNo">053</span>@InterfaceAudience.Private<a name="line.53"></a>
-<span class="sourceLineNo">054</span>public class MasterAddressTracker extends ZKNodeTracker {<a name="line.54"></a>
-<span class="sourceLineNo">055</span>  /**<a name="line.55"></a>
-<span class="sourceLineNo">056</span>   * Construct a master address listener with the specified<a name="line.56"></a>
-<span class="sourceLineNo">057</span>   * &lt;code&gt;zookeeper&lt;/code&gt; reference.<a name="line.57"></a>
-<span class="sourceLineNo">058</span>   * &lt;p&gt;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>   * This constructor does not trigger any actions, you must call methods<a name="line.59"></a>
-<span class="sourceLineNo">060</span>   * explicitly.  Normally you will just want to execute {@link #start()} to<a name="line.60"></a>
-<span class="sourceLineNo">061</span>   * begin tracking of the master address.<a name="line.61"></a>
-<span class="sourceLineNo">062</span>   *<a name="line.62"></a>
-<span class="sourceLineNo">063</span>   * @param watcher zk reference and watcher<a name="line.63"></a>
-<span class="sourceLineNo">064</span>   * @param abortable abortable in case of fatal error<a name="line.64"></a>
-<span class="sourceLineNo">065</span>   */<a name="line.65"></a>
-<span class="sourceLineNo">066</span>  public MasterAddressTracker(ZKWatcher watcher, Abortable abortable) {<a name="line.66"></a>
-<span class="sourceLineNo">067</span>    super(watcher, watcher.znodePaths.masterAddressZNode, abortable);<a name="line.67"></a>
-<span class="sourceLineNo">068</span>  }<a name="line.68"></a>
-<span class="sourceLineNo">069</span><a name="line.69"></a>
-<span class="sourceLineNo">070</span>  /**<a name="line.70"></a>
-<span class="sourceLineNo">071</span>   * Get the address of the current master if one is available.  Returns null<a name="line.71"></a>
-<span class="sourceLineNo">072</span>   * if no current master.<a name="line.72"></a>
-<span class="sourceLineNo">073</span>   * @return Server name or null if timed out.<a name="line.73"></a>
-<span class="sourceLineNo">074</span>   */<a name="line.74"></a>
-<span class="sourceLineNo">075</span>  public ServerName getMasterAddress() {<a name="line.75"></a>
-<span class="sourceLineNo">076</span>    return getMasterAddress(false);<a name="line.76"></a>
-<span class="sourceLineNo">077</span>  }<a name="line.77"></a>
-<span class="sourceLineNo">078</span><a name="line.78"></a>
-<span class="sourceLineNo">079</span>  /**<a name="line.79"></a>
-<span class="sourceLineNo">080</span>   * Get the info port of the current master of one is available.<a name="line.80"></a>
-<span class="sourceLineNo">081</span>   * Return 0 if no current master or zookeeper is unavailable<a name="line.81"></a>
-<span class="sourceLineNo">082</span>   * @return info port or 0 if timed out<a name="line.82"></a>
-<span class="sourceLineNo">083</span>   */<a name="line.83"></a>
-<span class="sourceLineNo">084</span>  public int getMasterInfoPort() {<a name="line.84"></a>
-<span class="sourceLineNo">085</span>    try {<a name="line.85"></a>
-<span class="sourceLineNo">086</span>      final ZooKeeperProtos.Master master = parse(this.getData(false));<a name="line.86"></a>
-<span class="sourceLineNo">087</span>      if (master == null) {<a name="line.87"></a>
-<span class="sourceLineNo">088</span>        return 0;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>      }<a name="line.89"></a>
-<span class="sourceLineNo">090</span>      return master.getInfoPort();<a name="line.90"></a>
-<span class="sourceLineNo">091</span>    } catch (DeserializationException e) {<a name="line.91"></a>
-<span class="sourceLineNo">092</span>      LOG.warn("Failed parse master zk node data", e);<a name="line.92"></a>
-<span class="sourceLineNo">093</span>      return 0;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>    }<a name="line.94"></a>
-<span class="sourceLineNo">095</span>  }<a name="line.95"></a>
-<span class="sourceLineNo">096</span>  /**<a name="line.96"></a>
-<span class="sourceLineNo">097</span>   * Get the info port of the backup master if it is available.<a name="line.97"></a>
-<span class="sourceLineNo">098</span>   * Return 0 if no backup master or zookeeper is unavailable<a name="line.98"></a>
-<span class="sourceLineNo">099</span>   * @param sn server name of backup master<a name="line.99"></a>
-<span class="sourceLineNo">100</span>   * @return info port or 0 if timed out or exceptions<a name="line.100"></a>
-<span class="sourceLineNo">101</span>   */<a name="line.101"></a>
-<span class="sourceLineNo">102</span>  public int getBackupMasterInfoPort(final ServerName sn) {<a name="line.102"></a>
-<span class="sourceLineNo">103</span>    String backupZNode = ZNodePaths.joinZNode(watcher.znodePaths.backupMasterAddressesZNode,<a name="line.103"></a>
-<span class="sourceLineNo">104</span>      sn.toString());<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    try {<a name="line.105"></a>
-<span class="sourceLineNo">106</span>      byte[] data = ZKUtil.getData(watcher, backupZNode);<a name="line.106"></a>
-<span class="sourceLineNo">107</span>      final ZooKeeperProtos.Master backup = parse(data);<a name="line.107"></a>
-<span class="sourceLineNo">108</span>      if (backup == null) {<a name="line.108"></a>
-<span class="sourceLineNo">109</span>        return 0;<a name="line.109"></a>
-<span class="sourceLineNo">110</span>      }<a name="line.110"></a>
-<span class="sourceLineNo">111</span>      return backup.getInfoPort();<a name="line.111"></a>
-<span class="sourceLineNo">112</span>    } catch (Exception e) {<a name="line.112"></a>
-<span class="sourceLineNo">113</span>      LOG.warn("Failed to get backup master: " + sn + "'s info port.", e);<a name="line.113"></a>
-<span class="sourceLineNo">114</span>      return 0;<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    }<a name="line.115"></a>
-<span class="sourceLineNo">116</span>  }<a name="line.116"></a>
-<span class="sourceLineNo">117</span><a name="line.117"></a>
-<span class="sourceLineNo">118</span>  /**<a name="line.118"></a>
-<span class="sourceLineNo">119</span>   * Get the address of the current master if one is available.  Returns null<a name="line.119"></a>
-<span class="sourceLineNo">120</span>   * if no current master. If refresh is set, try to load the data from ZK again,<a name="line.120"></a>
-<span class="sourceLineNo">121</span>   * otherwise, cached data will be used.<a name="line.121"></a>
-<span class="sourceLineNo">122</span>   *<a name="line.122"></a>
-<span class="sourceLineNo">123</span>   * @param refresh whether to refresh the data by calling ZK directly.<a name="line.123"></a>
-<span class="sourceLineNo">124</span>   * @return Server name or null if timed out.<a name="line.124"></a>
-<span class="sourceLineNo">125</span>   */<a name="line.125"></a>
-<span class="sourceLineNo">126</span>  public ServerName getMasterAddress(final boolean refresh) {<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    try {<a name="line.127"></a>
-<span class="sourceLineNo">128</span>      return ProtobufUtil.parseServerNameFrom(super.getData(refresh));<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    } catch (DeserializationException e) {<a name="line.129"></a>
-<span class="sourceLineNo">130</span>      LOG.warn("Failed parse", e);<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      return null;<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><a name="line.134"></a>
-<span class="sourceLineNo">135</span>  /**<a name="line.135"></a>
-<span class="sourceLineNo">136</span>   * Get master address.<a name="line.136"></a>
-<span class="sourceLineNo">137</span>   * Use this instead of {@link #getMasterAddress()} if you do not have an<a name="line.137"></a>
-<span class="sourceLineNo">138</span>   * instance of this tracker in your context.<a name="line.138"></a>
-<span class="sourceLineNo">139</span>   * @param zkw ZKWatcher to use<a name="line.139"></a>
-<span class="sourceLineNo">140</span>   * @return ServerName stored in the the master address znode or null if no<a name="line.140"></a>
-<span class="sourceLineNo">141</span>   * znode present.<a name="line.141"></a>
-<span class="sourceLineNo">142</span>   * @throws KeeperException<a name="line.142"></a>
-<span class="sourceLineNo">143</span>   * @throws IOException<a name="line.143"></a>
-<span class="sourceLineNo">144</span>   */<a name="line.144"></a>
-<span class="sourceLineNo">145</span>  public static ServerName getMasterAddress(final ZKWatcher zkw)<a name="line.145"></a>
-<span class="sourceLineNo">146</span>  throws KeeperException, IOException {<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    byte [] data;<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    try {<a name="line.148"></a>
-<span class="sourceLineNo">149</span>      data = ZKUtil.getData(zkw, zkw.znodePaths.masterAddressZNode);<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    } catch (InterruptedException e) {<a name="line.150"></a>
-<span class="sourceLineNo">151</span>      throw new InterruptedIOException();<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    }<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    // TODO javadoc claims we return null in this case. :/<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    if (data == null){<a name="line.154"></a>
-<span class="sourceLineNo">155</span>      throw new IOException("Can't get master address from ZooKeeper; znode data == null");<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    }<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    try {<a name="line.157"></a>
-<span class="sourceLineNo">158</span>      return ProtobufUtil.parseServerNameFrom(data);<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    } catch (DeserializationException e) {<a name="line.159"></a>
-<span class="sourceLineNo">160</span>      KeeperException ke = new KeeperException.DataInconsistencyException();<a name="line.160"></a>
-<span class="sourceLineNo">161</span>      ke.initCause(e);<a name="line.161"></a>
-<span class="sourceLineNo">162</span>      throw ke;<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    }<a name="line.163"></a>
-<span class="sourceLineNo">164</span>  }<a name="line.164"></a>
-<span class="sourceLineNo">165</span><a name="line.165"></a>
-<span class="sourceLineNo">166</span>  /**<a name="line.166"></a>
-<span class="sourceLineNo">167</span>   * Get master info port.<a name="line.167"></a>
-<span class="sourceLineNo">168</span>   * Use this instead of {@link #getMasterInfoPort()} if you do not have an<a name="line.168"></a>
-<span class="sourceLineNo">169</span>   * instance of this tracker in your context.<a name="line.169"></a>
-<span class="sourceLineNo">170</span>   * @param zkw ZKWatcher to use<a name="line.170"></a>
-<span class="sourceLineNo">171</span>   * @return master info port in the the master address znode or null if no<a name="line.171"></a>
-<span class="sourceLineNo">172</span>   * znode present.<a name="line.172"></a>
-<span class="sourceLineNo">173</span>   * // TODO can't return null for 'int' return type. non-static verison returns 0<a name="line.173"></a>
-<span class="sourceLineNo">174</span>   * @throws KeeperException<a name="line.174"></a>
-<span class="sourceLineNo">175</span>   * @throws IOException<a name="line.175"></a>
-<span class="sourceLineNo">176</span>   */<a name="line.176"></a>
-<span class="sourceLineNo">177</span>  public static int getMasterInfoPort(final ZKWatcher zkw) throws KeeperException,<a name="line.177"></a>
-<span class="sourceLineNo">178</span>      IOException {<a name="line.178"></a>
+<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.zookeeper.KeeperException;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.zookeeper.data.Stat;<a name="line.29"></a>
+<span class="sourceLineNo">030</span><a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.shaded.com.google.protobuf.InvalidProtocolBufferException;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ZooKeeperProtos;<a name="line.34"></a>
+<span class="sourceLineNo">035</span><a name="line.35"></a>
+<span class="sourceLineNo">036</span>/**<a name="line.36"></a>
+<span class="sourceLineNo">037</span> * Manages the location of the current active Master for the RegionServer.<a name="line.37"></a>
+<span class="sourceLineNo">038</span> * &lt;p&gt;<a name="line.38"></a>
+<span class="sourceLineNo">039</span> * Listens for ZooKeeper events related to the master address. The node<a name="line.39"></a>
+<span class="sourceLineNo">040</span> * &lt;code&gt;/master&lt;/code&gt; will contain the address of the current master.<a name="line.40"></a>
+<span class="sourceLineNo">041</span> * This listener is interested in<a name="line.41"></a>
+<span class="sourceLineNo">042</span> * &lt;code&gt;NodeDeleted&lt;/code&gt; and &lt;code&gt;NodeCreated&lt;/code&gt; events on<a name="line.42"></a>
+<span class="sourceLineNo">043</span> * &lt;code&gt;/master&lt;/code&gt;.<a name="line.43"></a>
+<span class="sourceLineNo">044</span> * &lt;p&gt;<a name="line.44"></a>
+<span class="sourceLineNo">045</span> * Utilizes {@link ZKNodeTracker} for zk interactions.<a name="line.45"></a>
+<span class="sourceLineNo">046</span> * &lt;p&gt;<a name="line.46"></a>
+<span class="sourceLineNo">047</span> * You can get the current master via {@link #getMasterAddress()} or via<a name="line.47"></a>
+<span class="sourceLineNo">048</span> * {@link #getMasterAddress(ZKWatcher)} if you do not have a running<a name="line.48"></a>
+<span class="sourceLineNo">049</span> * instance of this Tracker in your context.<a name="line.49"></a>
+<span class="sourceLineNo">050</span> * &lt;p&gt;<a name="line.50"></a>
+<span class="sourceLineNo">051</span> * This class also includes utility for interacting with the master znode, for<a name="line.51"></a>
+<span class="sourceLineNo">052</span> * writing and reading the znode content.<a name="line.52"></a>
+<span class="sourceLineNo">053</span> */<a name="line.53"></a>
+<span class="sourceLineNo">054</span>@InterfaceAudience.Private<a name="line.54"></a>
+<span class="sourceLineNo">055</span>public class MasterAddressTracker extends ZKNodeTracker {<a name="line.55"></a>
+<span class="sourceLineNo">056</span>  /**<a name="line.56"></a>
+<span class="sourceLineNo">057</span>   * Construct a master address listener with the specified<a name="line.57"></a>
+<span class="sourceLineNo">058</span>   * &lt;code&gt;zookeeper&lt;/code&gt; reference.<a name="line.58"></a>
+<span class="sourceLineNo">059</span>   * &lt;p&gt;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>   * This constructor does not trigger any actions, you must call methods<a name="line.60"></a>
+<span class="sourceLineNo">061</span>   * explicitly.  Normally you will just want to execute {@link #start()} to<a name="line.61"></a>
+<span class="sourceLineNo">062</span>   * begin tracking of the master address.<a name="line.62"></a>
+<span class="sourceLineNo">063</span>   *<a name="line.63"></a>
+<span class="sourceLineNo">064</span>   * @param watcher zk reference and watcher<a name="line.64"></a>
+<span class="sourceLineNo">065</span>   * @param abortable abortable in case of fatal error<a name="line.65"></a>
+<span class="sourceLineNo">066</span>   */<a name="line.66"></a>
+<span class="sourceLineNo">067</span>  public MasterAddressTracker(ZKWatcher watcher, Abortable abortable) {<a name="line.67"></a>
+<span class="sourceLineNo">068</span>    super(watcher, watcher.znodePaths.masterAddressZNode, abortable);<a name="line.68"></a>
+<span class="sourceLineNo">069</span>  }<a name="line.69"></a>
+<span class="sourceLineNo">070</span><a name="line.70"></a>
+<span class="sourceLineNo">071</span>  /**<a name="line.71"></a>
+<span class="sourceLineNo">072</span>   * Get the address of the current master if one is available.  Returns null<a name="line.72"></a>
+<span class="sourceLineNo">073</span>   * if no current master.<a name="line.73"></a>
+<span class="sourceLineNo">074</span>   * @return Server name or null if timed out.<a name="line.74"></a>
+<span class="sourceLineNo">075</span>   */<a name="line.75"></a>
+<span class="sourceLineNo">076</span>  public ServerName getMasterAddress() {<a name="line.76"></a>
+<span class="sourceLineNo">077</span>    return getMasterAddress(false);<a name="line.77"></a>
+<span class="sourceLineNo">078</span>  }<a name="line.78"></a>
+<span class="sourceLineNo">079</span><a name="line.79"></a>
+<span class="sourceLineNo">080</span>  /**<a name="line.80"></a>
+<span class="sourceLineNo">081</span>   * Get the info port of the current master of one is available.<a name="line.81"></a>
+<span class="sourceLineNo">082</span>   * Return 0 if no current master or zookeeper is unavailable<a name="line.82"></a>
+<span class="sourceLineNo">083</span>   * @return info port or 0 if timed out<a name="line.83"></a>
+<span class="sourceLineNo">084</span>   */<a name="line.84"></a>
+<span class="sourceLineNo">085</span>  public int getMasterInfoPort() {<a name="line.85"></a>
+<span class="sourceLineNo">086</span>    try {<a name="line.86"></a>
+<span class="sourceLineNo">087</span>      final ZooKeeperProtos.Master master = parse(this.getData(false));<a name="line.87"></a>
+<span class="sourceLineNo">088</span>      if (master == null) {<a name="line.88"></a>
+<span class="sourceLineNo">089</span>        return 0;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>      }<a name="line.90"></a>
+<span class="sourceLineNo">091</span>      return master.getInfoPort();<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    } catch (DeserializationException e) {<a name="line.92"></a>
+<span class="sourceLineNo">093</span>      LOG.warn("Failed parse master zk node data", e);<a name="line.93"></a>
+<span class="sourceLineNo">094</span>      return 0;<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>  /**<a name="line.97"></a>
+<span class="sourceLineNo">098</span>   * Get the info port of the backup master if it is available.<a name="line.98"></a>
+<span class="sourceLineNo">099</span>   * Return 0 if no backup master or zookeeper is unavailable<a name="line.99"></a>
+<span class="sourceLineNo">100</span>   * @param sn server name of backup master<a name="line.100"></a>
+<span class="sourceLineNo">101</span>   * @return info port or 0 if timed out or exceptions<a name="line.101"></a>
+<span class="sourceLineNo">102</span>   */<a name="line.102"></a>
+<span class="sourceLineNo">103</span>  public int getBackupMasterInfoPort(final ServerName sn) {<a name="line.103"></a>
+<span class="sourceLineNo">104</span>    String backupZNode = ZNodePaths.joinZNode(watcher.znodePaths.backupMasterAddressesZNode,<a name="line.104"></a>
+<span class="sourceLineNo">105</span>      sn.toString());<a name="line.105"></a>
+<span class="sourceLineNo">106</span>    try {<a name="line.106"></a>
+<span class="sourceLineNo">107</span>      byte[] data = ZKUtil.getData(watcher, backupZNode);<a name="line.107"></a>
+<span class="sourceLineNo">108</span>      final ZooKeeperProtos.Master backup = parse(data);<a name="line.108"></a>
+<span class="sourceLineNo">109</span>      if (backup == null) {<a name="line.109"></a>
+<span class="sourceLineNo">110</span>        return 0;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>      }<a name="line.111"></a>
+<span class="sourceLineNo">112</span>      return backup.getInfoPort();<a name="line.112"></a>
+<span class="sourceLineNo">113</span>    } catch (Exception e) {<a name="line.113"></a>
+<span class="sourceLineNo">114</span>      LOG.warn("Failed to get backup master: " + sn + "'s info port.", e);<a name="line.114"></a>
+<span class="sourceLineNo">115</span>      return 0;<a name="line.115"></a>
+<span class="sourceLineNo">116</span>    }<a name="line.116"></a>
+<span class="sourceLineNo">117</span>  }<a name="line.117"></a>
+<span class="sourceLineNo">118</span><a name="line.118"></a>
+<span class="sourceLineNo">119</span>  /**<a name="line.119"></a>
+<span class="sourceLineNo">120</span>   * Get the address of the current master if one is available.  Returns null<a name="line.120"></a>
+<span class="sourceLineNo">121</span>   * if no current master. If refresh is set, try to load the data from ZK again,<a name="line.121"></a>
+<span class="sourceLineNo">122</span>   * otherwise, cached data will be used.<a name="line.122"></a>
+<span class="sourceLineNo">123</span>   *<a name="line.123"></a>
+<span class="sourceLineNo">124</span>   * @param refresh whether to refresh the data by calling ZK directly.<a name="line.124"></a>
+<span class="sourceLineNo">125</span>   * @return Server name or null if timed out.<a name="line.125"></a>
+<span class="sourceLineNo">126</span>   */<a name="line.126"></a>
+<span class="sourceLineNo">127</span>  public ServerName getMasterAddress(final boolean refresh) {<a name="line.127"></a>
+<span class="sourceLineNo">128</span>    try {<a name="line.128"></a>
+<span class="sourceLineNo">129</span>      return ProtobufUtil.parseServerNameFrom(super.getData(refresh));<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    } catch (DeserializationException e) {<a name="line.130"></a>
+<span class="sourceLineNo">131</span>      LOG.warn("Failed parse", e);<a name="line.131"></a>
+<span class="sourceLineNo">132</span>      return null;<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    }<a name="line.133"></a>
+<span class="sourceLineNo">134</span>  }<a name="line.134"></a>
+<span class="sourceLineNo">135</span><a name="line.135"></a>
+<span class="sourceLineNo">136</span>  /**<a name="line.136"></a>
+<span class="sourceLineNo">137</span>   * Get master address.<a name="line.137"></a>
+<span class="sourceLineNo">138</span>   * Use this instead of {@link #getMasterAddress()} if you do not have an<a name="line.138"></a>
+<span class="sourceLineNo">139</span>   * instance of this tracker in your context.<a name="line.139"></a>
+<span class="sourceLineNo">140</span>   * @param zkw ZKWatcher to use<a name="line.140"></a>
+<span class="sourceLineNo">141</span>   * @return ServerName stored in the the master address znode or null if no<a name="line.141"></a>
+<span class="sourceLineNo">142</span>   *         znode present.<a name="line.142"></a>
+<span class="sourceLineNo">143</span>   * @throws KeeperException if a ZooKeeper operation fails<a name="line.143"></a>
+<span class="sourceLineNo">144</span>   * @throws IOException if the address of the ZooKeeper master cannot be retrieved<a name="line.144"></a>
+<span class="sourceLineNo">145</span>   */<a name="line.145"></a>
+<span class="sourceLineNo">146</span>  public static ServerName getMasterAddress(final ZKWatcher zkw)<a name="line.146"></a>
+<span class="sourceLineNo">147</span>          throws KeeperException, IOException {<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    byte [] data;<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    try {<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      data = ZKUtil.getData(zkw, zkw.znodePaths.masterAddressZNode);<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    } catch (InterruptedException e) {<a name="line.151"></a>
+<span class="sourceLineNo">152</span>      throw new InterruptedIOException();<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    }<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    // TODO javadoc claims we return null in this case. :/<a name="line.154"></a>
+<span class="sourceLineNo">155</span>    if (data == null){<a name="line.155"></a>
+<span class="sourceLineNo">156</span>      throw new IOException("Can't get master address from ZooKeeper; znode data == null");<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    }<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    try {<a name="line.158"></a>
+<span class="sourceLineNo">159</span>      return ProtobufUtil.parseServerNameFrom(data);<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    } catch (DeserializationException e) {<a name="line.160"></a>
+<span class="sourceLineNo">161</span>      KeeperException ke = new KeeperException.DataInconsistencyException();<a name="line.161"></a>
+<span class="sourceLineNo">162</span>      ke.initCause(e);<a name="line.162"></a>
+<span class="sourceLineNo">163</span>      throw ke;<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>  /**<a name="line.167"></a>
+<span class="sourceLineNo">168</span>   * Get master info port.<a name="line.168"></a>
+<span class="sourceLineNo">169</span>   * Use this instead of {@link #getMasterInfoPort()} if you do not have an<a name="line.169"></a>
+<span class="sourceLineNo">170</span>   * instance of this tracker in your context.<a name="line.170"></a>
+<span class="sourceLineNo">171</span>   * @param zkw ZKWatcher to use<a name="line.171"></a>
+<span class="sourceLineNo">172</span>   * @return master info port in the the master address znode or null if no<a name="line.172"></a>
+<span class="sourceLineNo">173</span>   *         znode present.<a name="line.173"></a>
+<span class="sourceLineNo">174</span>   *         // TODO can't return null for 'int' return type. non-static verison returns 0<a name="line.174"></a>
+<span class="sourceLineNo">175</span>   * @throws KeeperException if a ZooKeeper operation fails<a name="line.175"></a>
+<span class="sourceLineNo">176</span>   * @throws IOException if the address of the ZooKeeper master cannot be retrieved<a name="line.176"></a>
+<span class="sourceLineNo">177</span>   */<a name="line.177"></a>
+<span class="sourceLineNo">178</span>  public static int getMasterInfoPort(final ZKWatcher zkw) throws KeeperException, IOException {<a name="line.178"></a>
 <span class="sourceLineNo">179</span>    byte[] data;<a name="line.179"></a>
 <span class="sourceLineNo">180</span>    try {<a name="line.180"></a>
 <span class="sourceLineNo">181</span>      data = ZKUtil.getData(zkw, zkw.znodePaths.masterAddressZNode);<a name="line.181"></a>
@@ -209,10 +209,10 @@
 <span class="sourceLineNo">201</span>   * path.<a name="line.201"></a>
 <span class="sourceLineNo">202</span>   * @param zkw The ZKWatcher to use.<a name="line.202"></a>
 <span class="sourceLineNo">203</span>   * @param znode Where to create the znode; could be at the top level or it<a name="line.203"></a>
-<span class="sourceLineNo">204</span>   * could be under backup masters<a name="line.204"></a>
+<span class="sourceLineNo">204</span>   *              could be under backup masters<a name="line.204"></a>
 <span class="sourceLineNo">205</span>   * @param master ServerName of the current master must not be null.<a name="line.205"></a>
 <span class="sourceLineNo">206</span>   * @return true if node created, false if not; a watch is set in both cases<a name="line.206"></a>
-<span class="sourceLineNo">207</span>   * @throws KeeperException<a name="line.207"></a>
+<span class="sourceLineNo">207</span>   * @throws KeeperException if a ZooKeeper operation fails<a name="line.207"></a>
 <span class="sourceLineNo">208</span>   */<a name="line.208"></a>
 <span class="sourceLineNo">209</span>  public static boolean setMasterAddress(final ZKWatcher zkw,<a name="line.209"></a>
 <span class="sourceLineNo">210</span>      final String znode, final ServerName master, int infoPort)<a name="line.210"></a>
@@ -231,7 +231,7 @@
 <span class="sourceLineNo">223</span>  /**<a name="line.223"></a>
 <span class="sourceLineNo">224</span>   * @param sn must not be null<a name="line.224"></a>
 <span class="sourceLineNo">225</span>   * @return Content of the master znode as a serialized pb with the pb<a name="line.225"></a>
-<span class="sourceLineNo">226</span>   * magic as prefix.<a name="line.226"></a>
+<span class="sourceLineNo">226</span>   *         magic as prefix.<a name="line.226"></a>
 <span class="sourceLineNo">227</span>   */<a name="line.227"></a>
 <span class="sourceLineNo">228</span>  static byte[] toByteArray(final ServerName sn, int infoPort) {<a name="line.228"></a>
 <span class="sourceLineNo">229</span>    ZooKeeperProtos.Master.Builder mbuilder = ZooKeeperProtos.Master.newBuilder();<a name="line.229"></a>
@@ -248,7 +248,7 @@
 <span class="sourceLineNo">240</span>  /**<a name="line.240"></a>
 <span class="sourceLineNo">241</span>   * @param data zookeeper data. may be null<a name="line.241"></a>
 <span class="sourceLineNo">242</span>   * @return pb object of master, null if no active master<a name="line.242"></a>
-<span class="sourceLineNo">243</span>   * @throws DeserializationException<a name="line.243"></a>
+<span class="sourceLineNo">243</span>   * @throws DeserializationException if the parsing fails<a name="line.243"></a>
 <span class="sourceLineNo">244</span>   */<a name="line.244"></a>
 <span class="sourceLineNo">245</span>  public static ZooKeeperProtos.Master parse(byte[] data) throws DeserializationException {<a name="line.245"></a>
 <span class="sourceLineNo">246</span>    if (data == null) {<a name="line.246"></a>


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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html
index 0c4f5b4..310c9ef 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html
@@ -41,9 +41,9 @@
 <span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.Abortable;<a name="line.33"></a>
 <span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.AuthUtil;<a name="line.34"></a>
 <span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.ZooKeeperConnectionException;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.security.Superusers;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.security.UserGroupInformation;<a name="line.38"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.security.Superusers;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.security.UserGroupInformation;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.38"></a>
 <span class="sourceLineNo">039</span>import org.apache.zookeeper.KeeperException;<a name="line.39"></a>
 <span class="sourceLineNo">040</span>import org.apache.zookeeper.WatchedEvent;<a name="line.40"></a>
 <span class="sourceLineNo">041</span>import org.apache.zookeeper.Watcher;<a name="line.41"></a>
@@ -93,294 +93,294 @@
 <span class="sourceLineNo">085</span>  // negotiation to complete<a name="line.85"></a>
 <span class="sourceLineNo">086</span>  public CountDownLatch saslLatch = new CountDownLatch(1);<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">088</span>  private final Configuration conf;<a name="line.88"></a>
 <span class="sourceLineNo">089</span><a name="line.89"></a>
-<span class="sourceLineNo">090</span>  private final Configuration conf;<a name="line.90"></a>
-<span class="sourceLineNo">091</span><a name="line.91"></a>
-<span class="sourceLineNo">092</span>  /* A pattern that matches a Kerberos name, borrowed from Hadoop's KerberosName */<a name="line.92"></a>
-<span class="sourceLineNo">093</span>  private static final Pattern NAME_PATTERN = Pattern.compile("([^/@]*)(/([^/@]*))?@([^/@]*)");<a name="line.93"></a>
-<span class="sourceLineNo">094</span><a name="line.94"></a>
-<span class="sourceLineNo">095</span>  /**<a name="line.95"></a>
-<span class="sourceLineNo">096</span>   * Instantiate a ZooKeeper connection and watcher.<a name="line.96"></a>
-<span class="sourceLineNo">097</span>   * @param identifier string that is passed to RecoverableZookeeper to be used as<a name="line.97"></a>
-<span class="sourceLineNo">098</span>   * identifier for this instance. Use null for default.<a name="line.98"></a>
-<span class="sourceLineNo">099</span>   * @throws IOException<a name="line.99"></a>
-<span class="sourceLineNo">100</span>   * @throws ZooKeeperConnectionException<a name="line.100"></a>
-<span class="sourceLineNo">101</span>   */<a name="line.101"></a>
-<span class="sourceLineNo">102</span>  public ZKWatcher(Configuration conf, String identifier,<a name="line.102"></a>
-<span class="sourceLineNo">103</span>                   Abortable abortable) throws ZooKeeperConnectionException, IOException {<a name="line.103"></a>
-<span class="sourceLineNo">104</span>    this(conf, identifier, abortable, false);<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>  /**<a name="line.107"></a>
-<span class="sourceLineNo">108</span>   * Instantiate a ZooKeeper connection and watcher.<a name="line.108"></a>
-<span class="sourceLineNo">109</span>   * @param conf<a name="line.109"></a>
-<span class="sourceLineNo">110</span>   * @param identifier string that is passed to RecoverableZookeeper to be used as identifier for<a name="line.110"></a>
-<span class="sourceLineNo">111</span>   *          this instance. Use null for default.<a name="line.111"></a>
-<span class="sourceLineNo">112</span>   * @param abortable Can be null if there is on error there is no host to abort: e.g. client<a name="line.112"></a>
-<span class="sourceLineNo">113</span>   *          context.<a name="line.113"></a>
-<span class="sourceLineNo">114</span>   * @param canCreateBaseZNode<a name="line.114"></a>
-<span class="sourceLineNo">115</span>   * @throws IOException<a name="line.115"></a>
-<span class="sourceLineNo">116</span>   * @throws ZooKeeperConnectionException<a name="line.116"></a>
-<span class="sourceLineNo">117</span>   */<a name="line.117"></a>
-<span class="sourceLineNo">118</span>  public ZKWatcher(Configuration conf, String identifier,<a name="line.118"></a>
-<span class="sourceLineNo">119</span>                   Abortable abortable, boolean canCreateBaseZNode)<a name="line.119"></a>
-<span class="sourceLineNo">120</span>  throws IOException, ZooKeeperConnectionException {<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    this.conf = conf;<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    this.quorum = ZKConfig.getZKQuorumServersString(conf);<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    this.prefix = identifier;<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    // Identifier will get the sessionid appended later below down when we<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    // handle the syncconnect event.<a name="line.125"></a>
-<span class="sourceLineNo">126</span>    this.identifier = identifier + "0x0";<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    this.abortable = abortable;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    this.znodePaths = new ZNodePaths(conf);<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    PendingWatcher pendingWatcher = new PendingWatcher();<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    this.recoverableZooKeeper = ZKUtil.connect(conf, quorum, pendingWatcher, identifier);<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    pendingWatcher.prepare(this);<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    if (canCreateBaseZNode) {<a name="line.132"></a>
-<span class="sourceLineNo">133</span>      try {<a name="line.133"></a>
-<span class="sourceLineNo">134</span>        createBaseZNodes();<a name="line.134"></a>
-<span class="sourceLineNo">135</span>      } catch (ZooKeeperConnectionException zce) {<a name="line.135"></a>
-<span class="sourceLineNo">136</span>        try {<a name="line.136"></a>
-<span class="sourceLineNo">137</span>          this.recoverableZooKeeper.close();<a name="line.137"></a>
-<span class="sourceLineNo">138</span>        } catch (InterruptedException ie) {<a name="line.138"></a>
-<span class="sourceLineNo">139</span>          LOG.debug("Encountered InterruptedException when closing " + this.recoverableZooKeeper);<a name="line.139"></a>
-<span class="sourceLineNo">140</span>          Thread.currentThread().interrupt();<a name="line.140"></a>
-<span class="sourceLineNo">141</span>        }<a name="line.141"></a>
-<span class="sourceLineNo">142</span>        throw zce;<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><a name="line.146"></a>
-<span class="sourceLineNo">147</span>  private void createBaseZNodes() throws ZooKeeperConnectionException {<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    try {<a name="line.148"></a>
-<span class="sourceLineNo">149</span>      // Create all the necessary "directories" of znodes<a name="line.149"></a>
-<span class="sourceLineNo">150</span>      ZKUtil.createWithParents(this, znodePaths.baseZNode);<a name="line.150"></a>
-<span class="sourceLineNo">151</span>      ZKUtil.createAndFailSilent(this, znodePaths.rsZNode);<a name="line.151"></a>
-<span class="sourceLineNo">152</span>      ZKUtil.createAndFailSilent(this, znodePaths.drainingZNode);<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      ZKUtil.createAndFailSilent(this, znodePaths.tableZNode);<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      ZKUtil.createAndFailSilent(this, znodePaths.splitLogZNode);<a name="line.154"></a>
-<span class="sourceLineNo">155</span>      ZKUtil.createAndFailSilent(this, znodePaths.backupMasterAddressesZNode);<a name="line.155"></a>
-<span class="sourceLineNo">156</span>      ZKUtil.createAndFailSilent(this, znodePaths.tableLockZNode);<a name="line.156"></a>
-<span class="sourceLineNo">157</span>      ZKUtil.createAndFailSilent(this, znodePaths.masterMaintZNode);<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    } catch (KeeperException e) {<a name="line.158"></a>
-<span class="sourceLineNo">159</span>      throw new ZooKeeperConnectionException(<a name="line.159"></a>
-<span class="sourceLineNo">160</span>          prefix("Unexpected KeeperException creating base node"), e);<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    }<a name="line.161"></a>
-<span class="sourceLineNo">162</span>  }<a name="line.162"></a>
-<span class="sourceLineNo">163</span><a name="line.163"></a>
-<span class="sourceLineNo">164</span>  /** Returns whether the znode is supposed to be readable by the client<a name="line.164"></a>
-<span class="sourceLineNo">165</span>   * and DOES NOT contain sensitive information (world readable).*/<a name="line.165"></a>
-<span class="sourceLineNo">166</span>  public boolean isClientReadable(String node) {<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    // Developer notice: These znodes are world readable. DO NOT add more znodes here UNLESS<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    // all clients need to access this data to work. Using zk for sharing data to clients (other<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    // than service lookup case is not a recommended design pattern.<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    return<a name="line.170"></a>
-<span class="sourceLineNo">171</span>        node.equals(znodePaths.baseZNode) ||<a name="line.171"></a>
-<span class="sourceLineNo">172</span>        znodePaths.isAnyMetaReplicaZNode(node) ||<a name="line.172"></a>
-<span class="sourceLineNo">173</span>        node.equals(znodePaths.masterAddressZNode) ||<a name="line.173"></a>
-<span class="sourceLineNo">174</span>        node.equals(znodePaths.clusterIdZNode)||<a name="line.174"></a>
-<span class="sourceLineNo">175</span>        node.equals(znodePaths.rsZNode) ||<a name="line.175"></a>
-<span class="sourceLineNo">176</span>        // /hbase/table and /hbase/table/foo is allowed, /hbase/table-lock is not<a name="line.176"></a>
-<span class="sourceLineNo">177</span>        node.equals(znodePaths.tableZNode) ||<a name="line.177"></a>
-<span class="sourceLineNo">178</span>        node.startsWith(znodePaths.tableZNode + "/");<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>   * On master start, we check the znode ACLs under the root directory and set the ACLs properly<a name="line.182"></a>
-<span class="sourceLineNo">183</span>   * if needed. If the cluster goes from an unsecure setup to a secure setup, this step is needed<a name="line.183"></a>
-<span class="sourceLineNo">184</span>   * so that the existing znodes created with open permissions are now changed with restrictive<a name="line.184"></a>
-<span class="sourceLineNo">185</span>   * perms.<a name="line.185"></a>
-<span class="sourceLineNo">186</span>   */<a name="line.186"></a>
-<span class="sourceLineNo">187</span>  public void checkAndSetZNodeAcls() {<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    if (!ZKUtil.isSecureZooKeeper(getConfiguration())) {<a name="line.188"></a>
-<span class="sourceLineNo">189</span>      LOG.info("not a secure deployment, proceeding");<a name="line.189"></a>
-<span class="sourceLineNo">190</span>      return;<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>    // Check the base znodes permission first. Only do the recursion if base znode's perms are not<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    // correct.<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    try {<a name="line.195"></a>
-<span class="sourceLineNo">196</span>      List&lt;ACL&gt; actualAcls = recoverableZooKeeper.getAcl(znodePaths.baseZNode, new Stat());<a name="line.196"></a>
-<span class="sourceLineNo">197</span><a name="line.197"></a>
-<span class="sourceLineNo">198</span>      if (!isBaseZnodeAclSetup(actualAcls)) {<a name="line.198"></a>
-<span class="sourceLineNo">199</span>        LOG.info("setting znode ACLs");<a name="line.199"></a>
-<span class="sourceLineNo">200</span>        setZnodeAclsRecursive(znodePaths.baseZNode);<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      }<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    } catch(KeeperException.NoNodeException nne) {<a name="line.202"></a>
-<span class="sourceLineNo">203</span>      return;<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    } catch(InterruptedException ie) {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      interruptedExceptionNoThrow(ie, false);<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    } catch (IOException|KeeperException e) {<a name="line.206"></a>
-<span class="sourceLineNo">207</span>      LOG.warn("Received exception while checking and setting zookeeper ACLs", e);<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><a name="line.210"></a>
-<span class="sourceLineNo">211</span>  /**<a name="line.211"></a>
-<span class="sourceLineNo">212</span>   * Set the znode perms recursively. This will do post-order recursion, so that baseZnode ACLs<a name="line.212"></a>
-<span class="sourceLineNo">213</span>   * will be set last in case the master fails in between.<a name="line.213"></a>
-<span class="sourceLineNo">214</span>   * @param znode<a name="line.214"></a>
-<span class="sourceLineNo">215</span>   */<a name="line.215"></a>
-<span class="sourceLineNo">216</span>  private void setZnodeAclsRecursive(String znode) throws KeeperException, InterruptedException {<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    List&lt;String&gt; children = recoverableZooKeeper.getChildren(znode, false);<a name="line.217"></a>
-<span class="sourceLineNo">218</span><a name="line.218"></a>
-<span class="sourceLineNo">219</span>    for (String child : children) {<a name="line.219"></a>
-<span class="sourceLineNo">220</span>      setZnodeAclsRecursive(ZNodePaths.joinZNode(znode, child));<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    }<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    List&lt;ACL&gt; acls = ZKUtil.createACL(this, znode, true);<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    LOG.info("Setting ACLs for znode:" + znode + " , acl:" + acls);<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    recoverableZooKeeper.setAcl(znode, acls, -1);<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>   * Checks whether the ACLs returned from the base znode (/hbase) is set for secure setup.<a name="line.228"></a>
-<span class="sourceLineNo">229</span>   * @param acls acls from zookeeper<a name="line.229"></a>
-<span class="sourceLineNo">230</span>   * @return whether ACLs are set for the base znode<a name="line.230"></a>
-<span class="sourceLineNo">231</span>   * @throws IOException<a name="line.231"></a>
-<span class="sourceLineNo">232</span>   */<a name="line.232"></a>
-<span class="sourceLineNo">233</span>  private boolean isBaseZnodeAclSetup(List&lt;ACL&gt; acls) throws IOException {<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    if (LOG.isDebugEnabled()) {<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      LOG.debug("Checking znode ACLs");<a name="line.235"></a>
-<span class="sourceLineNo">236</span>    }<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    String[] superUsers = conf.getStrings(Superusers.SUPERUSER_CONF_KEY);<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    // Check whether ACL set for all superusers<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    if (superUsers != null &amp;&amp; !checkACLForSuperUsers(superUsers, acls)) {<a name="line.239"></a>
-<span class="sourceLineNo">240</span>      return false;<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    }<a name="line.241"></a>
-<span class="sourceLineNo">242</span><a name="line.242"></a>
-<span class="sourceLineNo">243</span>    // this assumes that current authenticated user is the same as zookeeper client user<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    // configured via JAAS<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    String hbaseUser = UserGroupInformation.getCurrentUser().getShortUserName();<a name="line.245"></a>
-<span class="sourceLineNo">246</span><a name="line.246"></a>
-<span class="sourceLineNo">247</span>    if (acls.isEmpty()) {<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      if (LOG.isDebugEnabled()) {<a name="line.248"></a>
-<span class="sourceLineNo">249</span>        LOG.debug("ACL is empty");<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      }<a name="line.250"></a>
-<span class="sourceLineNo">251</span>      return false;<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>    for (ACL acl : acls) {<a name="line.254"></a>
-<span class="sourceLineNo">255</span>      int perms = acl.getPerms();<a name="line.255"></a>
-<span class="sourceLineNo">256</span>      Id id = acl.getId();<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      // We should only set at most 3 possible ACLs for 3 Ids. One for everyone, one for superuser<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      // and one for the hbase user<a name="line.258"></a>
-<span class="sourceLineNo">259</span>      if (Ids.ANYONE_ID_UNSAFE.equals(id)) {<a name="line.259"></a>
-<span class="sourceLineNo">260</span>        if (perms != Perms.READ) {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>          if (LOG.isDebugEnabled()) {<a name="line.261"></a>
-<span class="sourceLineNo">262</span>            LOG.debug(String.format("permissions for '%s' are not correct: have 0x%x, want 0x%x",<a name="line.262"></a>
-<span class="sourceLineNo">263</span>              id, perms, Perms.READ));<a name="line.263"></a>
-<span class="sourceLineNo">264</span>          }<a name="line.264"></a>
-<span class="sourceLineNo">265</span>          return false;<a name="line.265"></a>
-<span class="sourceLineNo">266</span>        }<a name="line.266"></a>
-<span class="sourceLineNo">267</span>      } else if (superUsers != null &amp;&amp; isSuperUserId(superUsers, id)) {<a name="line.267"></a>
-<span class="sourceLineNo">268</span>        if (perms != Perms.ALL) {<a name="line.268"></a>
-<span class="sourceLineNo">269</span>          if (LOG.isDebugEnabled()) {<a name="line.269"></a>
-<span class="sourceLineNo">270</span>            LOG.debug(String.format("permissions for '%s' are not correct: have 0x%x, want 0x%x",<a name="line.270"></a>
-<span class="sourceLineNo">271</span>              id, perms, Perms.ALL));<a name="line.271"></a>
-<span class="sourceLineNo">272</span>          }<a name="line.272"></a>
-<span class="sourceLineNo">273</span>          return false;<a name="line.273"></a>
-<span class="sourceLineNo">274</span>        }<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      } else if ("sasl".equals(id.getScheme())) {<a name="line.275"></a>
-<span class="sourceLineNo">276</span>        String name = id.getId();<a name="line.276"></a>
-<span class="sourceLineNo">277</span>        // If ZooKeeper recorded the Kerberos full name in the ACL, use only the shortname<a name="line.277"></a>
-<span class="sourceLineNo">278</span>        Matcher match = NAME_PATTERN.matcher(name);<a name="line.278"></a>
-<span class="sourceLineNo">279</span>        if (match.matches()) {<a name="line.279"></a>
-<span class="sourceLineNo">280</span>          name = match.group(1);<a name="line.280"></a>
-<span class="sourceLineNo">281</span>        }<a name="line.281"></a>
-<span class="sourceLineNo">282</span>        if (name.equals(hbaseUser)) {<a name="line.282"></a>
-<span class="sourceLineNo">283</span>          if (perms != Perms.ALL) {<a name="line.283"></a>
-<span class="sourceLineNo">284</span>            if (LOG.isDebugEnabled()) {<a name="line.284"></a>
-<span class="sourceLineNo">285</span>              LOG.debug(String.format("permissions for '%s' are not correct: have 0x%x, want 0x%x",<a name="line.285"></a>
-<span class="sourceLineNo">286</span>                id, perms, Perms.ALL));<a name="line.286"></a>
-<span class="sourceLineNo">287</span>            }<a name="line.287"></a>
-<span class="sourceLineNo">288</span>            return false;<a name="line.288"></a>
-<span class="sourceLineNo">289</span>          }<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        } else {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>          if (LOG.isDebugEnabled()) {<a name="line.291"></a>
-<span class="sourceLineNo">292</span>            LOG.debug("Unexpected shortname in SASL ACL: " + id);<a name="line.292"></a>
-<span class="sourceLineNo">293</span>          }<a name="line.293"></a>
-<span class="sourceLineNo">294</span>          return false;<a name="line.294"></a>
-<span class="sourceLineNo">295</span>        }<a name="line.295"></a>
-<span class="sourceLineNo">296</span>      } else {<a name="line.296"></a>
-<span class="sourceLineNo">297</span>        if (LOG.isDebugEnabled()) {<a name="line.297"></a>
-<span class="sourceLineNo">298</span>          LOG.debug("unexpected ACL id '" + id + "'");<a name="line.298"></a>
-<span class="sourceLineNo">299</span>        }<a name="line.299"></a>
-<span class="sourceLineNo">300</span>        return false;<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>    return true;<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>   * Validate whether ACL set for all superusers.<a name="line.307"></a>
-<span class="sourceLineNo">308</span>   */<a name="line.308"></a>
-<span class="sourceLineNo">309</span>  private boolean checkACLForSuperUsers(String[] superUsers, List&lt;ACL&gt; acls) {<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    for (String user : superUsers) {<a name="line.310"></a>
-<span class="sourceLineNo">311</span>      boolean hasAccess = false;<a name="line.311"></a>
-<span class="sourceLineNo">312</span>      // TODO: Validate super group members also when ZK supports setting node ACL for groups.<a name="line.312"></a>
-<span class="sourceLineNo">313</span>      if (!AuthUtil.isGroupPrincipal(user)) {<a name="line.313"></a>
-<span class="sourceLineNo">314</span>        for (ACL acl : acls) {<a name="line.314"></a>
-<span class="sourceLineNo">315</span>          if (user.equals(acl.getId().getId())) {<a name="line.315"></a>
-<span class="sourceLineNo">316</span>            if (acl.getPerms() == Perms.ALL) {<a name="line.316"></a>
-<span class="sourceLineNo">317</span>              hasAccess = true;<a name="line.317"></a>
-<span class="sourceLineNo">318</span>            } else {<a name="line.318"></a>
-<span class="sourceLineNo">319</span>              if (LOG.isDebugEnabled()) {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>                LOG.debug(String.format(<a name="line.320"></a>
-<span class="sourceLineNo">321</span>                  "superuser '%s' does not have correct permissions: have 0x%x, want 0x%x",<a name="line.321"></a>
-<span class="sourceLineNo">322</span>                  acl.getId().getId(), acl.getPerms(), Perms.ALL));<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>            break;<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>        if (!hasAccess) {<a name="line.328"></a>
-<span class="sourceLineNo">329</span>          return false;<a name="line.329"></a>
-<span class="sourceLineNo">330</span>        }<a name="line.330"></a>
-<span class="sourceLineNo">331</span>      }<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    }<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    return true;<a name="line.333"></a>
-<span class="sourceLineNo">334</span>  }<a name="line.334"></a>
-<span class="sourceLineNo">335</span><a name="line.335"></a>
-<span class="sourceLineNo">336</span>  /*<a name="line.336"></a>
-<span class="sourceLineNo">337</span>   * Validate whether ACL ID is superuser.<a name="line.337"></a>
-<span class="sourceLineNo">338</span>   */<a name="line.338"></a>
-<span class="sourceLineNo">339</span>  public static boolean isSuperUserId(String[] superUsers, Id id) {<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    for (String user : superUsers) {<a name="line.340"></a>
-<span class="sourceLineNo">341</span>      // TODO: Validate super group members also when ZK supports setting node ACL for groups.<a name="line.341"></a>
-<span class="sourceLineNo">342</span>      if (!AuthUtil.isGroupPrincipal(user) &amp;&amp; new Id("sasl", user).equals(id)) {<a name="line.342"></a>
-<span class="sourceLineNo">343</span>        return true;<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>    return false;<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 String toString() {<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    return this.identifier + ", quorum=" + quorum + ", baseZNode=" + znodePaths.baseZNode;<a name="line.351"></a>
-<span class="sourceLineNo">352</span>  }<a name="line.352"></a>
-<span class="sourceLineNo">353</span><a name="line.353"></a>
-<span class="sourceLineNo">354</span>  /**<a name="line.354"></a>
-<span class="sourceLineNo">355</span>   * Adds this instance's identifier as a prefix to the passed &lt;code&gt;str&lt;/code&gt;<a name="line.355"></a>
-<span class="sourceLineNo">356</span>   * @param str String to amend.<a name="line.356"></a>
-<span class="sourceLineNo">357</span>   * @return A new string with this instance's identifier as prefix: e.g.<a name="line.357"></a>
-<span class="sourceLineNo">358</span>   * if passed 'hello world', the returned string could be<a name="line.358"></a>
-<span class="sourceLineNo">359</span>   */<a name="line.359"></a>
-<span class="sourceLineNo">360</span>  public String prefix(final String str) {<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    return this.toString() + " " + str;<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>   * Get the znodes corresponding to the meta replicas from ZK<a name="line.365"></a>
-<span class="sourceLineNo">366</span>   * @return list of znodes<a name="line.366"></a>
-<span class="sourceLineNo">367</span>   * @throws KeeperException<a name="line.367"></a>
-<span class="sourceLineNo">368</span>   */<a name="line.368"></a>
-<span class="sourceLineNo">369</span>  public List&lt;String&gt; getMetaReplicaNodes() throws KeeperException {<a name="line.369"></a>
-<span class="sourceLineNo">370</span>    List&lt;String&gt; childrenOfBaseNode = ZKUtil.listChildrenNoWatch(this, znodePaths.baseZNode);<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    List&lt;String&gt; metaReplicaNodes = new ArrayList&lt;&gt;(2);<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    if (childrenOfBaseNode != null) {<a name="line.372"></a>
-<span class="sourceLineNo">373</span>      String pattern = conf.get("zookeeper.znode.metaserver","meta-region-server");<a name="line.373"></a>
-<span class="sourceLineNo">374</span>      for (String child : childrenOfBaseNode) {<a name="line.374"></a>
-<span class="sourceLineNo">375</span>        if (child.startsWith(pattern)) metaReplicaNodes.add(child);<a name="line.375"></a>
+<span class="sourceLineNo">090</span>  /* A pattern that matches a Kerberos name, borrowed from Hadoop's KerberosName */<a name="line.90"></a>
+<span class="sourceLineNo">091</span>  private static final Pattern NAME_PATTERN = Pattern.compile("([^/@]*)(/([^/@]*))?@([^/@]*)");<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>   * Instantiate a ZooKeeper connection and watcher.<a name="line.94"></a>
+<span class="sourceLineNo">095</span>   * @param identifier string that is passed to RecoverableZookeeper to be used as<a name="line.95"></a>
+<span class="sourceLineNo">096</span>   *                   identifier for this instance. Use null for default.<a name="line.96"></a>
+<span class="sourceLineNo">097</span>   * @throws IOException if the connection to ZooKeeper fails<a name="line.97"></a>
+<span class="sourceLineNo">098</span>   * @throws ZooKeeperConnectionException<a name="line.98"></a>
+<span class="sourceLineNo">099</span>   */<a name="line.99"></a>
+<span class="sourceLineNo">100</span>  public ZKWatcher(Configuration conf, String identifier,<a name="line.100"></a>
+<span class="sourceLineNo">101</span>                   Abortable abortable) throws ZooKeeperConnectionException, IOException {<a name="line.101"></a>
+<span class="sourceLineNo">102</span>    this(conf, identifier, abortable, false);<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>   * Instantiate a ZooKeeper connection and watcher.<a name="line.106"></a>
+<span class="sourceLineNo">107</span>   * @param conf the configuration to use<a name="line.107"></a>
+<span class="sourceLineNo">108</span>   * @param identifier string that is passed to RecoverableZookeeper to be used as identifier for<a name="line.108"></a>
+<span class="sourceLineNo">109</span>   *          this instance. Use null for default.<a name="line.109"></a>
+<span class="sourceLineNo">110</span>   * @param abortable Can be null if there is on error there is no host to abort: e.g. client<a name="line.110"></a>
+<span class="sourceLineNo">111</span>   *          context.<a name="line.111"></a>
+<span class="sourceLineNo">112</span>   * @param canCreateBaseZNode true if a base ZNode can be created<a name="line.112"></a>
+<span class="sourceLineNo">113</span>   * @throws IOException if the connection to ZooKeeper fails<a name="line.113"></a>
+<span class="sourceLineNo">114</span>   * @throws ZooKeeperConnectionException<a name="line.114"></a>
+<span class="sourceLineNo">115</span>   */<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  public ZKWatcher(Configuration conf, String identifier,<a name="line.116"></a>
+<span class="sourceLineNo">117</span>                   Abortable abortable, boolean canCreateBaseZNode)<a name="line.117"></a>
+<span class="sourceLineNo">118</span>  throws IOException, ZooKeeperConnectionException {<a name="line.118"></a>
+<span class="sourceLineNo">119</span>    this.conf = conf;<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    this.quorum = ZKConfig.getZKQuorumServersString(conf);<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    this.prefix = identifier;<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    // Identifier will get the sessionid appended later below down when we<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    // handle the syncconnect event.<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    this.identifier = identifier + "0x0";<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    this.abortable = abortable;<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    this.znodePaths = new ZNodePaths(conf);<a name="line.126"></a>
+<span class="sourceLineNo">127</span>    PendingWatcher pendingWatcher = new PendingWatcher();<a name="line.127"></a>
+<span class="sourceLineNo">128</span>    this.recoverableZooKeeper = ZKUtil.connect(conf, quorum, pendingWatcher, identifier);<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    pendingWatcher.prepare(this);<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    if (canCreateBaseZNode) {<a name="line.130"></a>
+<span class="sourceLineNo">131</span>      try {<a name="line.131"></a>
+<span class="sourceLineNo">132</span>        createBaseZNodes();<a name="line.132"></a>
+<span class="sourceLineNo">133</span>      } catch (ZooKeeperConnectionException zce) {<a name="line.133"></a>
+<span class="sourceLineNo">134</span>        try {<a name="line.134"></a>
+<span class="sourceLineNo">135</span>          this.recoverableZooKeeper.close();<a name="line.135"></a>
+<span class="sourceLineNo">136</span>        } catch (InterruptedException ie) {<a name="line.136"></a>
+<span class="sourceLineNo">137</span>          LOG.debug("Encountered InterruptedException when closing " + this.recoverableZooKeeper);<a name="line.137"></a>
+<span class="sourceLineNo">138</span>          Thread.currentThread().interrupt();<a name="line.138"></a>
+<span class="sourceLineNo">139</span>        }<a name="line.139"></a>
+<span class="sourceLineNo">140</span>        throw zce;<a name="line.140"></a>
+<span class="sourceLineNo">141</span>      }<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    }<a name="line.142"></a>
+<span class="sourceLineNo">143</span>  }<a name="line.143"></a>
+<span class="sourceLineNo">144</span><a name="line.144"></a>
+<span class="sourceLineNo">145</span>  private void createBaseZNodes() throws ZooKeeperConnectionException {<a name="line.145"></a>
+<span class="sourceLineNo">146</span>    try {<a name="line.146"></a>
+<span class="sourceLineNo">147</span>      // Create all the necessary "directories" of znodes<a name="line.147"></a>
+<span class="sourceLineNo">148</span>      ZKUtil.createWithParents(this, znodePaths.baseZNode);<a name="line.148"></a>
+<span class="sourceLineNo">149</span>      ZKUtil.createAndFailSilent(this, znodePaths.rsZNode);<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      ZKUtil.createAndFailSilent(this, znodePaths.drainingZNode);<a name="line.150"></a>
+<span class="sourceLineNo">151</span>      ZKUtil.createAndFailSilent(this, znodePaths.tableZNode);<a name="line.151"></a>
+<span class="sourceLineNo">152</span>      ZKUtil.createAndFailSilent(this, znodePaths.splitLogZNode);<a name="line.152"></a>
+<span class="sourceLineNo">153</span>      ZKUtil.createAndFailSilent(this, znodePaths.backupMasterAddressesZNode);<a name="line.153"></a>
+<span class="sourceLineNo">154</span>      ZKUtil.createAndFailSilent(this, znodePaths.tableLockZNode);<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      ZKUtil.createAndFailSilent(this, znodePaths.masterMaintZNode);<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    } catch (KeeperException e) {<a name="line.156"></a>
+<span class="sourceLineNo">157</span>      throw new ZooKeeperConnectionException(<a name="line.157"></a>
+<span class="sourceLineNo">158</span>          prefix("Unexpected KeeperException creating base node"), e);<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    }<a name="line.159"></a>
+<span class="sourceLineNo">160</span>  }<a name="line.160"></a>
+<span class="sourceLineNo">161</span><a name="line.161"></a>
+<span class="sourceLineNo">162</span>  /** Returns whether the znode is supposed to be readable by the client<a name="line.162"></a>
+<span class="sourceLineNo">163</span>   * and DOES NOT contain sensitive information (world readable).*/<a name="line.163"></a>
+<span class="sourceLineNo">164</span>  public boolean isClientReadable(String node) {<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    // Developer notice: These znodes are world readable. DO NOT add more znodes here UNLESS<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    // all clients need to access this data to work. Using zk for sharing data to clients (other<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    // than service lookup case is not a recommended design pattern.<a name="line.167"></a>
+<span class="sourceLineNo">168</span>    return<a name="line.168"></a>
+<span class="sourceLineNo">169</span>        node.equals(znodePaths.baseZNode) ||<a name="line.169"></a>
+<span class="sourceLineNo">170</span>        znodePaths.isAnyMetaReplicaZNode(node) ||<a name="line.170"></a>
+<span class="sourceLineNo">171</span>        node.equals(znodePaths.masterAddressZNode) ||<a name="line.171"></a>
+<span class="sourceLineNo">172</span>        node.equals(znodePaths.clusterIdZNode)||<a name="line.172"></a>
+<span class="sourceLineNo">173</span>        node.equals(znodePaths.rsZNode) ||<a name="line.173"></a>
+<span class="sourceLineNo">174</span>        // /hbase/table and /hbase/table/foo is allowed, /hbase/table-lock is not<a name="line.174"></a>
+<span class="sourceLineNo">175</span>        node.equals(znodePaths.tableZNode) ||<a name="line.175"></a>
+<span class="sourceLineNo">176</span>        node.startsWith(znodePaths.tableZNode + "/");<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>   * On master start, we check the znode ACLs under the root directory and set the ACLs properly<a name="line.180"></a>
+<span class="sourceLineNo">181</span>   * if needed. If the cluster goes from an unsecure setup to a secure setup, this step is needed<a name="line.181"></a>
+<span class="sourceLineNo">182</span>   * so that the existing znodes created with open permissions are now changed with restrictive<a name="line.182"></a>
+<span class="sourceLineNo">183</span>   * perms.<a name="line.183"></a>
+<span class="sourceLineNo">184</span>   */<a name="line.184"></a>
+<span class="sourceLineNo">185</span>  public void checkAndSetZNodeAcls() {<a name="line.185"></a>
+<span class="sourceLineNo">186</span>    if (!ZKUtil.isSecureZooKeeper(getConfiguration())) {<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      LOG.info("not a secure deployment, proceeding");<a name="line.187"></a>
+<span class="sourceLineNo">188</span>      return;<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>    // Check the base znodes permission first. Only do the recursion if base znode's perms are not<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    // correct.<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    try {<a name="line.193"></a>
+<span class="sourceLineNo">194</span>      List&lt;ACL&gt; actualAcls = recoverableZooKeeper.getAcl(znodePaths.baseZNode, new Stat());<a name="line.194"></a>
+<span class="sourceLineNo">195</span><a name="line.195"></a>
+<span class="sourceLineNo">196</span>      if (!isBaseZnodeAclSetup(actualAcls)) {<a name="line.196"></a>
+<span class="sourceLineNo">197</span>        LOG.info("setting znode ACLs");<a name="line.197"></a>
+<span class="sourceLineNo">198</span>        setZnodeAclsRecursive(znodePaths.baseZNode);<a name="line.198"></a>
+<span class="sourceLineNo">199</span>      }<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    } catch(KeeperException.NoNodeException nne) {<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      return;<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    } catch(InterruptedException ie) {<a name="line.202"></a>
+<span class="sourceLineNo">203</span>      interruptedExceptionNoThrow(ie, false);<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    } catch (IOException|KeeperException e) {<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      LOG.warn("Received exception while checking and setting zookeeper ACLs", e);<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    }<a name="line.206"></a>
+<span class="sourceLineNo">207</span>  }<a name="line.207"></a>
+<span class="sourceLineNo">208</span><a name="line.208"></a>
+<span class="sourceLineNo">209</span>  /**<a name="line.209"></a>
+<span class="sourceLineNo">210</span>   * Set the znode perms recursively. This will do post-order recursion, so that baseZnode ACLs<a name="line.210"></a>
+<span class="sourceLineNo">211</span>   * will be set last in case the master fails in between.<a name="line.211"></a>
+<span class="sourceLineNo">212</span>   * @param znode the ZNode to set the permissions for<a name="line.212"></a>
+<span class="sourceLineNo">213</span>   */<a name="line.213"></a>
+<span class="sourceLineNo">214</span>  private void setZnodeAclsRecursive(String znode) throws KeeperException, InterruptedException {<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    List&lt;String&gt; children = recoverableZooKeeper.getChildren(znode, false);<a name="line.215"></a>
+<span class="sourceLineNo">216</span><a name="line.216"></a>
+<span class="sourceLineNo">217</span>    for (String child : children) {<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      setZnodeAclsRecursive(ZNodePaths.joinZNode(znode, child));<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    }<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    List&lt;ACL&gt; acls = ZKUtil.createACL(this, znode, true);<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    LOG.info("Setting ACLs for znode:" + znode + " , acl:" + acls);<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    recoverableZooKeeper.setAcl(znode, acls, -1);<a name="line.222"></a>
+<span class="sourceLineNo">223</span>  }<a name="line.223"></a>
+<span class="sourceLineNo">224</span><a name="line.224"></a>
+<span class="sourceLineNo">225</span>  /**<a name="line.225"></a>
+<span class="sourceLineNo">226</span>   * Checks whether the ACLs returned from the base znode (/hbase) is set for secure setup.<a name="line.226"></a>
+<span class="sourceLineNo">227</span>   * @param acls acls from zookeeper<a name="line.227"></a>
+<span class="sourceLineNo">228</span>   * @return whether ACLs are set for the base znode<a name="line.228"></a>
+<span class="sourceLineNo">229</span>   * @throws IOException if getting the current user fails<a name="line.229"></a>
+<span class="sourceLineNo">230</span>   */<a name="line.230"></a>
+<span class="sourceLineNo">231</span>  private boolean isBaseZnodeAclSetup(List&lt;ACL&gt; acls) throws IOException {<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    if (LOG.isDebugEnabled()) {<a name="line.232"></a>
+<span class="sourceLineNo">233</span>      LOG.debug("Checking znode ACLs");<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    }<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    String[] superUsers = conf.getStrings(Superusers.SUPERUSER_CONF_KEY);<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    // Check whether ACL set for all superusers<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    if (superUsers != null &amp;&amp; !checkACLForSuperUsers(superUsers, acls)) {<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      return false;<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    }<a name="line.239"></a>
+<span class="sourceLineNo">240</span><a name="line.240"></a>
+<span class="sourceLineNo">241</span>    // this assumes that current authenticated user is the same as zookeeper client user<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    // configured via JAAS<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    String hbaseUser = UserGroupInformation.getCurrentUser().getShortUserName();<a name="line.243"></a>
+<span class="sourceLineNo">244</span><a name="line.244"></a>
+<span class="sourceLineNo">245</span>    if (acls.isEmpty()) {<a name="line.245"></a>
+<span class="sourceLineNo">246</span>      if (LOG.isDebugEnabled()) {<a name="line.246"></a>
+<span class="sourceLineNo">247</span>        LOG.debug("ACL is empty");<a name="line.247"></a>
+<span class="sourceLineNo">248</span>      }<a name="line.248"></a>
+<span class="sourceLineNo">249</span>      return false;<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    }<a name="line.250"></a>
+<span class="sourceLineNo">251</span><a name="line.251"></a>
+<span class="sourceLineNo">252</span>    for (ACL acl : acls) {<a name="line.252"></a>
+<span class="sourceLineNo">253</span>      int perms = acl.getPerms();<a name="line.253"></a>
+<span class="sourceLineNo">254</span>      Id id = acl.getId();<a name="line.254"></a>
+<span class="sourceLineNo">255</span>      // We should only set at most 3 possible ACLs for 3 Ids. One for everyone, one for superuser<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      // and one for the hbase user<a name="line.256"></a>
+<span class="sourceLineNo">257</span>      if (Ids.ANYONE_ID_UNSAFE.equals(id)) {<a name="line.257"></a>
+<span class="sourceLineNo">258</span>        if (perms != Perms.READ) {<a name="line.258"></a>
+<span class="sourceLineNo">259</span>          if (LOG.isDebugEnabled()) {<a name="line.259"></a>
+<span class="sourceLineNo">260</span>            LOG.debug(String.format("permissions for '%s' are not correct: have 0x%x, want 0x%x",<a name="line.260"></a>
+<span class="sourceLineNo">261</span>              id, perms, Perms.READ));<a name="line.261"></a>
+<span class="sourceLineNo">262</span>          }<a name="line.262"></a>
+<span class="sourceLineNo">263</span>          return false;<a name="line.263"></a>
+<span class="sourceLineNo">264</span>        }<a name="line.264"></a>
+<span class="sourceLineNo">265</span>      } else if (superUsers != null &amp;&amp; isSuperUserId(superUsers, id)) {<a name="line.265"></a>
+<span class="sourceLineNo">266</span>        if (perms != Perms.ALL) {<a name="line.266"></a>
+<span class="sourceLineNo">267</span>          if (LOG.isDebugEnabled()) {<a name="line.267"></a>
+<span class="sourceLineNo">268</span>            LOG.debug(String.format("permissions for '%s' are not correct: have 0x%x, want 0x%x",<a name="line.268"></a>
+<span class="sourceLineNo">269</span>              id, perms, Perms.ALL));<a name="line.269"></a>
+<span class="sourceLineNo">270</span>          }<a name="line.270"></a>
+<span class="sourceLineNo">271</span>          return false;<a name="line.271"></a>
+<span class="sourceLineNo">272</span>        }<a name="line.272"></a>
+<span class="sourceLineNo">273</span>      } else if ("sasl".equals(id.getScheme())) {<a name="line.273"></a>
+<span class="sourceLineNo">274</span>        String name = id.getId();<a name="line.274"></a>
+<span class="sourceLineNo">275</span>        // If ZooKeeper recorded the Kerberos full name in the ACL, use only the shortname<a name="line.275"></a>
+<span class="sourceLineNo">276</span>        Matcher match = NAME_PATTERN.matcher(name);<a name="line.276"></a>
+<span class="sourceLineNo">277</span>        if (match.matches()) {<a name="line.277"></a>
+<span class="sourceLineNo">278</span>          name = match.group(1);<a name="line.278"></a>
+<span class="sourceLineNo">279</span>        }<a name="line.279"></a>
+<span class="sourceLineNo">280</span>        if (name.equals(hbaseUser)) {<a name="line.280"></a>
+<span class="sourceLineNo">281</span>          if (perms != Perms.ALL) {<a name="line.281"></a>
+<span class="sourceLineNo">282</span>            if (LOG.isDebugEnabled()) {<a name="line.282"></a>
+<span class="sourceLineNo">283</span>              LOG.debug(String.format("permissions for '%s' are not correct: have 0x%x, want 0x%x",<a name="line.283"></a>
+<span class="sourceLineNo">284</span>                id, perms, Perms.ALL));<a name="line.284"></a>
+<span class="sourceLineNo">285</span>            }<a name="line.285"></a>
+<span class="sourceLineNo">286</span>            return false;<a name="line.286"></a>
+<span class="sourceLineNo">287</span>          }<a name="line.287"></a>
+<span class="sourceLineNo">288</span>        } else {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>          if (LOG.isDebugEnabled()) {<a name="line.289"></a>
+<span class="sourceLineNo">290</span>            LOG.debug("Unexpected shortname in SASL ACL: " + id);<a name="line.290"></a>
+<span class="sourceLineNo">291</span>          }<a name="line.291"></a>
+<span class="sourceLineNo">292</span>          return false;<a name="line.292"></a>
+<span class="sourceLineNo">293</span>        }<a name="line.293"></a>
+<span class="sourceLineNo">294</span>      } else {<a name="line.294"></a>
+<span class="sourceLineNo">295</span>        if (LOG.isDebugEnabled()) {<a name="line.295"></a>
+<span class="sourceLineNo">296</span>          LOG.debug("unexpected ACL id '" + id + "'");<a name="line.296"></a>
+<span class="sourceLineNo">297</span>        }<a name="line.297"></a>
+<span class="sourceLineNo">298</span>        return false;<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>    return true;<a name="line.301"></a>
+<span class="sourceLineNo">302</span>  }<a name="line.302"></a>
+<span class="sourceLineNo">303</span><a name="line.303"></a>
+<span class="sourceLineNo">304</span>  /*<a name="line.304"></a>
+<span class="sourceLineNo">305</span>   * Validate whether ACL set for all superusers.<a name="line.305"></a>
+<span class="sourceLineNo">306</span>   */<a name="line.306"></a>
+<span class="sourceLineNo">307</span>  private boolean checkACLForSuperUsers(String[] superUsers, List&lt;ACL&gt; acls) {<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    for (String user : superUsers) {<a name="line.308"></a>
+<span class="sourceLineNo">309</span>      boolean hasAccess = false;<a name="line.309"></a>
+<span class="sourceLineNo">310</span>      // TODO: Validate super group members also when ZK supports setting node ACL for groups.<a name="line.310"></a>
+<span class="sourceLineNo">311</span>      if (!AuthUtil.isGroupPrincipal(user)) {<a name="line.311"></a>
+<span class="sourceLineNo">312</span>        for (ACL acl : acls) {<a name="line.312"></a>
+<span class="sourceLineNo">313</span>          if (user.equals(acl.getId().getId())) {<a name="line.313"></a>
+<span class="sourceLineNo">314</span>            if (acl.getPerms() == Perms.ALL) {<a name="line.314"></a>
+<span class="sourceLineNo">315</span>              hasAccess = true;<a name="line.315"></a>
+<span class="sourceLineNo">316</span>            } else {<a name="line.316"></a>
+<span class="sourceLineNo">317</span>              if (LOG.isDebugEnabled()) {<a name="line.317"></a>
+<span class="sourceLineNo">318</span>                LOG.debug(String.format(<a name="line.318"></a>
+<span class="sourceLineNo">319</span>                  "superuser '%s' does not have correct permissions: have 0x%x, want 0x%x",<a name="line.319"></a>
+<span class="sourceLineNo">320</span>                  acl.getId().getId(), acl.getPerms(), Perms.ALL));<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>            break;<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>        if (!hasAccess) {<a name="line.326"></a>
+<span class="sourceLineNo">327</span>          return false;<a name="line.327"></a>
+<span class="sourceLineNo">328</span>        }<a name="line.328"></a>
+<span class="sourceLineNo">329</span>      }<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    }<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    return true;<a name="line.331"></a>
+<span class="sourceLineNo">332</span>  }<a name="line.332"></a>
+<span class="sourceLineNo">333</span><a name="line.333"></a>
+<span class="sourceLineNo">334</span>  /*<a name="line.334"></a>
+<span class="sourceLineNo">335</span>   * Validate whether ACL ID is superuser.<a name="line.335"></a>
+<span class="sourceLineNo">336</span>   */<a name="line.336"></a>
+<span class="sourceLineNo">337</span>  public static boolean isSuperUserId(String[] superUsers, Id id) {<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    for (String user : superUsers) {<a name="line.338"></a>
+<span class="sourceLineNo">339</span>      // TODO: Validate super group members also when ZK supports setting node ACL for groups.<a name="line.339"></a>
+<span class="sourceLineNo">340</span>      if (!AuthUtil.isGroupPrincipal(user) &amp;&amp; new Id("sasl", user).equals(id)) {<a name="line.340"></a>
+<span class="sourceLineNo">341</span>        return true;<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>    return false;<a name="line.344"></a>
+<span class="sourceLineNo">345</span>  }<a name="line.345"></a>
+<span class="sourceLineNo">346</span><a name="line.346"></a>
+<span class="sourceLineNo">347</span>  @Override<a name="line.347"></a>
+<span class="sourceLineNo">348</span>  public String toString() {<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    return this.identifier + ", quorum=" + quorum + ", baseZNode=" + znodePaths.baseZNode;<a name="line.349"></a>
+<span class="sourceLineNo">350</span>  }<a name="line.350"></a>
+<span class="sourceLineNo">351</span><a name="line.351"></a>
+<span class="sourceLineNo">352</span>  /**<a name="line.352"></a>
+<span class="sourceLineNo">353</span>   * Adds this instance's identifier as a prefix to the passed &lt;code&gt;str&lt;/code&gt;<a name="line.353"></a>
+<span class="sourceLineNo">354</span>   * @param str String to amend.<a name="line.354"></a>
+<span class="sourceLineNo">355</span>   * @return A new string with this instance's identifier as prefix: e.g.<a name="line.355"></a>
+<span class="sourceLineNo">356</span>   *         if passed 'hello world', the returned string could be<a name="line.356"></a>
+<span class="sourceLineNo">357</span>   */<a name="line.357"></a>
+<span class="sourceLineNo">358</span>  public String prefix(final String str) {<a name="line.358"></a>
+<span class="sourceLineNo">359</span>    return this.toString() + " " + str;<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>   * Get the znodes corresponding to the meta replicas from ZK<a name="line.363"></a>
+<span class="sourceLineNo">364</span>   * @return list of znodes<a name="line.364"></a>
+<span class="sourceLineNo">365</span>   * @throws KeeperException if a ZooKeeper operation fails<a name="line.365"></a>
+<span class="sourceLineNo">366</span>   */<a name="line.366"></a>
+<span class="sourceLineNo">367</span>  public List&lt;String&gt; getMetaReplicaNodes() throws KeeperException {<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    List&lt;String&gt; childrenOfBaseNode = ZKUtil.listChildrenNoWatch(this, znodePaths.baseZNode);<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    List&lt;String&gt; metaReplicaNodes = new ArrayList&lt;&gt;(2);<a name="line.369"></a>
+<span class="sourceLineNo">370</span>    if (childrenOfBaseNode != null) {<a name="line.370"></a>
+<span class="sourceLineNo">371</span>      String pattern = conf.get("zookeeper.znode.metaserver","meta-region-server");<a name="line.371"></a>
+<span class="sourceLineNo">372</span>      for (String child : childrenOfBaseNode) {<a name="line.372"></a>
+<span class="sourceLineNo">373</span>        if (child.startsWith(pattern)) {<a name="line.373"></a>
+<span class="sourceLineNo">374</span>          metaReplicaNodes.add(child);<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>    }<a name="line.377"></a>
 <span class="sourceLineNo">378</span>    return metaReplicaNodes;<a name="line.378"></a>
@@ -388,7 +388,7 @@
 <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>   * Register the specified listener to receive ZooKeeper events.<a name="line.382"></a>
-<span class="sourceLineNo">383</span>   * @param listener<a name="line.383"></a>
+<span class="sourceLineNo">383</span>   * @param listener the listener to register<a name="line.383"></a>
 <span class="sourceLineNo">384</span>   */<a name="line.384"></a>
 <span class="sourceLineNo">385</span>  public void registerListener(ZKListener listener) {<a name="line.385"></a>
 <span class="sourceLineNo">386</span>    listeners.add(listener);<a name="line.386"></a>
@@ -397,7 +397,7 @@
 <span class="sourceLineNo">389</span>  /**<a name="line.389"></a>
 <span class="sourceLineNo">390</span>   * Register the specified listener to receive ZooKeeper events and add it as<a name="line.390"></a>
 <span class="sourceLineNo">391</span>   * the first in the list of current listeners.<a name="line.391"></a>
-<span class="sourceLineNo">392</span>   * @param listener<a name="line.392"></a>
+<span class="sourceLineNo">392</span>   * @param listener the listener to register<a name="line.392"></a>
 <span class="sourceLineNo">393</span>   */<a name="line.393"></a>
 <span class="sourceLineNo">394</span>  public void registerListenerFirst(ZKListener listener) {<a name="line.394"></a>
 <span class="sourceLineNo">395</span>    listeners.add(0, listener);<a name="line.395"></a>
@@ -520,7 +520,7 @@
 <span class="sourceLineNo">512</span>   * call, it's possible for the Abortable to catch it and try to create a new<a name="line.512"></a>
 <span class="sourceLineNo">513</span>   * session with ZooKeeper. This is what the client does in HCM.<a name="line.513"></a>
 <span class="sourceLineNo">514</span>   * &lt;p&gt;<a name="line.514"></a>
-<span class="sourceLineNo">515</span>   * @param event<a name="line.515"></a>
+<span class="sourceLineNo">515</span>   * @param event the connection-related event<a name="line.515"></a>
 <span class="sourceLineNo">516</span>   */<a name="line.516"></a>
 <span class="sourceLineNo">517</span>  private void connectionEvent(WatchedEvent event) {<a name="line.517"></a>
 <span class="sourceLineNo">518</span>    switch(event.getState()) {<a name="line.518"></a>
@@ -579,67 +579,69 @@
 <span class="sourceLineNo">571</span>   * &lt;p&gt;<a name="line.571"></a>
 <span class="sourceLineNo">572</span>   * TODO: Currently this method rethrows the exception to let the caller handle<a name="line.572"></a>
 <span class="sourceLineNo">573</span>   * &lt;p&gt;<a name="line.573"></a>
-<span class="sourceLineNo">574</span>   * @param ke<a name="line.574"></a>
-<span class="sourceLineNo">575</span>   * @throws KeeperException<a name="line.575"></a>
+<span class="sourceLineNo">574</span>   * @param ke the exception to rethrow<a name="line.574"></a>
+<span class="sourceLineNo">575</span>   * @throws KeeperException if a ZooKeeper operation fails<a name="line.575"></a>
 <span class="sourceLineNo">576</span>   */<a name="line.576"></a>
-<span class="sourceLineNo">577</span>  public void keeperException(KeeperException ke)<a name="line.577"></a>
-<span class="sourceLineNo">578</span>  throws KeeperException {<a name="line.578"></a>
-<span class="sourceLineNo">579</span>    LOG.error(prefix("Received unexpected KeeperException, re-throwing exception"), ke);<a name="line.579"></a>
-<span class="sourceLineNo">580</span>    throw ke;<a name="line.580"></a>
-<span class="sourceLineNo">581</span>  }<a name="line.581"></a>
-<span class="sourceLineNo">582</span><a name="line.582"></a>
-<span class="sourceLineNo">583</span>  /**<a name="line.583"></a>
-<span class="sourceLineNo">584</span>   * Handles InterruptedExceptions in client calls.<a name="line.584"></a>
-<span class="sourceLineNo">585</span>   * @param ie the InterruptedException instance thrown<a name="line.585"></a>
-<span class="sourceLineNo">586</span>   * @throws KeeperException the exception to throw, transformed from the InterruptedException<a name="line.586"></a>
-<span class="sourceLineNo">587</span>   */<a name="line.587"></a>
-<span class="sourceLineNo">588</span>  public void interruptedException(InterruptedException ie) throws KeeperException {<a name="line.588"></a>
-<span class="sourceLineNo">589</span>    interruptedExceptionNoThrow(ie, true);<a name="line.589"></a>
-<span class="sourceLineNo">590</span>    // Throw a system error exception to let upper level handle it<a name="line.590"></a>
-<span class="sourceLineNo">591</span>    throw new KeeperException.SystemErrorException();<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>  /**<a name="line.594"></a>
-<span class="sourceLineNo">595</span>   * Log the InterruptedException and interrupt current thread<a name="line.595"></a>
-<span class="sourceLineNo">596</span>   * @param ie The IterruptedException to log<a name="line.596"></a>
-<span class="sourceLineNo">597</span>   * @param throwLater Whether we will throw the exception latter<a name="line.597"></a>
-<span class="sourceLineNo">598</span>   */<a name="line.598"></a>
-<span class="sourceLineNo">599</span>  public void interruptedExceptionNoThrow(InterruptedException ie, boolean throwLater) {<a name="line.599"></a>
-<span class="sourceLineNo">600</span>    LOG.debug(prefix("Received InterruptedException, will interrupt current thread"<a name="line.600"></a>
-<span class="sourceLineNo">601</span>        + (throwLater ? " and rethrow a SystemErrorException" : "")),<a name="line.601"></a>
-<span class="sourceLineNo">602</span>      ie);<a name="line.602"></a>
-<span class="sourceLineNo">603</span>    // At least preserve interrupt.<a name="line.603"></a>
-<span class="sourceLineNo">604</span>    Thread.currentThread().interrupt();<a name="line.604"></a>
-<span class="sourceLineNo">605</span>  }<a name="line.605"></a>
-<span class="sourceLineNo">606</span><a name="line.606"></a>
-<span class="sourceLineNo">607</span>  /**<a name="line.607"></a>
-<span class="sourceLineNo">608</span>   * Close the connection to ZooKeeper.<a name="line.608"></a>
-<span class="sourceLineNo">609</span>   *<a name="line.609"></a>
-<span class="sourceLineNo">610</span>   */<a name="line.610"></a>
-<span class="sourceLineNo">611</span>  @Override<a name="line.611"></a>
-<span class="sourceLineNo">612</span>  public void close() {<a name="line.612"></a>
-<span class="sourceLineNo">613</span>    try {<a name="line.613"></a>
-<span class="sourceLineNo">614</span>      recoverableZooKeeper.close();<a name="line.614"></a>
-<span class="sourceLineNo">615</span>    } catch (InterruptedException e) {<a name="line.615"></a>
-<span class="sourceLineNo">616</span>      Thread.currentThread().interrupt();<a name="line.616"></a>
-<span class="sourceLineNo">617</span>    }<a name="line.617"></a>
-<span class="sourceLineNo">618</span>  }<a name="line.618"></a>
-<span class="sourceLineNo">619</span><a name="line.619"></a>
-<span class="sourceLineNo">620</span>  public Configuration getConfiguration() {<a name="line.620"></a>
-<span class="sourceLineNo">621</span>    return conf;<a name="line.621"></a>
-<span class="sourceLineNo">622</span>  }<a name="line.622"></a>
-<span class="sourceLineNo">623</span><a name="line.623"></a>
-<span class="sourceLineNo">624</span>  @Override<a name="line.624"></a>
-<span class="sourceLineNo">625</span>  public void abort(String why, Throwable e) {<a name="line.625"></a>
-<span class="sourceLineNo">626</span>    if (this.abortable != null) this.abortable.abort(why, e);<a name="line.626"></a>
-<span class="sourceLineNo">627</span>    else this.aborted = true;<a name="line.627"></a>
-<span class="sourceLineNo">628</span>  }<a name="line.628"></a>
-<span class="sourceLineNo">629</span><a name="line.629"></a>
-<span class="sourceLineNo">630</span>  @Override<a name="line.630"></a>
-<span class="sourceLineNo">631</span>  public boolean isAborted() {<a name="line.631"></a>
-<span class="sourceLineNo">632</span>    return this.abortable == null? this.aborted: this.abortable.isAborted();<a name="line.632"></a>
-<span class="sourceLineNo">633</span>  }<a name="line.633"></a>
-<span class="sourceLineNo">634</span>}<a name="line.634"></a>
+<span class="sourceLineNo">577</span>  public void keeperException(KeeperException ke) throws KeeperException {<a name="line.577"></a>
+<span class="sourceLineNo">578</span>    LOG.error(prefix("Received unexpected KeeperException, re-throwing exception"), ke);<a name="line.578"></a>
+<span class="sourceLineNo">579</span>    throw ke;<a name="line.579"></a>
+<span class="sourceLineNo">580</span>  }<a name="line.580"></a>
+<span class="sourceLineNo">581</span><a name="line.581"></a>
+<span class="sourceLineNo">582</span>  /**<a name="line.582"></a>
+<span class="sourceLineNo">583</span>   * Handles InterruptedExceptions in client calls.<a name="line.583"></a>
+<span class="sourceLineNo">584</span>   * @param ie the InterruptedException instance thrown<a name="line.584"></a>
+<span class="sourceLineNo">585</span>   * @throws KeeperException the exception to throw, transformed from the InterruptedException<a name="line.585"></a>
+<span class="sourceLineNo">586</span>   */<a name="line.586"></a>
+<span class="sourceLineNo">587</span>  public void interruptedException(InterruptedException ie) throws KeeperException {<a name="line.587"></a>
+<span class="sourceLineNo">588</span>    interruptedExceptionNoThrow(ie, true);<a name="line.588"></a>
+<span class="sourceLineNo">589</span>    // Throw a system error exception to let upper level handle it<a name="line.589"></a>
+<span class="sourceLineNo">590</span>    throw new KeeperException.SystemErrorException();<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>   * Log the InterruptedException and interrupt current thread<a name="line.594"></a>
+<span class="sourceLineNo">595</span>   * @param ie The IterruptedException to log<a name="line.595"></a>
+<span class="sourceLineNo">596</span>   * @param throwLater Whether we will throw the exception latter<a name="line.596"></a>
+<span class="sourceLineNo">597</span>   */<a name="line.597"></a>
+<span class="sourceLineNo">598</span>  public void interruptedExceptionNoThrow(InterruptedException ie, boolean throwLater) {<a name="line.598"></a>
+<span class="sourceLineNo">599</span>    LOG.debug(prefix("Received InterruptedException, will interrupt current thread"<a name="line.599"></a>
+<span class="sourceLineNo">600</span>        + (throwLater ? " and rethrow a SystemErrorException" : "")),<a name="line.600"></a>
+<span class="sourceLineNo">601</span>      ie);<a name="line.601"></a>
+<span class="sourceLineNo">602</span>    // At least preserve interrupt.<a name="line.602"></a>
+<span class="sourceLineNo">603</span>    Thread.currentThread().interrupt();<a name="line.603"></a>
+<span class="sourceLineNo">604</span>  }<a name="line.604"></a>
+<span class="sourceLineNo">605</span><a name="line.605"></a>
+<span class="sourceLineNo">606</span>  /**<a name="line.606"></a>
+<span class="sourceLineNo">607</span>   * Close the connection to ZooKeeper.<a name="line.607"></a>
+<span class="sourceLineNo">608</span>   *<a name="line.608"></a>
+<span class="sourceLineNo">609</span>   */<a name="line.609"></a>
+<span class="sourceLineNo">610</span>  @Override<a name="line.610"></a>
+<span class="sourceLineNo">611</span>  public void close() {<a name="line.611"></a>
+<span class="sourceLineNo">612</span>    try {<a name="line.612"></a>
+<span class="sourceLineNo">613</span>      recoverableZooKeeper.close();<a name="line.613"></a>
+<span class="sourceLineNo">614</span>    } catch (InterruptedException e) {<a name="line.614"></a>
+<span class="sourceLineNo">615</span>      Thread.currentThread().interrupt();<a name="line.615"></a>
+<span class="sourceLineNo">616</span>    }<a name="line.616"></a>
+<span class="sourceLineNo">617</span>  }<a name="line.617"></a>
+<span class="sourceLineNo">618</span><a name="line.618"></a>
+<span class="sourceLineNo">619</span>  public Configuration getConfiguration() {<a name="line.619"></a>
+<span class="sourceLineNo">620</span>    return conf;<a name="line.620"></a>
+<span class="sourceLineNo">621</span>  }<a name="line.621"></a>
+<span class="sourceLineNo">622</span><a name="line.622"></a>
+<span class="sourceLineNo">623</span>  @Override<a name="line.623"></a>
+<span class="sourceLineNo">624</span>  public void abort(String why, Throwable e) {<a name="line.624"></a>
+<span class="sourceLineNo">625</span>    if (this.abortable != null) {<a name="line.625"></a>
+<span class="sourceLineNo">626</span>      this.abortable.abort(why, e);<a name="line.626"></a>
+<span class="sourceLineNo">627</span>    } else {<a name="line.627"></a>
+<span class="sourceLineNo">628</span>      this.aborted = true;<a name="line.628"></a>
+<span class="sourceLineNo">629</span>    }<a name="line.629"></a>
+<span class="sourceLineNo">630</span>  }<a name="line.630"></a>
+<span class="sourceLineNo">631</span><a name="line.631"></a>
+<span class="sourceLineNo">632</span>  @Override<a name="line.632"></a>
+<span class="sourceLineNo">633</span>  public boolean isAborted() {<a name="line.633"></a>
+<span class="sourceLineNo">634</span>    return this.abortable == null? this.aborted: this.abortable.isAborted();<a name="line.634"></a>
+<span class="sourceLineNo">635</span>  }<a name="line.635"></a>
+<span class="sourceLineNo">636</span>}<a name="line.636"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/export_control.html
----------------------------------------------------------------------
diff --git a/export_control.html b/export_control.html
index 255ce75..09c9fab 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="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Export Control
@@ -336,7 +336,7 @@ for more details.</p>
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-annotations/checkstyle.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/checkstyle.html b/hbase-annotations/checkstyle.html
index 8ad19cd..786327e 100644
--- a/hbase-annotations/checkstyle.html
+++ b/hbase-annotations/checkstyle.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Checkstyle Results</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -150,7 +150,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-annotations/dependencies.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/dependencies.html b/hbase-annotations/dependencies.html
index 28e46fb..6c31d9f 100644
--- a/hbase-annotations/dependencies.html
+++ b/hbase-annotations/dependencies.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Project Dependencies</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -272,7 +272,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-annotations/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/dependency-convergence.html b/hbase-annotations/dependency-convergence.html
index a5e9095..fc28026 100644
--- a/hbase-annotations/dependency-convergence.html
+++ b/hbase-annotations/dependency-convergence.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Reactor Dependency Convergence</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -829,7 +829,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-annotations/dependency-info.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/dependency-info.html b/hbase-annotations/dependency-info.html
index 13baf3e..36e4d1a 100644
--- a/hbase-annotations/dependency-info.html
+++ b/hbase-annotations/dependency-info.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Dependency Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -147,7 +147,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-annotations/dependency-management.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/dependency-management.html b/hbase-annotations/dependency-management.html
index 8cba5c7..5717679 100644
--- a/hbase-annotations/dependency-management.html
+++ b/hbase-annotations/dependency-management.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Project Dependency Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -810,7 +810,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-annotations/index.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/index.html b/hbase-annotations/index.html
index 5760b16..4fd067a 100644
--- a/hbase-annotations/index.html
+++ b/hbase-annotations/index.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; About</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -119,7 +119,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-annotations/integration.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/integration.html b/hbase-annotations/integration.html
index 7595d64..a04a6d2 100644
--- a/hbase-annotations/integration.html
+++ b/hbase-annotations/integration.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; CI Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -126,7 +126,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-annotations/issue-tracking.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/issue-tracking.html b/hbase-annotations/issue-tracking.html
index c3265e0..cc9cc58 100644
--- a/hbase-annotations/issue-tracking.html
+++ b/hbase-annotations/issue-tracking.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Issue Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -123,7 +123,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-annotations/license.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/license.html b/hbase-annotations/license.html
index ee69c01..a1b3a11 100644
--- a/hbase-annotations/license.html
+++ b/hbase-annotations/license.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Project Licenses</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -326,7 +326,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-annotations/mail-lists.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/mail-lists.html b/hbase-annotations/mail-lists.html
index cba5376..00d7fc4 100644
--- a/hbase-annotations/mail-lists.html
+++ b/hbase-annotations/mail-lists.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Project Mailing Lists</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -176,7 +176,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-annotations/plugin-management.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/plugin-management.html b/hbase-annotations/plugin-management.html
index 84dc077..a967b99 100644
--- a/hbase-annotations/plugin-management.html
+++ b/hbase-annotations/plugin-management.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Project Plugin Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -271,7 +271,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-annotations/plugins.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/plugins.html b/hbase-annotations/plugins.html
index e114692..94b111b 100644
--- a/hbase-annotations/plugins.html
+++ b/hbase-annotations/plugins.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Project Plugins</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -222,7 +222,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 


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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/source-repository.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/source-repository.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/source-repository.html
index 286259b..02cfa3f 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/source-repository.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/source-repository.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Source Code Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -134,7 +134,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/team-list.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/team-list.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/team-list.html
index 481a148..eb54fe8 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/team-list.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/team-list.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Project Team</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -547,7 +547,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-archetypes/index.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/index.html b/hbase-build-configuration/hbase-archetypes/index.html
index 6cacacc..bb9fa38 100644
--- a/hbase-build-configuration/hbase-archetypes/index.html
+++ b/hbase-build-configuration/hbase-archetypes/index.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; About</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -135,7 +135,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-archetypes/integration.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/integration.html b/hbase-build-configuration/hbase-archetypes/integration.html
index 92c8641..6eca0bd 100644
--- a/hbase-build-configuration/hbase-archetypes/integration.html
+++ b/hbase-build-configuration/hbase-archetypes/integration.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; CI Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -126,7 +126,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-archetypes/issue-tracking.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/issue-tracking.html b/hbase-build-configuration/hbase-archetypes/issue-tracking.html
index 16310d3..9b4ab0f 100644
--- a/hbase-build-configuration/hbase-archetypes/issue-tracking.html
+++ b/hbase-build-configuration/hbase-archetypes/issue-tracking.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; Issue Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -123,7 +123,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-archetypes/license.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/license.html b/hbase-build-configuration/hbase-archetypes/license.html
index 988d1a5..d095da3 100644
--- a/hbase-build-configuration/hbase-archetypes/license.html
+++ b/hbase-build-configuration/hbase-archetypes/license.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; Project Licenses</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -326,7 +326,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-archetypes/mail-lists.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/mail-lists.html b/hbase-build-configuration/hbase-archetypes/mail-lists.html
index 21b7262..92d1e5e 100644
--- a/hbase-build-configuration/hbase-archetypes/mail-lists.html
+++ b/hbase-build-configuration/hbase-archetypes/mail-lists.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; Project Mailing Lists</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -176,7 +176,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-archetypes/plugin-management.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/plugin-management.html b/hbase-build-configuration/hbase-archetypes/plugin-management.html
index 84ca154..40e3bb6 100644
--- a/hbase-build-configuration/hbase-archetypes/plugin-management.html
+++ b/hbase-build-configuration/hbase-archetypes/plugin-management.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; Project Plugin Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -271,7 +271,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-archetypes/plugins.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/plugins.html b/hbase-build-configuration/hbase-archetypes/plugins.html
index e78295d..cc18284 100644
--- a/hbase-build-configuration/hbase-archetypes/plugins.html
+++ b/hbase-build-configuration/hbase-archetypes/plugins.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; Project Plugins</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -214,7 +214,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-archetypes/project-info.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/project-info.html b/hbase-build-configuration/hbase-archetypes/project-info.html
index e226ab4..7920c62 100644
--- a/hbase-build-configuration/hbase-archetypes/project-info.html
+++ b/hbase-build-configuration/hbase-archetypes/project-info.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; Project Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -167,7 +167,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-archetypes/project-summary.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/project-summary.html b/hbase-build-configuration/hbase-archetypes/project-summary.html
index 9df9c82..f30dde9 100644
--- a/hbase-build-configuration/hbase-archetypes/project-summary.html
+++ b/hbase-build-configuration/hbase-archetypes/project-summary.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; Project Summary</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -163,7 +163,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-archetypes/source-repository.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/source-repository.html b/hbase-build-configuration/hbase-archetypes/source-repository.html
index a94b93a..afe59a2 100644
--- a/hbase-build-configuration/hbase-archetypes/source-repository.html
+++ b/hbase-build-configuration/hbase-archetypes/source-repository.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; Source Code Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -134,7 +134,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-archetypes/team-list.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/team-list.html b/hbase-build-configuration/hbase-archetypes/team-list.html
index 08df4d7..c056ec0 100644
--- a/hbase-build-configuration/hbase-archetypes/team-list.html
+++ b/hbase-build-configuration/hbase-archetypes/team-list.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; Project Team</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -547,7 +547,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-spark/checkstyle.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/checkstyle.html b/hbase-build-configuration/hbase-spark/checkstyle.html
index c8b6a5b..0df61e4 100644
--- a/hbase-build-configuration/hbase-spark/checkstyle.html
+++ b/hbase-build-configuration/hbase-spark/checkstyle.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Checkstyle Results</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -517,7 +517,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-spark/dependencies.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/dependencies.html b/hbase-build-configuration/hbase-spark/dependencies.html
index 15c3232..592c5a4 100644
--- a/hbase-build-configuration/hbase-spark/dependencies.html
+++ b/hbase-build-configuration/hbase-spark/dependencies.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Project Dependencies</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -5692,7 +5692,7 @@ file comparators, endian transformation classes, and much more.</p>
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-spark/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/dependency-convergence.html b/hbase-build-configuration/hbase-spark/dependency-convergence.html
index 7d34ac9..2e1d060 100644
--- a/hbase-build-configuration/hbase-spark/dependency-convergence.html
+++ b/hbase-build-configuration/hbase-spark/dependency-convergence.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Reactor Dependency Convergence</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -829,7 +829,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-spark/dependency-info.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/dependency-info.html b/hbase-build-configuration/hbase-spark/dependency-info.html
index d7ae0c7..fa53bb8 100644
--- a/hbase-build-configuration/hbase-spark/dependency-info.html
+++ b/hbase-build-configuration/hbase-spark/dependency-info.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Dependency Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -147,7 +147,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-spark/dependency-management.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/dependency-management.html b/hbase-build-configuration/hbase-spark/dependency-management.html
index 9060bbb..2e1c469 100644
--- a/hbase-build-configuration/hbase-spark/dependency-management.html
+++ b/hbase-build-configuration/hbase-spark/dependency-management.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Project Dependency Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -810,7 +810,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-spark/index.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/index.html b/hbase-build-configuration/hbase-spark/index.html
index e25baf2..a8cbd91 100644
--- a/hbase-build-configuration/hbase-spark/index.html
+++ b/hbase-build-configuration/hbase-spark/index.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; About</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -119,7 +119,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-spark/integration.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/integration.html b/hbase-build-configuration/hbase-spark/integration.html
index 228028f..15e6e7e 100644
--- a/hbase-build-configuration/hbase-spark/integration.html
+++ b/hbase-build-configuration/hbase-spark/integration.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; CI Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -126,7 +126,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-spark/issue-tracking.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/issue-tracking.html b/hbase-build-configuration/hbase-spark/issue-tracking.html
index ea3347b..894c41f 100644
--- a/hbase-build-configuration/hbase-spark/issue-tracking.html
+++ b/hbase-build-configuration/hbase-spark/issue-tracking.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Issue Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -123,7 +123,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-spark/license.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/license.html b/hbase-build-configuration/hbase-spark/license.html
index c8465d0..7fc884d 100644
--- a/hbase-build-configuration/hbase-spark/license.html
+++ b/hbase-build-configuration/hbase-spark/license.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Project Licenses</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -326,7 +326,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-spark/mail-lists.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/mail-lists.html b/hbase-build-configuration/hbase-spark/mail-lists.html
index e4603d8..45d4d30 100644
--- a/hbase-build-configuration/hbase-spark/mail-lists.html
+++ b/hbase-build-configuration/hbase-spark/mail-lists.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Project Mailing Lists</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -176,7 +176,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-spark/plugin-management.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/plugin-management.html b/hbase-build-configuration/hbase-spark/plugin-management.html
index 9711db5..cd2a362 100644
--- a/hbase-build-configuration/hbase-spark/plugin-management.html
+++ b/hbase-build-configuration/hbase-spark/plugin-management.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Project Plugin Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -271,7 +271,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-spark/plugins.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/plugins.html b/hbase-build-configuration/hbase-spark/plugins.html
index 09e083e..a0d1595 100644
--- a/hbase-build-configuration/hbase-spark/plugins.html
+++ b/hbase-build-configuration/hbase-spark/plugins.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Project Plugins</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -238,7 +238,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-spark/project-info.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/project-info.html b/hbase-build-configuration/hbase-spark/project-info.html
index d052387..50fe301 100644
--- a/hbase-build-configuration/hbase-spark/project-info.html
+++ b/hbase-build-configuration/hbase-spark/project-info.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Project Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -167,7 +167,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-spark/project-reports.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/project-reports.html b/hbase-build-configuration/hbase-spark/project-reports.html
index 8db7700..9fd97ea 100644
--- a/hbase-build-configuration/hbase-spark/project-reports.html
+++ b/hbase-build-configuration/hbase-spark/project-reports.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Generated Reports</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -131,7 +131,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-spark/project-summary.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/project-summary.html b/hbase-build-configuration/hbase-spark/project-summary.html
index e7708e2..dfcdb6b 100644
--- a/hbase-build-configuration/hbase-spark/project-summary.html
+++ b/hbase-build-configuration/hbase-spark/project-summary.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Project Summary</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -166,7 +166,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-spark/source-repository.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/source-repository.html b/hbase-build-configuration/hbase-spark/source-repository.html
index 3ac71e8..27a6699 100644
--- a/hbase-build-configuration/hbase-spark/source-repository.html
+++ b/hbase-build-configuration/hbase-spark/source-repository.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Source Code Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -134,7 +134,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-spark/team-list.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/team-list.html b/hbase-build-configuration/hbase-spark/team-list.html
index b5823d1..4427387 100644
--- a/hbase-build-configuration/hbase-spark/team-list.html
+++ b/hbase-build-configuration/hbase-spark/team-list.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Project Team</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -547,7 +547,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/index.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/index.html b/hbase-build-configuration/index.html
index 97286b5..69efaa8 100644
--- a/hbase-build-configuration/index.html
+++ b/hbase-build-configuration/index.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; About</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -119,7 +119,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/integration.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/integration.html b/hbase-build-configuration/integration.html
index 800f8dc..80665bc 100644
--- a/hbase-build-configuration/integration.html
+++ b/hbase-build-configuration/integration.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; CI Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -126,7 +126,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/issue-tracking.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/issue-tracking.html b/hbase-build-configuration/issue-tracking.html
index e30630f..9fad34e 100644
--- a/hbase-build-configuration/issue-tracking.html
+++ b/hbase-build-configuration/issue-tracking.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; Issue Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -123,7 +123,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/license.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/license.html b/hbase-build-configuration/license.html
index 7c689f3..c9aa727 100644
--- a/hbase-build-configuration/license.html
+++ b/hbase-build-configuration/license.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; Project Licenses</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -326,7 +326,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/mail-lists.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/mail-lists.html b/hbase-build-configuration/mail-lists.html
index ff8330e..dc55b3e 100644
--- a/hbase-build-configuration/mail-lists.html
+++ b/hbase-build-configuration/mail-lists.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; Project Mailing Lists</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -176,7 +176,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/plugin-management.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/plugin-management.html b/hbase-build-configuration/plugin-management.html
index 19ea35f..6999454 100644
--- a/hbase-build-configuration/plugin-management.html
+++ b/hbase-build-configuration/plugin-management.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; Project Plugin Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -271,7 +271,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/plugins.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/plugins.html b/hbase-build-configuration/plugins.html
index 3e81452..b972a4a 100644
--- a/hbase-build-configuration/plugins.html
+++ b/hbase-build-configuration/plugins.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; Project Plugins</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -214,7 +214,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/project-info.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/project-info.html b/hbase-build-configuration/project-info.html
index d2bb873..6eac623 100644
--- a/hbase-build-configuration/project-info.html
+++ b/hbase-build-configuration/project-info.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; Project Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -167,7 +167,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/project-summary.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/project-summary.html b/hbase-build-configuration/project-summary.html
index 3e9d359..6f91dc8 100644
--- a/hbase-build-configuration/project-summary.html
+++ b/hbase-build-configuration/project-summary.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; Project Summary</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -163,7 +163,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/source-repository.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/source-repository.html b/hbase-build-configuration/source-repository.html
index effb6f3..021e247 100644
--- a/hbase-build-configuration/source-repository.html
+++ b/hbase-build-configuration/source-repository.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; Source Code Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -134,7 +134,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/team-list.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/team-list.html b/hbase-build-configuration/team-list.html
index 5c3ff53..26c6779 100644
--- a/hbase-build-configuration/team-list.html
+++ b/hbase-build-configuration/team-list.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; Project Team</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -547,7 +547,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-shaded-check-invariants/checkstyle.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/checkstyle.html b/hbase-shaded-check-invariants/checkstyle.html
index 37dfb0d..3e97116 100644
--- a/hbase-shaded-check-invariants/checkstyle.html
+++ b/hbase-shaded-check-invariants/checkstyle.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Checkstyle Results</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -150,7 +150,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-shaded-check-invariants/dependencies.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/dependencies.html b/hbase-shaded-check-invariants/dependencies.html
index 98e5ec8..e99c863 100644
--- a/hbase-shaded-check-invariants/dependencies.html
+++ b/hbase-shaded-check-invariants/dependencies.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Project Dependencies</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -2883,7 +2883,7 @@ Jackson JSON processor's data binding functionality.</p>
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-shaded-check-invariants/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/dependency-convergence.html b/hbase-shaded-check-invariants/dependency-convergence.html
index 19d02ff..5d8e71c 100644
--- a/hbase-shaded-check-invariants/dependency-convergence.html
+++ b/hbase-shaded-check-invariants/dependency-convergence.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Reactor Dependency Convergence</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -829,7 +829,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-shaded-check-invariants/dependency-info.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/dependency-info.html b/hbase-shaded-check-invariants/dependency-info.html
index 5dede0b..901dad1 100644
--- a/hbase-shaded-check-invariants/dependency-info.html
+++ b/hbase-shaded-check-invariants/dependency-info.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Dependency Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -148,7 +148,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-shaded-check-invariants/dependency-management.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/dependency-management.html b/hbase-shaded-check-invariants/dependency-management.html
index 5af7f37..d904265 100644
--- a/hbase-shaded-check-invariants/dependency-management.html
+++ b/hbase-shaded-check-invariants/dependency-management.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Project Dependency Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -810,7 +810,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-shaded-check-invariants/index.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/index.html b/hbase-shaded-check-invariants/index.html
index aac8342..241afac 100644
--- a/hbase-shaded-check-invariants/index.html
+++ b/hbase-shaded-check-invariants/index.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; About</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -122,7 +122,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-shaded-check-invariants/integration.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/integration.html b/hbase-shaded-check-invariants/integration.html
index 1a9ff86..8b87397 100644
--- a/hbase-shaded-check-invariants/integration.html
+++ b/hbase-shaded-check-invariants/integration.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; CI Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -126,7 +126,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-shaded-check-invariants/issue-tracking.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/issue-tracking.html b/hbase-shaded-check-invariants/issue-tracking.html
index 55f91d0..7dc4597 100644
--- a/hbase-shaded-check-invariants/issue-tracking.html
+++ b/hbase-shaded-check-invariants/issue-tracking.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Issue Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -123,7 +123,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-shaded-check-invariants/license.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/license.html b/hbase-shaded-check-invariants/license.html
index 356fd1c..9c311a1 100644
--- a/hbase-shaded-check-invariants/license.html
+++ b/hbase-shaded-check-invariants/license.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Project Licenses</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -326,7 +326,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-shaded-check-invariants/mail-lists.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/mail-lists.html b/hbase-shaded-check-invariants/mail-lists.html
index 3fdfac0..30acb88 100644
--- a/hbase-shaded-check-invariants/mail-lists.html
+++ b/hbase-shaded-check-invariants/mail-lists.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Project Mailing Lists</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -176,7 +176,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-shaded-check-invariants/plugin-management.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/plugin-management.html b/hbase-shaded-check-invariants/plugin-management.html
index db3ed24..fa09d40 100644
--- a/hbase-shaded-check-invariants/plugin-management.html
+++ b/hbase-shaded-check-invariants/plugin-management.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Project Plugin Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -271,7 +271,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-shaded-check-invariants/plugins.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/plugins.html b/hbase-shaded-check-invariants/plugins.html
index fd12f58..e49b563 100644
--- a/hbase-shaded-check-invariants/plugins.html
+++ b/hbase-shaded-check-invariants/plugins.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Project Plugins</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -218,7 +218,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-shaded-check-invariants/project-info.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/project-info.html b/hbase-shaded-check-invariants/project-info.html
index e912819..0df4134 100644
--- a/hbase-shaded-check-invariants/project-info.html
+++ b/hbase-shaded-check-invariants/project-info.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Project Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -170,7 +170,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-shaded-check-invariants/project-reports.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/project-reports.html b/hbase-shaded-check-invariants/project-reports.html
index 022f30a..d951e11 100644
--- a/hbase-shaded-check-invariants/project-reports.html
+++ b/hbase-shaded-check-invariants/project-reports.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Generated Reports</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -128,7 +128,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-shaded-check-invariants/project-summary.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/project-summary.html b/hbase-shaded-check-invariants/project-summary.html
index ec4976e..4b375b2 100644
--- a/hbase-shaded-check-invariants/project-summary.html
+++ b/hbase-shaded-check-invariants/project-summary.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Project Summary</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -166,7 +166,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-shaded-check-invariants/source-repository.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/source-repository.html b/hbase-shaded-check-invariants/source-repository.html
index 6c132bf..30b8e04 100644
--- a/hbase-shaded-check-invariants/source-repository.html
+++ b/hbase-shaded-check-invariants/source-repository.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Source Code Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -134,7 +134,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-shaded-check-invariants/team-list.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/team-list.html b/hbase-shaded-check-invariants/team-list.html
index f5d64a8..dab3e67 100644
--- a/hbase-shaded-check-invariants/team-list.html
+++ b/hbase-shaded-check-invariants/team-list.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Project Team</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -547,7 +547,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/index.html
----------------------------------------------------------------------
diff --git a/index.html b/index.html
index bc2d82e..6718a44 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="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Apache HBaseâ„¢ Home</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -438,7 +438,7 @@ Apache HBase is an open-source, distributed, versioned, non-relational database
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/integration.html
----------------------------------------------------------------------
diff --git a/integration.html b/integration.html
index 0c9038f..314b64a 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="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; CI Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -296,7 +296,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/issue-tracking.html
----------------------------------------------------------------------
diff --git a/issue-tracking.html b/issue-tracking.html
index 413a7ba..0361bcb 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="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Issue Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -293,7 +293,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/license.html
----------------------------------------------------------------------
diff --git a/license.html b/license.html
index 8952bf1..d5b9a69 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="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Licenses</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -496,7 +496,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/mail-lists.html
----------------------------------------------------------------------
diff --git a/mail-lists.html b/mail-lists.html
index 85afb8c..0683d8f 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="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Mailing Lists</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -346,7 +346,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/metrics.html
----------------------------------------------------------------------
diff --git a/metrics.html b/metrics.html
index 9232c19..e4b32e3 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="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Apache HBase (TM) Metrics
@@ -464,7 +464,7 @@ export HBASE_REGIONSERVER_OPTS=&quot;$HBASE_JMX_OPTS -Dcom.sun.management.jmxrem
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/old_news.html
----------------------------------------------------------------------
diff --git a/old_news.html b/old_news.html
index b9636ed..e707c2a 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="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Old Apache HBase (TM) News
@@ -419,7 +419,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/plugin-management.html
----------------------------------------------------------------------
diff --git a/plugin-management.html b/plugin-management.html
index cb3382b..01bfa2d 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="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Plugin Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -441,7 +441,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/plugins.html
----------------------------------------------------------------------
diff --git a/plugins.html b/plugins.html
index 44abbe1..4b34700 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="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Plugins</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -380,7 +380,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/poweredbyhbase.html
----------------------------------------------------------------------
diff --git a/poweredbyhbase.html b/poweredbyhbase.html
index bd606ef..bf74105 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="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Powered By Apache HBase™</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -774,7 +774,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 


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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/RegionNormalizerTracker.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/RegionNormalizerTracker.html b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/RegionNormalizerTracker.html
index 47e8208..d04a726 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/RegionNormalizerTracker.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/RegionNormalizerTracker.html
@@ -26,25 +26,25 @@
 <span class="sourceLineNo">018</span><a name="line.18"></a>
 <span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.zookeeper;<a name="line.19"></a>
 <span class="sourceLineNo">020</span><a name="line.20"></a>
-<span class="sourceLineNo">021</span>import org.apache.commons.logging.Log;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import org.apache.commons.logging.LogFactory;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import org.apache.hadoop.hbase.Abortable;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionNormalizerProtos;<a name="line.26"></a>
+<span class="sourceLineNo">021</span>import java.io.IOException;<a name="line.21"></a>
+<span class="sourceLineNo">022</span><a name="line.22"></a>
+<span class="sourceLineNo">023</span>import org.apache.commons.logging.Log;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import org.apache.commons.logging.LogFactory;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.Abortable;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.26"></a>
 <span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.27"></a>
 <span class="sourceLineNo">028</span>import org.apache.zookeeper.KeeperException;<a name="line.28"></a>
 <span class="sourceLineNo">029</span><a name="line.29"></a>
-<span class="sourceLineNo">030</span>import java.io.IOException;<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> * Tracks region normalizer state up in ZK<a name="line.33"></a>
-<span class="sourceLineNo">034</span> */<a name="line.34"></a>
-<span class="sourceLineNo">035</span>public class RegionNormalizerTracker extends ZKNodeTracker {<a name="line.35"></a>
-<span class="sourceLineNo">036</span>  private static final Log LOG = LogFactory.getLog(RegionNormalizerTracker.class);<a name="line.36"></a>
-<span class="sourceLineNo">037</span><a name="line.37"></a>
-<span class="sourceLineNo">038</span>  public RegionNormalizerTracker(ZKWatcher watcher,<a name="line.38"></a>
-<span class="sourceLineNo">039</span>                             Abortable abortable) {<a name="line.39"></a>
+<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionNormalizerProtos;<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> * Tracks region normalizer state up in ZK<a name="line.34"></a>
+<span class="sourceLineNo">035</span> */<a name="line.35"></a>
+<span class="sourceLineNo">036</span>public class RegionNormalizerTracker extends ZKNodeTracker {<a name="line.36"></a>
+<span class="sourceLineNo">037</span>  private static final Log LOG = LogFactory.getLog(RegionNormalizerTracker.class);<a name="line.37"></a>
+<span class="sourceLineNo">038</span><a name="line.38"></a>
+<span class="sourceLineNo">039</span>  public RegionNormalizerTracker(ZKWatcher watcher, Abortable abortable) {<a name="line.39"></a>
 <span class="sourceLineNo">040</span>    super(watcher, watcher.znodePaths.regionNormalizerZNode, abortable);<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>
@@ -67,7 +67,7 @@
 <span class="sourceLineNo">059</span>  /**<a name="line.59"></a>
 <span class="sourceLineNo">060</span>   * Set region normalizer on/off<a name="line.60"></a>
 <span class="sourceLineNo">061</span>   * @param normalizerOn whether normalizer should be on or off<a name="line.61"></a>
-<span class="sourceLineNo">062</span>   * @throws KeeperException<a name="line.62"></a>
+<span class="sourceLineNo">062</span>   * @throws KeeperException if a ZooKeeper operation fails<a name="line.62"></a>
 <span class="sourceLineNo">063</span>   */<a name="line.63"></a>
 <span class="sourceLineNo">064</span>  public void setNormalizerOn(boolean normalizerOn) throws KeeperException {<a name="line.64"></a>
 <span class="sourceLineNo">065</span>    byte [] upData = toByteArray(normalizerOn);<a name="line.65"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKAclReset.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKAclReset.html b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKAclReset.html
index 8190d2e..84a3ae7 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKAclReset.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKAclReset.html
@@ -34,9 +34,9 @@
 <span class="sourceLineNo">026</span>import org.apache.hadoop.conf.Configuration;<a name="line.26"></a>
 <span class="sourceLineNo">027</span>import org.apache.hadoop.conf.Configured;<a name="line.27"></a>
 <span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.hadoop.util.Tool;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.hadoop.util.ToolRunner;<a name="line.31"></a>
+<span class="sourceLineNo">029</span>import org.apache.hadoop.util.Tool;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.hadoop.util.ToolRunner;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.31"></a>
 <span class="sourceLineNo">032</span>import org.apache.zookeeper.ZooDefs;<a name="line.32"></a>
 <span class="sourceLineNo">033</span>import org.apache.zookeeper.ZooKeeper;<a name="line.33"></a>
 <span class="sourceLineNo">034</span><a name="line.34"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKClusterId.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKClusterId.html b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKClusterId.html
index 630054e..1b28843 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKClusterId.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKClusterId.html
@@ -31,8 +31,8 @@
 <span class="sourceLineNo">023</span><a name="line.23"></a>
 <span class="sourceLineNo">024</span>import org.apache.hadoop.hbase.Abortable;<a name="line.24"></a>
 <span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.ClusterId;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.27"></a>
+<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.27"></a>
 <span class="sourceLineNo">028</span>import org.apache.zookeeper.KeeperException;<a name="line.28"></a>
 <span class="sourceLineNo">029</span><a name="line.29"></a>
 <span class="sourceLineNo">030</span>/**<a name="line.30"></a>
@@ -98,7 +98,7 @@
 <span class="sourceLineNo">090</span>   * Get the UUID for the provided ZK watcher. Doesn't handle any ZK exceptions<a name="line.90"></a>
 <span class="sourceLineNo">091</span>   * @param zkw watcher connected to an ensemble<a name="line.91"></a>
 <span class="sourceLineNo">092</span>   * @return the UUID read from zookeeper<a name="line.92"></a>
-<span class="sourceLineNo">093</span>   * @throws KeeperException<a name="line.93"></a>
+<span class="sourceLineNo">093</span>   * @throws KeeperException if a ZooKeeper operation fails<a name="line.93"></a>
 <span class="sourceLineNo">094</span>   */<a name="line.94"></a>
 <span class="sourceLineNo">095</span>  public static UUID getUUIDForCluster(ZKWatcher zkw) throws KeeperException {<a name="line.95"></a>
 <span class="sourceLineNo">096</span>    String uuid = readClusterIdZNode(zkw);<a name="line.96"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKLeaderManager.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKLeaderManager.html b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKLeaderManager.html
index 2d97db3..bf31a41 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKLeaderManager.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKLeaderManager.html
@@ -31,8 +31,8 @@
 <span class="sourceLineNo">023</span>import org.apache.commons.logging.Log;<a name="line.23"></a>
 <span class="sourceLineNo">024</span>import org.apache.commons.logging.LogFactory;<a name="line.24"></a>
 <span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.Stoppable;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.27"></a>
+<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.27"></a>
 <span class="sourceLineNo">028</span>import org.apache.zookeeper.KeeperException;<a name="line.28"></a>
 <span class="sourceLineNo">029</span><a name="line.29"></a>
 <span class="sourceLineNo">030</span>/**<a name="line.30"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKMainServer.HACK_UNTIL_ZOOKEEPER_1897_ZooKeeperMain.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKMainServer.HACK_UNTIL_ZOOKEEPER_1897_ZooKeeperMain.html b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKMainServer.HACK_UNTIL_ZOOKEEPER_1897_ZooKeeperMain.html
index 4ccd67d..89c161c 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKMainServer.HACK_UNTIL_ZOOKEEPER_1897_ZooKeeperMain.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKMainServer.HACK_UNTIL_ZOOKEEPER_1897_ZooKeeperMain.html
@@ -84,54 +84,58 @@
 <span class="sourceLineNo">076</span>  }<a name="line.76"></a>
 <span class="sourceLineNo">077</span><a name="line.77"></a>
 <span class="sourceLineNo">078</span>  /**<a name="line.78"></a>
-<span class="sourceLineNo">079</span>   * @param args<a name="line.79"></a>
+<span class="sourceLineNo">079</span>   * @param args the arguments to check<a name="line.79"></a>
 <span class="sourceLineNo">080</span>   * @return True if argument strings have a '-server' in them.<a name="line.80"></a>
 <span class="sourceLineNo">081</span>   */<a name="line.81"></a>
-<span class="sourceLineNo">082</span>  private static boolean hasServer(final String args[]) {<a name="line.82"></a>
+<span class="sourceLineNo">082</span>  private static boolean hasServer(final String[] args) {<a name="line.82"></a>
 <span class="sourceLineNo">083</span>    return args.length &gt; 0 &amp;&amp; args[0].equals(SERVER_ARG);<a name="line.83"></a>
 <span class="sourceLineNo">084</span>  }<a name="line.84"></a>
 <span class="sourceLineNo">085</span><a name="line.85"></a>
 <span class="sourceLineNo">086</span>  /**<a name="line.86"></a>
-<span class="sourceLineNo">087</span>   * @param args<a name="line.87"></a>
+<span class="sourceLineNo">087</span>   * @param args the arguments to check for command-line arguments<a name="line.87"></a>
 <span class="sourceLineNo">088</span>   * @return True if command-line arguments were passed.<a name="line.88"></a>
 <span class="sourceLineNo">089</span>   */<a name="line.89"></a>
-<span class="sourceLineNo">090</span>  private static boolean hasCommandLineArguments(final String args[]) {<a name="line.90"></a>
+<span class="sourceLineNo">090</span>  private static boolean hasCommandLineArguments(final String[] args) {<a name="line.90"></a>
 <span class="sourceLineNo">091</span>    if (hasServer(args)) {<a name="line.91"></a>
-<span class="sourceLineNo">092</span>      if (args.length &lt; 2) throw new IllegalStateException("-server param but no value");<a name="line.92"></a>
-<span class="sourceLineNo">093</span>      return args.length &gt; 2;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>    }<a name="line.94"></a>
-<span class="sourceLineNo">095</span>    return args.length &gt; 0;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>  }<a name="line.96"></a>
-<span class="sourceLineNo">097</span><a name="line.97"></a>
-<span class="sourceLineNo">098</span>  /**<a name="line.98"></a>
-<span class="sourceLineNo">099</span>   * Run the tool.<a name="line.99"></a>
-<span class="sourceLineNo">100</span>   * @param args Command line arguments. First arg is path to zookeepers file.<a name="line.100"></a>
-<span class="sourceLineNo">101</span>   */<a name="line.101"></a>
-<span class="sourceLineNo">102</span>  public static void main(String args[]) throws Exception {<a name="line.102"></a>
-<span class="sourceLineNo">103</span>    String [] newArgs = args;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>    if (!hasServer(args)) {<a name="line.104"></a>
-<span class="sourceLineNo">105</span>      // Add the zk ensemble from configuration if none passed on command-line.<a name="line.105"></a>
-<span class="sourceLineNo">106</span>      Configuration conf = HBaseConfiguration.create();<a name="line.106"></a>
-<span class="sourceLineNo">107</span>      String hostport = new ZKMainServer().parse(conf);<a name="line.107"></a>
-<span class="sourceLineNo">108</span>      if (hostport != null &amp;&amp; hostport.length() &gt; 0) {<a name="line.108"></a>
-<span class="sourceLineNo">109</span>        newArgs = new String[args.length + 2];<a name="line.109"></a>
-<span class="sourceLineNo">110</span>        System.arraycopy(args, 0, newArgs, 2, args.length);<a name="line.110"></a>
-<span class="sourceLineNo">111</span>        newArgs[0] = "-server";<a name="line.111"></a>
-<span class="sourceLineNo">112</span>        newArgs[1] = hostport;<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>    // If command-line arguments, run our hack so they are executed.<a name="line.115"></a>
-<span class="sourceLineNo">116</span>    // ZOOKEEPER-1897 was committed to zookeeper-3.4.6 but elsewhere in this class we say<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    // 3.4.6 breaks command-processing; TODO.<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    if (hasCommandLineArguments(args)) {<a name="line.118"></a>
-<span class="sourceLineNo">119</span>      HACK_UNTIL_ZOOKEEPER_1897_ZooKeeperMain zkm =<a name="line.119"></a>
-<span class="sourceLineNo">120</span>        new HACK_UNTIL_ZOOKEEPER_1897_ZooKeeperMain(newArgs);<a name="line.120"></a>
-<span class="sourceLineNo">121</span>      zkm.runCmdLine();<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    } else {<a name="line.122"></a>
-<span class="sourceLineNo">123</span>      ZooKeeperMain.main(newArgs);<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    }<a name="line.124"></a>
-<span class="sourceLineNo">125</span>  }<a name="line.125"></a>
-<span class="sourceLineNo">126</span>}<a name="line.126"></a>
+<span class="sourceLineNo">092</span>      if (args.length &lt; 2) {<a name="line.92"></a>
+<span class="sourceLineNo">093</span>        throw new IllegalStateException("-server param but no value");<a name="line.93"></a>
+<span class="sourceLineNo">094</span>      }<a name="line.94"></a>
+<span class="sourceLineNo">095</span><a name="line.95"></a>
+<span class="sourceLineNo">096</span>      return args.length &gt; 2;<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>    return args.length &gt; 0;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>  }<a name="line.100"></a>
+<span class="sourceLineNo">101</span><a name="line.101"></a>
+<span class="sourceLineNo">102</span>  /**<a name="line.102"></a>
+<span class="sourceLineNo">103</span>   * Run the tool.<a name="line.103"></a>
+<span class="sourceLineNo">104</span>   * @param args Command line arguments. First arg is path to zookeepers file.<a name="line.104"></a>
+<span class="sourceLineNo">105</span>   */<a name="line.105"></a>
+<span class="sourceLineNo">106</span>  public static void main(String[] args) throws Exception {<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    String [] newArgs = args;<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    if (!hasServer(args)) {<a name="line.108"></a>
+<span class="sourceLineNo">109</span>      // Add the zk ensemble from configuration if none passed on command-line.<a name="line.109"></a>
+<span class="sourceLineNo">110</span>      Configuration conf = HBaseConfiguration.create();<a name="line.110"></a>
+<span class="sourceLineNo">111</span>      String hostport = new ZKMainServer().parse(conf);<a name="line.111"></a>
+<span class="sourceLineNo">112</span>      if (hostport != null &amp;&amp; hostport.length() &gt; 0) {<a name="line.112"></a>
+<span class="sourceLineNo">113</span>        newArgs = new String[args.length + 2];<a name="line.113"></a>
+<span class="sourceLineNo">114</span>        System.arraycopy(args, 0, newArgs, 2, args.length);<a name="line.114"></a>
+<span class="sourceLineNo">115</span>        newArgs[0] = "-server";<a name="line.115"></a>
+<span class="sourceLineNo">116</span>        newArgs[1] = hostport;<a name="line.116"></a>
+<span class="sourceLineNo">117</span>      }<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    }<a name="line.118"></a>
+<span class="sourceLineNo">119</span>    // If command-line arguments, run our hack so they are executed.<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    // ZOOKEEPER-1897 was committed to zookeeper-3.4.6 but elsewhere in this class we say<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    // 3.4.6 breaks command-processing; TODO.<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    if (hasCommandLineArguments(args)) {<a name="line.122"></a>
+<span class="sourceLineNo">123</span>      HACK_UNTIL_ZOOKEEPER_1897_ZooKeeperMain zkm =<a name="line.123"></a>
+<span class="sourceLineNo">124</span>        new HACK_UNTIL_ZOOKEEPER_1897_ZooKeeperMain(newArgs);<a name="line.124"></a>
+<span class="sourceLineNo">125</span>      zkm.runCmdLine();<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    } else {<a name="line.126"></a>
+<span class="sourceLineNo">127</span>      ZooKeeperMain.main(newArgs);<a name="line.127"></a>
+<span class="sourceLineNo">128</span>    }<a name="line.128"></a>
+<span class="sourceLineNo">129</span>  }<a name="line.129"></a>
+<span class="sourceLineNo">130</span>}<a name="line.130"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKMainServer.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKMainServer.html b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKMainServer.html
index 4ccd67d..89c161c 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKMainServer.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKMainServer.html
@@ -84,54 +84,58 @@
 <span class="sourceLineNo">076</span>  }<a name="line.76"></a>
 <span class="sourceLineNo">077</span><a name="line.77"></a>
 <span class="sourceLineNo">078</span>  /**<a name="line.78"></a>
-<span class="sourceLineNo">079</span>   * @param args<a name="line.79"></a>
+<span class="sourceLineNo">079</span>   * @param args the arguments to check<a name="line.79"></a>
 <span class="sourceLineNo">080</span>   * @return True if argument strings have a '-server' in them.<a name="line.80"></a>
 <span class="sourceLineNo">081</span>   */<a name="line.81"></a>
-<span class="sourceLineNo">082</span>  private static boolean hasServer(final String args[]) {<a name="line.82"></a>
+<span class="sourceLineNo">082</span>  private static boolean hasServer(final String[] args) {<a name="line.82"></a>
 <span class="sourceLineNo">083</span>    return args.length &gt; 0 &amp;&amp; args[0].equals(SERVER_ARG);<a name="line.83"></a>
 <span class="sourceLineNo">084</span>  }<a name="line.84"></a>
 <span class="sourceLineNo">085</span><a name="line.85"></a>
 <span class="sourceLineNo">086</span>  /**<a name="line.86"></a>
-<span class="sourceLineNo">087</span>   * @param args<a name="line.87"></a>
+<span class="sourceLineNo">087</span>   * @param args the arguments to check for command-line arguments<a name="line.87"></a>
 <span class="sourceLineNo">088</span>   * @return True if command-line arguments were passed.<a name="line.88"></a>
 <span class="sourceLineNo">089</span>   */<a name="line.89"></a>
-<span class="sourceLineNo">090</span>  private static boolean hasCommandLineArguments(final String args[]) {<a name="line.90"></a>
+<span class="sourceLineNo">090</span>  private static boolean hasCommandLineArguments(final String[] args) {<a name="line.90"></a>
 <span class="sourceLineNo">091</span>    if (hasServer(args)) {<a name="line.91"></a>
-<span class="sourceLineNo">092</span>      if (args.length &lt; 2) throw new IllegalStateException("-server param but no value");<a name="line.92"></a>
-<span class="sourceLineNo">093</span>      return args.length &gt; 2;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>    }<a name="line.94"></a>
-<span class="sourceLineNo">095</span>    return args.length &gt; 0;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>  }<a name="line.96"></a>
-<span class="sourceLineNo">097</span><a name="line.97"></a>
-<span class="sourceLineNo">098</span>  /**<a name="line.98"></a>
-<span class="sourceLineNo">099</span>   * Run the tool.<a name="line.99"></a>
-<span class="sourceLineNo">100</span>   * @param args Command line arguments. First arg is path to zookeepers file.<a name="line.100"></a>
-<span class="sourceLineNo">101</span>   */<a name="line.101"></a>
-<span class="sourceLineNo">102</span>  public static void main(String args[]) throws Exception {<a name="line.102"></a>
-<span class="sourceLineNo">103</span>    String [] newArgs = args;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>    if (!hasServer(args)) {<a name="line.104"></a>
-<span class="sourceLineNo">105</span>      // Add the zk ensemble from configuration if none passed on command-line.<a name="line.105"></a>
-<span class="sourceLineNo">106</span>      Configuration conf = HBaseConfiguration.create();<a name="line.106"></a>
-<span class="sourceLineNo">107</span>      String hostport = new ZKMainServer().parse(conf);<a name="line.107"></a>
-<span class="sourceLineNo">108</span>      if (hostport != null &amp;&amp; hostport.length() &gt; 0) {<a name="line.108"></a>
-<span class="sourceLineNo">109</span>        newArgs = new String[args.length + 2];<a name="line.109"></a>
-<span class="sourceLineNo">110</span>        System.arraycopy(args, 0, newArgs, 2, args.length);<a name="line.110"></a>
-<span class="sourceLineNo">111</span>        newArgs[0] = "-server";<a name="line.111"></a>
-<span class="sourceLineNo">112</span>        newArgs[1] = hostport;<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>    // If command-line arguments, run our hack so they are executed.<a name="line.115"></a>
-<span class="sourceLineNo">116</span>    // ZOOKEEPER-1897 was committed to zookeeper-3.4.6 but elsewhere in this class we say<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    // 3.4.6 breaks command-processing; TODO.<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    if (hasCommandLineArguments(args)) {<a name="line.118"></a>
-<span class="sourceLineNo">119</span>      HACK_UNTIL_ZOOKEEPER_1897_ZooKeeperMain zkm =<a name="line.119"></a>
-<span class="sourceLineNo">120</span>        new HACK_UNTIL_ZOOKEEPER_1897_ZooKeeperMain(newArgs);<a name="line.120"></a>
-<span class="sourceLineNo">121</span>      zkm.runCmdLine();<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    } else {<a name="line.122"></a>
-<span class="sourceLineNo">123</span>      ZooKeeperMain.main(newArgs);<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    }<a name="line.124"></a>
-<span class="sourceLineNo">125</span>  }<a name="line.125"></a>
-<span class="sourceLineNo">126</span>}<a name="line.126"></a>
+<span class="sourceLineNo">092</span>      if (args.length &lt; 2) {<a name="line.92"></a>
+<span class="sourceLineNo">093</span>        throw new IllegalStateException("-server param but no value");<a name="line.93"></a>
+<span class="sourceLineNo">094</span>      }<a name="line.94"></a>
+<span class="sourceLineNo">095</span><a name="line.95"></a>
+<span class="sourceLineNo">096</span>      return args.length &gt; 2;<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>    return args.length &gt; 0;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>  }<a name="line.100"></a>
+<span class="sourceLineNo">101</span><a name="line.101"></a>
+<span class="sourceLineNo">102</span>  /**<a name="line.102"></a>
+<span class="sourceLineNo">103</span>   * Run the tool.<a name="line.103"></a>
+<span class="sourceLineNo">104</span>   * @param args Command line arguments. First arg is path to zookeepers file.<a name="line.104"></a>
+<span class="sourceLineNo">105</span>   */<a name="line.105"></a>
+<span class="sourceLineNo">106</span>  public static void main(String[] args) throws Exception {<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    String [] newArgs = args;<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    if (!hasServer(args)) {<a name="line.108"></a>
+<span class="sourceLineNo">109</span>      // Add the zk ensemble from configuration if none passed on command-line.<a name="line.109"></a>
+<span class="sourceLineNo">110</span>      Configuration conf = HBaseConfiguration.create();<a name="line.110"></a>
+<span class="sourceLineNo">111</span>      String hostport = new ZKMainServer().parse(conf);<a name="line.111"></a>
+<span class="sourceLineNo">112</span>      if (hostport != null &amp;&amp; hostport.length() &gt; 0) {<a name="line.112"></a>
+<span class="sourceLineNo">113</span>        newArgs = new String[args.length + 2];<a name="line.113"></a>
+<span class="sourceLineNo">114</span>        System.arraycopy(args, 0, newArgs, 2, args.length);<a name="line.114"></a>
+<span class="sourceLineNo">115</span>        newArgs[0] = "-server";<a name="line.115"></a>
+<span class="sourceLineNo">116</span>        newArgs[1] = hostport;<a name="line.116"></a>
+<span class="sourceLineNo">117</span>      }<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    }<a name="line.118"></a>
+<span class="sourceLineNo">119</span>    // If command-line arguments, run our hack so they are executed.<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    // ZOOKEEPER-1897 was committed to zookeeper-3.4.6 but elsewhere in this class we say<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    // 3.4.6 breaks command-processing; TODO.<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    if (hasCommandLineArguments(args)) {<a name="line.122"></a>
+<span class="sourceLineNo">123</span>      HACK_UNTIL_ZOOKEEPER_1897_ZooKeeperMain zkm =<a name="line.123"></a>
+<span class="sourceLineNo">124</span>        new HACK_UNTIL_ZOOKEEPER_1897_ZooKeeperMain(newArgs);<a name="line.124"></a>
+<span class="sourceLineNo">125</span>      zkm.runCmdLine();<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    } else {<a name="line.126"></a>
+<span class="sourceLineNo">127</span>      ZooKeeperMain.main(newArgs);<a name="line.127"></a>
+<span class="sourceLineNo">128</span>    }<a name="line.128"></a>
+<span class="sourceLineNo">129</span>  }<a name="line.129"></a>
+<span class="sourceLineNo">130</span>}<a name="line.130"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.html b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.html
index 4227920..511563d 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.html
@@ -61,202 +61,208 @@
 <span class="sourceLineNo">053</span>   *<a name="line.53"></a>
 <span class="sourceLineNo">054</span>   * &lt;p&gt;After construction, use {@link #start} to kick off tracking.<a name="line.54"></a>
 <span class="sourceLineNo">055</span>   *<a name="line.55"></a>
-<span class="sourceLineNo">056</span>   * @param watcher<a name="line.56"></a>
-<span class="sourceLineNo">057</span>   * @param node<a name="line.57"></a>
-<span class="sourceLineNo">058</span>   * @param abortable<a name="line.58"></a>
-<span class="sourceLineNo">059</span>   */<a name="line.59"></a>
-<span class="sourceLineNo">060</span>  public ZKNodeTracker(ZKWatcher watcher, String node,<a name="line.60"></a>
-<span class="sourceLineNo">061</span>                       Abortable abortable) {<a name="line.61"></a>
-<span class="sourceLineNo">062</span>    super(watcher);<a name="line.62"></a>
-<span class="sourceLineNo">063</span>    this.node = node;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>    this.abortable = abortable;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>    this.data = null;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>  }<a name="line.66"></a>
-<span class="sourceLineNo">067</span><a name="line.67"></a>
-<span class="sourceLineNo">068</span>  /**<a name="line.68"></a>
-<span class="sourceLineNo">069</span>   * Starts the tracking of the node in ZooKeeper.<a name="line.69"></a>
-<span class="sourceLineNo">070</span>   *<a name="line.70"></a>
-<span class="sourceLineNo">071</span>   * &lt;p&gt;Use {@link #blockUntilAvailable()} to block until the node is available<a name="line.71"></a>
-<span class="sourceLineNo">072</span>   * or {@link #getData(boolean)} to get the data of the node if it is available.<a name="line.72"></a>
-<span class="sourceLineNo">073</span>   */<a name="line.73"></a>
-<span class="sourceLineNo">074</span>  public synchronized void start() {<a name="line.74"></a>
-<span class="sourceLineNo">075</span>    this.watcher.registerListener(this);<a name="line.75"></a>
-<span class="sourceLineNo">076</span>    try {<a name="line.76"></a>
-<span class="sourceLineNo">077</span>      if(ZKUtil.watchAndCheckExists(watcher, node)) {<a name="line.77"></a>
-<span class="sourceLineNo">078</span>        byte [] data = ZKUtil.getDataAndWatch(watcher, node);<a name="line.78"></a>
-<span class="sourceLineNo">079</span>        if(data != null) {<a name="line.79"></a>
-<span class="sourceLineNo">080</span>          this.data = data;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>        } else {<a name="line.81"></a>
-<span class="sourceLineNo">082</span>          // It existed but now does not, try again to ensure a watch is set<a name="line.82"></a>
-<span class="sourceLineNo">083</span>          LOG.debug("Try starting again because there is no data from " + node);<a name="line.83"></a>
-<span class="sourceLineNo">084</span>          start();<a name="line.84"></a>
-<span class="sourceLineNo">085</span>        }<a name="line.85"></a>
-<span class="sourceLineNo">086</span>      }<a name="line.86"></a>
-<span class="sourceLineNo">087</span>    } catch (KeeperException e) {<a name="line.87"></a>
-<span class="sourceLineNo">088</span>      abortable.abort("Unexpected exception during initialization, aborting", e);<a name="line.88"></a>
-<span class="sourceLineNo">089</span>    }<a name="line.89"></a>
-<span class="sourceLineNo">090</span>  }<a name="line.90"></a>
-<span class="sourceLineNo">091</span><a name="line.91"></a>
-<span class="sourceLineNo">092</span>  public synchronized void stop() {<a name="line.92"></a>
-<span class="sourceLineNo">093</span>    this.stopped = true;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>    notifyAll();<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>  /**<a name="line.97"></a>
-<span class="sourceLineNo">098</span>   * Gets the data of the node, blocking until the node is available.<a name="line.98"></a>
-<span class="sourceLineNo">099</span>   *<a name="line.99"></a>
-<span class="sourceLineNo">100</span>   * @return data of the node<a name="line.100"></a>
-<span class="sourceLineNo">101</span>   * @throws InterruptedException if the waiting thread is interrupted<a name="line.101"></a>
-<span class="sourceLineNo">102</span>   */<a name="line.102"></a>
-<span class="sourceLineNo">103</span>  public synchronized byte [] blockUntilAvailable()<a name="line.103"></a>
-<span class="sourceLineNo">104</span>  throws InterruptedException {<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    return blockUntilAvailable(0, false);<a name="line.105"></a>
-<span class="sourceLineNo">106</span>  }<a name="line.106"></a>
-<span class="sourceLineNo">107</span><a name="line.107"></a>
-<span class="sourceLineNo">108</span>  /**<a name="line.108"></a>
-<span class="sourceLineNo">109</span>   * Gets the data of the node, blocking until the node is available or the<a name="line.109"></a>
-<span class="sourceLineNo">110</span>   * specified timeout has elapsed.<a name="line.110"></a>
-<span class="sourceLineNo">111</span>   *<a name="line.111"></a>
-<span class="sourceLineNo">112</span>   * @param timeout maximum time to wait for the node data to be available,<a name="line.112"></a>
-<span class="sourceLineNo">113</span>   * n milliseconds.  Pass 0 for no timeout.<a name="line.113"></a>
-<span class="sourceLineNo">114</span>   * @return data of the node<a name="line.114"></a>
-<span class="sourceLineNo">115</span>   * @throws InterruptedException if the waiting thread is interrupted<a name="line.115"></a>
-<span class="sourceLineNo">116</span>   */<a name="line.116"></a>
-<span class="sourceLineNo">117</span>  public synchronized byte [] blockUntilAvailable(long timeout, boolean refresh)<a name="line.117"></a>
-<span class="sourceLineNo">118</span>  throws InterruptedException {<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    if (timeout &lt; 0) throw new IllegalArgumentException();<a name="line.119"></a>
-<span class="sourceLineNo">120</span>    boolean notimeout = timeout == 0;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    long startTime = System.currentTimeMillis();<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    long remaining = timeout;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    if (refresh) {<a name="line.123"></a>
-<span class="sourceLineNo">124</span>      try {<a name="line.124"></a>
-<span class="sourceLineNo">125</span>        // This does not create a watch if the node does not exists<a name="line.125"></a>
-<span class="sourceLineNo">126</span>        this.data = ZKUtil.getDataAndWatch(watcher, node);<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      } catch(KeeperException e) {<a name="line.127"></a>
-<span class="sourceLineNo">128</span>        // We use to abort here, but in some cases the abort is ignored (<a name="line.128"></a>
-<span class="sourceLineNo">129</span>        //  (empty Abortable), so it's better to log...<a name="line.129"></a>
-<span class="sourceLineNo">130</span>        LOG.warn("Unexpected exception handling blockUntilAvailable", e);<a name="line.130"></a>
-<span class="sourceLineNo">131</span>        abortable.abort("Unexpected exception handling blockUntilAvailable", e);<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>    boolean nodeExistsChecked = (!refresh ||data!=null);<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    while (!this.stopped &amp;&amp; (notimeout || remaining &gt; 0) &amp;&amp; this.data == null) {<a name="line.135"></a>
-<span class="sourceLineNo">136</span>      if (!nodeExistsChecked) {<a name="line.136"></a>
-<span class="sourceLineNo">137</span>        try {<a name="line.137"></a>
-<span class="sourceLineNo">138</span>          nodeExistsChecked = (ZKUtil.checkExists(watcher, node) != -1);<a name="line.138"></a>
-<span class="sourceLineNo">139</span>        } catch (KeeperException e) {<a name="line.139"></a>
-<span class="sourceLineNo">140</span>          LOG.warn(<a name="line.140"></a>
-<span class="sourceLineNo">141</span>            "Got exception while trying to check existence in  ZooKeeper" +<a name="line.141"></a>
-<span class="sourceLineNo">142</span>            " of the node: "+node+", retrying if timeout not reached",e );<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>        // It did not exists, and now it does.<a name="line.145"></a>
-<span class="sourceLineNo">146</span>        if (nodeExistsChecked){<a name="line.146"></a>
-<span class="sourceLineNo">147</span>          LOG.debug("Node " + node + " now exists, resetting a watcher");<a name="line.147"></a>
-<span class="sourceLineNo">148</span>          try {<a name="line.148"></a>
-<span class="sourceLineNo">149</span>            // This does not create a watch if the node does not exists<a name="line.149"></a>
-<span class="sourceLineNo">150</span>            this.data = ZKUtil.getDataAndWatch(watcher, node);<a name="line.150"></a>
-<span class="sourceLineNo">151</span>          } catch (KeeperException e) {<a name="line.151"></a>
-<span class="sourceLineNo">152</span>            LOG.warn("Unexpected exception handling blockUntilAvailable", e);<a name="line.152"></a>
-<span class="sourceLineNo">153</span>            abortable.abort("Unexpected exception handling blockUntilAvailable", e);<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>      // We expect a notification; but we wait with a<a name="line.157"></a>
-<span class="sourceLineNo">158</span>      //  a timeout to lower the impact of a race condition if any<a name="line.158"></a>
-<span class="sourceLineNo">159</span>      wait(100);<a name="line.159"></a>
-<span class="sourceLineNo">160</span>      remaining = timeout - (System.currentTimeMillis() - startTime);<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    }<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    return this.data;<a name="line.162"></a>
-<span class="sourceLineNo">163</span>  }<a name="line.163"></a>
-<span class="sourceLineNo">164</span><a name="line.164"></a>
-<span class="sourceLineNo">165</span>  /**<a name="line.165"></a>
-<span class="sourceLineNo">166</span>   * Gets the data of the node.<a name="line.166"></a>
-<span class="sourceLineNo">167</span>   *<a name="line.167"></a>
-<span class="sourceLineNo">168</span>   * &lt;p&gt;If the node is currently available, the most up-to-date known version of<a name="line.168"></a>
-<span class="sourceLineNo">169</span>   * the data is returned.  If the node is not currently available, null is<a name="line.169"></a>
-<span class="sourceLineNo">170</span>   * returned.<a name="line.170"></a>
-<span class="sourceLineNo">171</span>   * @param refresh whether to refresh the data by calling ZK directly.<a name="line.171"></a>
-<span class="sourceLineNo">172</span>   * @return data of the node, null if unavailable<a name="line.172"></a>
-<span class="sourceLineNo">173</span>   */<a name="line.173"></a>
-<span class="sourceLineNo">174</span>  public synchronized byte [] getData(boolean refresh) {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    if (refresh) {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>      try {<a name="line.176"></a>
-<span class="sourceLineNo">177</span>        this.data = ZKUtil.getDataAndWatch(watcher, node);<a name="line.177"></a>
-<span class="sourceLineNo">178</span>      } catch(KeeperException e) {<a name="line.178"></a>
-<span class="sourceLineNo">179</span>        abortable.abort("Unexpected exception handling getData", e);<a name="line.179"></a>
-<span class="sourceLineNo">180</span>      }<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    }<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    return this.data;<a name="line.182"></a>
-<span class="sourceLineNo">183</span>  }<a name="line.183"></a>
-<span class="sourceLineNo">184</span><a name="line.184"></a>
-<span class="sourceLineNo">185</span>  public String getNode() {<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    return this.node;<a name="line.186"></a>
-<span class="sourceLineNo">187</span>  }<a name="line.187"></a>
-<span class="sourceLineNo">188</span><a name="line.188"></a>
-<span class="sourceLineNo">189</span>  @Override<a name="line.189"></a>
-<span class="sourceLineNo">190</span>  public synchronized void nodeCreated(String path) {<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    if (!path.equals(node)) return;<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    try {<a name="line.192"></a>
-<span class="sourceLineNo">193</span>      byte [] data = ZKUtil.getDataAndWatch(watcher, node);<a name="line.193"></a>
-<span class="sourceLineNo">194</span>      if (data != null) {<a name="line.194"></a>
-<span class="sourceLineNo">195</span>        this.data = data;<a name="line.195"></a>
-<span class="sourceLineNo">196</span>        notifyAll();<a name="line.196"></a>
-<span class="sourceLineNo">197</span>      } else {<a name="line.197"></a>
-<span class="sourceLineNo">198</span>        nodeDeleted(path);<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      }<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    } catch(KeeperException e) {<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      abortable.abort("Unexpected exception handling nodeCreated event", e);<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    }<a name="line.202"></a>
-<span class="sourceLineNo">203</span>  }<a name="line.203"></a>
-<span class="sourceLineNo">204</span><a name="line.204"></a>
-<span class="sourceLineNo">205</span>  @Override<a name="line.205"></a>
-<span class="sourceLineNo">206</span>  public synchronized void nodeDeleted(String path) {<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    if(path.equals(node)) {<a name="line.207"></a>
-<span class="sourceLineNo">208</span>      try {<a name="line.208"></a>
-<span class="sourceLineNo">209</span>        if(ZKUtil.watchAndCheckExists(watcher, node)) {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>          nodeCreated(path);<a name="line.210"></a>
-<span class="sourceLineNo">211</span>        } else {<a name="line.211"></a>
-<span class="sourceLineNo">212</span>          this.data = null;<a name="line.212"></a>
-<span class="sourceLineNo">213</span>        }<a name="line.213"></a>
-<span class="sourceLineNo">214</span>      } catch(KeeperException e) {<a name="line.214"></a>
-<span class="sourceLineNo">215</span>        abortable.abort("Unexpected exception handling nodeDeleted event", e);<a name="line.215"></a>
-<span class="sourceLineNo">216</span>      }<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    }<a name="line.217"></a>
-<span class="sourceLineNo">218</span>  }<a name="line.218"></a>
-<span class="sourceLineNo">219</span><a name="line.219"></a>
-<span class="sourceLineNo">220</span>  @Override<a name="line.220"></a>
-<span class="sourceLineNo">221</span>  public synchronized void nodeDataChanged(String path) {<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    if(path.equals(node)) {<a name="line.222"></a>
-<span class="sourceLineNo">223</span>      nodeCreated(path);<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    }<a name="line.224"></a>
-<span class="sourceLineNo">225</span>  }<a name="line.225"></a>
-<span class="sourceLineNo">226</span><a name="line.226"></a>
-<span class="sourceLineNo">227</span>  /**<a name="line.227"></a>
-<span class="sourceLineNo">228</span>   * Checks if the baseznode set as per the property 'zookeeper.znode.parent'<a name="line.228"></a>
-<span class="sourceLineNo">229</span>   * exists.<a name="line.229"></a>
-<span class="sourceLineNo">230</span>   * @return true if baseznode exists.<a name="line.230"></a>
-<span class="sourceLineNo">231</span>   *         false if doesnot exists.<a name="line.231"></a>
-<span class="sourceLineNo">232</span>   */<a name="line.232"></a>
-<span class="sourceLineNo">233</span>  public boolean checkIfBaseNodeAvailable() {<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    try {<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      if (ZKUtil.checkExists(watcher, watcher.znodePaths.baseZNode) == -1) {<a name="line.235"></a>
-<span class="sourceLineNo">236</span>        return false;<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      }<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    } catch (KeeperException e) {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>      abortable.abort("Exception while checking if basenode (" + watcher.znodePaths.baseZNode<a name="line.239"></a>
-<span class="sourceLineNo">240</span>          + ") exists in ZooKeeper.",<a name="line.240"></a>
-<span class="sourceLineNo">241</span>        e);<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    }<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    return true;<a name="line.243"></a>
-<span class="sourceLineNo">244</span>  }<a name="line.244"></a>
-<span class="sourceLineNo">245</span><a name="line.245"></a>
-<span class="sourceLineNo">246</span>  @Override<a name="line.246"></a>
-<span class="sourceLineNo">247</span>  public String toString() {<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    return "ZKNodeTracker{" +<a name="line.248"></a>
-<span class="sourceLineNo">249</span>        "node='" + node + ", stopped=" + stopped + '}';<a name="line.249"></a>
+<span class="sourceLineNo">056</span>   * @param watcher reference to the {@link ZKWatcher} which also contains configuration and<a name="line.56"></a>
+<span class="sourceLineNo">057</span>   *                constants<a name="line.57"></a>
+<span class="sourceLineNo">058</span>   * @param node path of the node being tracked<a name="line.58"></a>
+<span class="sourceLineNo">059</span>   * @param abortable used to abort if a fatal error occurs<a name="line.59"></a>
+<span class="sourceLineNo">060</span>   */<a name="line.60"></a>
+<span class="sourceLineNo">061</span>  public ZKNodeTracker(ZKWatcher watcher, String node,<a name="line.61"></a>
+<span class="sourceLineNo">062</span>                       Abortable abortable) {<a name="line.62"></a>
+<span class="sourceLineNo">063</span>    super(watcher);<a name="line.63"></a>
+<span class="sourceLineNo">064</span>    this.node = node;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>    this.abortable = abortable;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>    this.data = null;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>  }<a name="line.67"></a>
+<span class="sourceLineNo">068</span><a name="line.68"></a>
+<span class="sourceLineNo">069</span>  /**<a name="line.69"></a>
+<span class="sourceLineNo">070</span>   * Starts the tracking of the node in ZooKeeper.<a name="line.70"></a>
+<span class="sourceLineNo">071</span>   *<a name="line.71"></a>
+<span class="sourceLineNo">072</span>   * &lt;p&gt;Use {@link #blockUntilAvailable()} to block until the node is available<a name="line.72"></a>
+<span class="sourceLineNo">073</span>   * or {@link #getData(boolean)} to get the data of the node if it is available.<a name="line.73"></a>
+<span class="sourceLineNo">074</span>   */<a name="line.74"></a>
+<span class="sourceLineNo">075</span>  public synchronized void start() {<a name="line.75"></a>
+<span class="sourceLineNo">076</span>    this.watcher.registerListener(this);<a name="line.76"></a>
+<span class="sourceLineNo">077</span>    try {<a name="line.77"></a>
+<span class="sourceLineNo">078</span>      if(ZKUtil.watchAndCheckExists(watcher, node)) {<a name="line.78"></a>
+<span class="sourceLineNo">079</span>        byte [] data = ZKUtil.getDataAndWatch(watcher, node);<a name="line.79"></a>
+<span class="sourceLineNo">080</span>        if(data != null) {<a name="line.80"></a>
+<span class="sourceLineNo">081</span>          this.data = data;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>        } else {<a name="line.82"></a>
+<span class="sourceLineNo">083</span>          // It existed but now does not, try again to ensure a watch is set<a name="line.83"></a>
+<span class="sourceLineNo">084</span>          LOG.debug("Try starting again because there is no data from " + node);<a name="line.84"></a>
+<span class="sourceLineNo">085</span>          start();<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>    } catch (KeeperException e) {<a name="line.88"></a>
+<span class="sourceLineNo">089</span>      abortable.abort("Unexpected exception during initialization, aborting", e);<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><a name="line.92"></a>
+<span class="sourceLineNo">093</span>  public synchronized void stop() {<a name="line.93"></a>
+<span class="sourceLineNo">094</span>    this.stopped = true;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>    notifyAll();<a name="line.95"></a>
+<span class="sourceLineNo">096</span>  }<a name="line.96"></a>
+<span class="sourceLineNo">097</span><a name="line.97"></a>
+<span class="sourceLineNo">098</span>  /**<a name="line.98"></a>
+<span class="sourceLineNo">099</span>   * Gets the data of the node, blocking until the node is available.<a name="line.99"></a>
+<span class="sourceLineNo">100</span>   *<a name="line.100"></a>
+<span class="sourceLineNo">101</span>   * @return data of the node<a name="line.101"></a>
+<span class="sourceLineNo">102</span>   * @throws InterruptedException if the waiting thread is interrupted<a name="line.102"></a>
+<span class="sourceLineNo">103</span>   */<a name="line.103"></a>
+<span class="sourceLineNo">104</span>  public synchronized byte [] blockUntilAvailable()<a name="line.104"></a>
+<span class="sourceLineNo">105</span>  throws InterruptedException {<a name="line.105"></a>
+<span class="sourceLineNo">106</span>    return blockUntilAvailable(0, false);<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>  /**<a name="line.109"></a>
+<span class="sourceLineNo">110</span>   * Gets the data of the node, blocking until the node is available or the<a name="line.110"></a>
+<span class="sourceLineNo">111</span>   * specified timeout has elapsed.<a name="line.111"></a>
+<span class="sourceLineNo">112</span>   *<a name="line.112"></a>
+<span class="sourceLineNo">113</span>   * @param timeout maximum time to wait for the node data to be available, n milliseconds. Pass 0<a name="line.113"></a>
+<span class="sourceLineNo">114</span>   *                for no timeout.<a name="line.114"></a>
+<span class="sourceLineNo">115</span>   * @return data of the node<a name="line.115"></a>
+<span class="sourceLineNo">116</span>   * @throws InterruptedException if the waiting thread is interrupted<a name="line.116"></a>
+<span class="sourceLineNo">117</span>   */<a name="line.117"></a>
+<span class="sourceLineNo">118</span>  public synchronized byte [] blockUntilAvailable(long timeout, boolean refresh)<a name="line.118"></a>
+<span class="sourceLineNo">119</span>          throws InterruptedException {<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    if (timeout &lt; 0) {<a name="line.120"></a>
+<span class="sourceLineNo">121</span>      throw new IllegalArgumentException();<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>    boolean notimeout = timeout == 0;<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    long startTime = System.currentTimeMillis();<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    long remaining = timeout;<a name="line.126"></a>
+<span class="sourceLineNo">127</span>    if (refresh) {<a name="line.127"></a>
+<span class="sourceLineNo">128</span>      try {<a name="line.128"></a>
+<span class="sourceLineNo">129</span>        // This does not create a watch if the node does not exists<a name="line.129"></a>
+<span class="sourceLineNo">130</span>        this.data = ZKUtil.getDataAndWatch(watcher, node);<a name="line.130"></a>
+<span class="sourceLineNo">131</span>      } catch(KeeperException e) {<a name="line.131"></a>
+<span class="sourceLineNo">132</span>        // We use to abort here, but in some cases the abort is ignored (<a name="line.132"></a>
+<span class="sourceLineNo">133</span>        //  (empty Abortable), so it's better to log...<a name="line.133"></a>
+<span class="sourceLineNo">134</span>        LOG.warn("Unexpected exception handling blockUntilAvailable", e);<a name="line.134"></a>
+<span class="sourceLineNo">135</span>        abortable.abort("Unexpected exception handling blockUntilAvailable", e);<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>    boolean nodeExistsChecked = (!refresh ||data!=null);<a name="line.138"></a>
+<span class="sourceLineNo">139</span>    while (!this.stopped &amp;&amp; (notimeout || remaining &gt; 0) &amp;&amp; this.data == null) {<a name="line.139"></a>
+<span class="sourceLineNo">140</span>      if (!nodeExistsChecked) {<a name="line.140"></a>
+<span class="sourceLineNo">141</span>        try {<a name="line.141"></a>
+<span class="sourceLineNo">142</span>          nodeExistsChecked = (ZKUtil.checkExists(watcher, node) != -1);<a name="line.142"></a>
+<span class="sourceLineNo">143</span>        } catch (KeeperException e) {<a name="line.143"></a>
+<span class="sourceLineNo">144</span>          LOG.warn("Got exception while trying to check existence in  ZooKeeper" +<a name="line.144"></a>
+<span class="sourceLineNo">145</span>            " of the node: " + node + ", retrying if timeout not reached", e);<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>        // It did not exists, and now it does.<a name="line.148"></a>
+<span class="sourceLineNo">149</span>        if (nodeExistsChecked){<a name="line.149"></a>
+<span class="sourceLineNo">150</span>          LOG.debug("Node " + node + " now exists, resetting a watcher");<a name="line.150"></a>
+<span class="sourceLineNo">151</span>          try {<a name="line.151"></a>
+<span class="sourceLineNo">152</span>            // This does not create a watch if the node does not exists<a name="line.152"></a>
+<span class="sourceLineNo">153</span>            this.data = ZKUtil.getDataAndWatch(watcher, node);<a name="line.153"></a>
+<span class="sourceLineNo">154</span>          } catch (KeeperException e) {<a name="line.154"></a>
+<span class="sourceLineNo">155</span>            LOG.warn("Unexpected exception handling blockUntilAvailable", e);<a name="line.155"></a>
+<span class="sourceLineNo">156</span>            abortable.abort("Unexpected exception handling blockUntilAvailable", e);<a name="line.156"></a>
+<span class="sourceLineNo">157</span>          }<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>      // We expect a notification; but we wait with a<a name="line.160"></a>
+<span class="sourceLineNo">161</span>      //  a timeout to lower the impact of a race condition if any<a name="line.161"></a>
+<span class="sourceLineNo">162</span>      wait(100);<a name="line.162"></a>
+<span class="sourceLineNo">163</span>      remaining = timeout - (System.currentTimeMillis() - startTime);<a name="line.163"></a>
+<span class="sourceLineNo">164</span>    }<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    return this.data;<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>  /**<a name="line.168"></a>
+<span class="sourceLineNo">169</span>   * Gets the data of the node.<a name="line.169"></a>
+<span class="sourceLineNo">170</span>   *<a name="line.170"></a>
+<span class="sourceLineNo">171</span>   * &lt;p&gt;If the node is currently available, the most up-to-date known version of<a name="line.171"></a>
+<span class="sourceLineNo">172</span>   * the data is returned.  If the node is not currently available, null is<a name="line.172"></a>
+<span class="sourceLineNo">173</span>   * returned.<a name="line.173"></a>
+<span class="sourceLineNo">174</span>   * @param refresh whether to refresh the data by calling ZK directly.<a name="line.174"></a>
+<span class="sourceLineNo">175</span>   * @return data of the node, null if unavailable<a name="line.175"></a>
+<span class="sourceLineNo">176</span>   */<a name="line.176"></a>
+<span class="sourceLineNo">177</span>  public synchronized byte [] getData(boolean refresh) {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    if (refresh) {<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      try {<a name="line.179"></a>
+<span class="sourceLineNo">180</span>        this.data = ZKUtil.getDataAndWatch(watcher, node);<a name="line.180"></a>
+<span class="sourceLineNo">181</span>      } catch(KeeperException e) {<a name="line.181"></a>
+<span class="sourceLineNo">182</span>        abortable.abort("Unexpected exception handling getData", e);<a name="line.182"></a>
+<span class="sourceLineNo">183</span>      }<a name="line.183"></a>
+<span class="sourceLineNo">184</span>    }<a name="line.184"></a>
+<span class="sourceLineNo">185</span>    return this.data;<a name="line.185"></a>
+<span class="sourceLineNo">186</span>  }<a name="line.186"></a>
+<span class="sourceLineNo">187</span><a name="line.187"></a>
+<span class="sourceLineNo">188</span>  public String getNode() {<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    return this.node;<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>  @Override<a name="line.192"></a>
+<span class="sourceLineNo">193</span>  public synchronized void nodeCreated(String path) {<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    if (!path.equals(node)) {<a name="line.194"></a>
+<span class="sourceLineNo">195</span>      return;<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    }<a name="line.196"></a>
+<span class="sourceLineNo">197</span><a name="line.197"></a>
+<span class="sourceLineNo">198</span>    try {<a name="line.198"></a>
+<span class="sourceLineNo">199</span>      byte [] data = ZKUtil.getDataAndWatch(watcher, node);<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      if (data != null) {<a name="line.200"></a>
+<span class="sourceLineNo">201</span>        this.data = data;<a name="line.201"></a>
+<span class="sourceLineNo">202</span>        notifyAll();<a name="line.202"></a>
+<span class="sourceLineNo">203</span>      } else {<a name="line.203"></a>
+<span class="sourceLineNo">204</span>        nodeDeleted(path);<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      }<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    } catch(KeeperException e) {<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      abortable.abort("Unexpected exception handling nodeCreated event", e);<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><a name="line.210"></a>
+<span class="sourceLineNo">211</span>  @Override<a name="line.211"></a>
+<span class="sourceLineNo">212</span>  public synchronized void nodeDeleted(String path) {<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    if(path.equals(node)) {<a name="line.213"></a>
+<span class="sourceLineNo">214</span>      try {<a name="line.214"></a>
+<span class="sourceLineNo">215</span>        if(ZKUtil.watchAndCheckExists(watcher, node)) {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>          nodeCreated(path);<a name="line.216"></a>
+<span class="sourceLineNo">217</span>        } else {<a name="line.217"></a>
+<span class="sourceLineNo">218</span>          this.data = null;<a name="line.218"></a>
+<span class="sourceLineNo">219</span>        }<a name="line.219"></a>
+<span class="sourceLineNo">220</span>      } catch(KeeperException e) {<a name="line.220"></a>
+<span class="sourceLineNo">221</span>        abortable.abort("Unexpected exception handling nodeDeleted event", e);<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      }<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    }<a name="line.223"></a>
+<span class="sourceLineNo">224</span>  }<a name="line.224"></a>
+<span class="sourceLineNo">225</span><a name="line.225"></a>
+<span class="sourceLineNo">226</span>  @Override<a name="line.226"></a>
+<span class="sourceLineNo">227</span>  public synchronized void nodeDataChanged(String path) {<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    if(path.equals(node)) {<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      nodeCreated(path);<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    }<a name="line.230"></a>
+<span class="sourceLineNo">231</span>  }<a name="line.231"></a>
+<span class="sourceLineNo">232</span><a name="line.232"></a>
+<span class="sourceLineNo">233</span>  /**<a name="line.233"></a>
+<span class="sourceLineNo">234</span>   * Checks if the baseznode set as per the property 'zookeeper.znode.parent'<a name="line.234"></a>
+<span class="sourceLineNo">235</span>   * exists.<a name="line.235"></a>
+<span class="sourceLineNo">236</span>   * @return true if baseznode exists.<a name="line.236"></a>
+<span class="sourceLineNo">237</span>   *         false if doesnot exists.<a name="line.237"></a>
+<span class="sourceLineNo">238</span>   */<a name="line.238"></a>
+<span class="sourceLineNo">239</span>  public boolean checkIfBaseNodeAvailable() {<a name="line.239"></a>
+<span class="sourceLineNo">240</span>    try {<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      if (ZKUtil.checkExists(watcher, watcher.znodePaths.baseZNode) == -1) {<a name="line.241"></a>
+<span class="sourceLineNo">242</span>        return false;<a name="line.242"></a>
+<span class="sourceLineNo">243</span>      }<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    } catch (KeeperException e) {<a name="line.244"></a>
+<span class="sourceLineNo">245</span>      abortable.abort("Exception while checking if basenode (" + watcher.znodePaths.baseZNode<a name="line.245"></a>
+<span class="sourceLineNo">246</span>          + ") exists in ZooKeeper.",<a name="line.246"></a>
+<span class="sourceLineNo">247</span>        e);<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    }<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    return true;<a name="line.249"></a>
 <span class="sourceLineNo">250</span>  }<a name="line.250"></a>
-<span class="sourceLineNo">251</span>}<a name="line.251"></a>
+<span class="sourceLineNo">251</span><a name="line.251"></a>
+<span class="sourceLineNo">252</span>  @Override<a name="line.252"></a>
+<span class="sourceLineNo">253</span>  public String toString() {<a name="line.253"></a>
+<span class="sourceLineNo">254</span>    return "ZKNodeTracker{" +<a name="line.254"></a>
+<span class="sourceLineNo">255</span>        "node='" + node + ", stopped=" + stopped + '}';<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>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKServerTool.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKServerTool.html b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKServerTool.html
index e58acb6..fe41f3b 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKServerTool.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKServerTool.html
@@ -27,50 +27,53 @@
 <span class="sourceLineNo">019</span><a name="line.19"></a>
 <span class="sourceLineNo">020</span>package org.apache.hadoop.hbase.zookeeper;<a name="line.20"></a>
 <span class="sourceLineNo">021</span><a name="line.21"></a>
-<span class="sourceLineNo">022</span>import org.apache.hadoop.conf.Configuration;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import org.apache.hadoop.hbase.HBaseInterfaceAudience;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.HConstants;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.ServerName;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.27"></a>
-<span class="sourceLineNo">028</span><a name="line.28"></a>
-<span class="sourceLineNo">029</span>import java.util.LinkedList;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import java.util.List;<a name="line.30"></a>
+<span class="sourceLineNo">022</span>import java.util.LinkedList;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import java.util.List;<a name="line.23"></a>
+<span class="sourceLineNo">024</span><a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.apache.hadoop.conf.Configuration;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.HBaseInterfaceAudience;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.HConstants;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.ServerName;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.yetus.audience.InterfaceAudience;<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> * Tool for reading ZooKeeper servers from HBase XML configuration and producing<a name="line.33"></a>
 <span class="sourceLineNo">034</span> * a line-by-line list for use by bash scripts.<a name="line.34"></a>
 <span class="sourceLineNo">035</span> */<a name="line.35"></a>
 <span class="sourceLineNo">036</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.TOOLS)<a name="line.36"></a>
-<span class="sourceLineNo">037</span>public class ZKServerTool {<a name="line.37"></a>
-<span class="sourceLineNo">038</span>  public static ServerName[] readZKNodes(Configuration conf) {<a name="line.38"></a>
-<span class="sourceLineNo">039</span>    List&lt;ServerName&gt; hosts = new LinkedList&lt;&gt;();<a name="line.39"></a>
-<span class="sourceLineNo">040</span>    String quorum = conf.get(HConstants.ZOOKEEPER_QUORUM, HConstants.LOCALHOST);<a name="line.40"></a>
-<span class="sourceLineNo">041</span><a name="line.41"></a>
-<span class="sourceLineNo">042</span>    String[] values = quorum.split(",");<a name="line.42"></a>
-<span class="sourceLineNo">043</span>    for (String value : values) {<a name="line.43"></a>
-<span class="sourceLineNo">044</span>      String[] parts = value.split(":");<a name="line.44"></a>
-<span class="sourceLineNo">045</span>      String host = parts[0];<a name="line.45"></a>
-<span class="sourceLineNo">046</span>      int port = HConstants.DEFAULT_ZOOKEPER_CLIENT_PORT;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>      if (parts.length &gt; 1) {<a name="line.47"></a>
-<span class="sourceLineNo">048</span>        port = Integer.parseInt(parts[1]);<a name="line.48"></a>
-<span class="sourceLineNo">049</span>      }<a name="line.49"></a>
-<span class="sourceLineNo">050</span>      hosts.add(ServerName.valueOf(host, port, -1));<a name="line.50"></a>
-<span class="sourceLineNo">051</span>    }<a name="line.51"></a>
-<span class="sourceLineNo">052</span>    return hosts.toArray(new ServerName[hosts.size()]);<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>  /**<a name="line.55"></a>
-<span class="sourceLineNo">056</span>   * Run the tool.<a name="line.56"></a>
-<span class="sourceLineNo">057</span>   * @param args Command line arguments.<a name="line.57"></a>
-<span class="sourceLineNo">058</span>   */<a name="line.58"></a>
-<span class="sourceLineNo">059</span>  public static void main(String args[]) {<a name="line.59"></a>
-<span class="sourceLineNo">060</span>    for(ServerName server: readZKNodes(HBaseConfiguration.create())) {<a name="line.60"></a>
-<span class="sourceLineNo">061</span>      // bin/zookeeper.sh relies on the "ZK host" string for grepping which is case sensitive.<a name="line.61"></a>
-<span class="sourceLineNo">062</span>      System.out.println("ZK host: " + server.getHostname());<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>}<a name="line.65"></a>
+<span class="sourceLineNo">037</span>public final class ZKServerTool {<a name="line.37"></a>
+<span class="sourceLineNo">038</span>  private ZKServerTool() {<a name="line.38"></a>
+<span class="sourceLineNo">039</span>  }<a name="line.39"></a>
+<span class="sourceLineNo">040</span><a name="line.40"></a>
+<span class="sourceLineNo">041</span>  public static ServerName[] readZKNodes(Configuration conf) {<a name="line.41"></a>
+<span class="sourceLineNo">042</span>    List&lt;ServerName&gt; hosts = new LinkedList&lt;&gt;();<a name="line.42"></a>
+<span class="sourceLineNo">043</span>    String quorum = conf.get(HConstants.ZOOKEEPER_QUORUM, HConstants.LOCALHOST);<a name="line.43"></a>
+<span class="sourceLineNo">044</span><a name="line.44"></a>
+<span class="sourceLineNo">045</span>    String[] values = quorum.split(",");<a name="line.45"></a>
+<span class="sourceLineNo">046</span>    for (String value : values) {<a name="line.46"></a>
+<span class="sourceLineNo">047</span>      String[] parts = value.split(":");<a name="line.47"></a>
+<span class="sourceLineNo">048</span>      String host = parts[0];<a name="line.48"></a>
+<span class="sourceLineNo">049</span>      int port = HConstants.DEFAULT_ZOOKEPER_CLIENT_PORT;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>      if (parts.length &gt; 1) {<a name="line.50"></a>
+<span class="sourceLineNo">051</span>        port = Integer.parseInt(parts[1]);<a name="line.51"></a>
+<span class="sourceLineNo">052</span>      }<a name="line.52"></a>
+<span class="sourceLineNo">053</span>      hosts.add(ServerName.valueOf(host, port, -1));<a name="line.53"></a>
+<span class="sourceLineNo">054</span>    }<a name="line.54"></a>
+<span class="sourceLineNo">055</span>    return hosts.toArray(new ServerName[hosts.size()]);<a name="line.55"></a>
+<span class="sourceLineNo">056</span>  }<a name="line.56"></a>
+<span class="sourceLineNo">057</span><a name="line.57"></a>
+<span class="sourceLineNo">058</span>  /**<a name="line.58"></a>
+<span class="sourceLineNo">059</span>   * Run the tool.<a name="line.59"></a>
+<span class="sourceLineNo">060</span>   * @param args Command line arguments.<a name="line.60"></a>
+<span class="sourceLineNo">061</span>   */<a name="line.61"></a>
+<span class="sourceLineNo">062</span>  public static void main(String[] args) {<a name="line.62"></a>
+<span class="sourceLineNo">063</span>    for(ServerName server: readZKNodes(HBaseConfiguration.create())) {<a name="line.63"></a>
+<span class="sourceLineNo">064</span>      // bin/zookeeper.sh relies on the "ZK host" string for grepping which is case sensitive.<a name="line.64"></a>
+<span class="sourceLineNo">065</span>      System.out.println("ZK host: " + server.getHostname());<a name="line.65"></a>
+<span class="sourceLineNo">066</span>    }<a name="line.66"></a>
+<span class="sourceLineNo">067</span>  }<a name="line.67"></a>
+<span class="sourceLineNo">068</span>}<a name="line.68"></a>
 
 
 


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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html
index 5db3c04..313bb69 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html
@@ -28,9 +28,9 @@
 <span class="sourceLineNo">020</span><a name="line.20"></a>
 <span class="sourceLineNo">021</span>import java.io.BufferedReader;<a name="line.21"></a>
 <span class="sourceLineNo">022</span>import java.io.File;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import java.io.InterruptedIOException;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import java.io.IOException;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import java.io.InputStreamReader;<a name="line.25"></a>
+<span class="sourceLineNo">023</span>import java.io.IOException;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import java.io.InputStreamReader;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import java.io.InterruptedIOException;<a name="line.25"></a>
 <span class="sourceLineNo">026</span>import java.io.OutputStream;<a name="line.26"></a>
 <span class="sourceLineNo">027</span>import java.io.Reader;<a name="line.27"></a>
 <span class="sourceLineNo">028</span>import java.net.BindException;<a name="line.28"></a>
@@ -42,9 +42,9 @@
 <span class="sourceLineNo">034</span><a name="line.34"></a>
 <span class="sourceLineNo">035</span>import org.apache.commons.logging.Log;<a name="line.35"></a>
 <span class="sourceLineNo">036</span>import org.apache.commons.logging.LogFactory;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.conf.Configuration;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.HConstants;<a name="line.39"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.conf.Configuration;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.HConstants;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.39"></a>
 <span class="sourceLineNo">040</span>import org.apache.zookeeper.server.NIOServerCnxnFactory;<a name="line.40"></a>
 <span class="sourceLineNo">041</span>import org.apache.zookeeper.server.ZooKeeperServer;<a name="line.41"></a>
 <span class="sourceLineNo">042</span>import org.apache.zookeeper.server.persistence.FileTxnLog;<a name="line.42"></a>
@@ -195,293 +195,294 @@
 <span class="sourceLineNo">187</span>  }<a name="line.187"></a>
 <span class="sourceLineNo">188</span><a name="line.188"></a>
 <span class="sourceLineNo">189</span>  /**<a name="line.189"></a>
-<span class="sourceLineNo">190</span>   * @param baseDir<a name="line.190"></a>
-<span class="sourceLineNo">191</span>   * @param numZooKeeperServers<a name="line.191"></a>
-<span class="sourceLineNo">192</span>   * @return ClientPort server bound to, -1 if there was a<a name="line.192"></a>
-<span class="sourceLineNo">193</span>   *         binding problem and we couldn't pick another port.<a name="line.193"></a>
-<span class="sourceLineNo">194</span>   * @throws IOException<a name="line.194"></a>
-<span class="sourceLineNo">195</span>   * @throws InterruptedException<a name="line.195"></a>
+<span class="sourceLineNo">190</span>   * @param baseDir the base directory to use<a name="line.190"></a>
+<span class="sourceLineNo">191</span>   * @param numZooKeeperServers the number of ZooKeeper servers<a name="line.191"></a>
+<span class="sourceLineNo">192</span>   * @return ClientPort server bound to, -1 if there was a binding problem and we couldn't pick<a name="line.192"></a>
+<span class="sourceLineNo">193</span>   *         another port.<a name="line.193"></a>
+<span class="sourceLineNo">194</span>   * @throws IOException if an operation fails during the startup<a name="line.194"></a>
+<span class="sourceLineNo">195</span>   * @throws InterruptedException if the startup fails<a name="line.195"></a>
 <span class="sourceLineNo">196</span>   */<a name="line.196"></a>
 <span class="sourceLineNo">197</span>  public int startup(File baseDir, int numZooKeeperServers) throws IOException,<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      InterruptedException {<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    if (numZooKeeperServers &lt;= 0)<a name="line.199"></a>
+<span class="sourceLineNo">198</span>          InterruptedException {<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    if (numZooKeeperServers &lt;= 0) {<a name="line.199"></a>
 <span class="sourceLineNo">200</span>      return -1;<a name="line.200"></a>
-<span class="sourceLineNo">201</span><a name="line.201"></a>
-<span class="sourceLineNo">202</span>    setupTestEnv();<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    shutdown();<a name="line.203"></a>
-<span class="sourceLineNo">204</span><a name="line.204"></a>
-<span class="sourceLineNo">205</span>    int tentativePort = -1; // the seed port<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    int currentClientPort;<a name="line.206"></a>
-<span class="sourceLineNo">207</span><a name="line.207"></a>
-<span class="sourceLineNo">208</span>    // running all the ZK servers<a name="line.208"></a>
-<span class="sourceLineNo">209</span>    for (int i = 0; i &lt; numZooKeeperServers; i++) {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      File dir = new File(baseDir, "zookeeper_"+i).getAbsoluteFile();<a name="line.210"></a>
-<span class="sourceLineNo">211</span>      createDir(dir);<a name="line.211"></a>
-<span class="sourceLineNo">212</span>      int tickTimeToUse;<a name="line.212"></a>
-<span class="sourceLineNo">213</span>      if (this.tickTime &gt; 0) {<a name="line.213"></a>
-<span class="sourceLineNo">214</span>        tickTimeToUse = this.tickTime;<a name="line.214"></a>
-<span class="sourceLineNo">215</span>      } else {<a name="line.215"></a>
-<span class="sourceLineNo">216</span>        tickTimeToUse = TICK_TIME;<a name="line.216"></a>
-<span class="sourceLineNo">217</span>      }<a name="line.217"></a>
-<span class="sourceLineNo">218</span><a name="line.218"></a>
-<span class="sourceLineNo">219</span>      // Set up client port - if we have already had a list of valid ports, use it.<a name="line.219"></a>
-<span class="sourceLineNo">220</span>      if (hasValidClientPortInList(i)) {<a name="line.220"></a>
-<span class="sourceLineNo">221</span>        currentClientPort = clientPortList.get(i);<a name="line.221"></a>
-<span class="sourceLineNo">222</span>      } else {<a name="line.222"></a>
-<span class="sourceLineNo">223</span>        tentativePort = selectClientPort(tentativePort); // update the seed<a name="line.223"></a>
-<span class="sourceLineNo">224</span>        currentClientPort = tentativePort;<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>      ZooKeeperServer server = new ZooKeeperServer(dir, dir, tickTimeToUse);<a name="line.227"></a>
-<span class="sourceLineNo">228</span>      // Setting {min,max}SessionTimeout defaults to be the same as in Zookeeper<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      server.setMinSessionTimeout(configuration.getInt("hbase.zookeeper.property.minSessionTimeout", -1));<a name="line.229"></a>
-<span class="sourceLineNo">230</span>      server.setMaxSessionTimeout(configuration.getInt("hbase.zookeeper.property.maxSessionTimeout", -1));<a name="line.230"></a>
-<span class="sourceLineNo">231</span>      NIOServerCnxnFactory standaloneServerFactory;<a name="line.231"></a>
-<span class="sourceLineNo">232</span>      while (true) {<a name="line.232"></a>
-<span class="sourceLineNo">233</span>        try {<a name="line.233"></a>
-<span class="sourceLineNo">234</span>          standaloneServerFactory = new NIOServerCnxnFactory();<a name="line.234"></a>
-<span class="sourceLineNo">235</span>          standaloneServerFactory.configure(<a name="line.235"></a>
-<span class="sourceLineNo">236</span>            new InetSocketAddress(currentClientPort),<a name="line.236"></a>
-<span class="sourceLineNo">237</span>            configuration.getInt(HConstants.ZOOKEEPER_MAX_CLIENT_CNXNS, HConstants.DEFAULT_ZOOKEPER_MAX_CLIENT_CNXNS));<a name="line.237"></a>
-<span class="sourceLineNo">238</span>        } catch (BindException e) {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>          LOG.debug("Failed binding ZK Server to client port: " +<a name="line.239"></a>
-<span class="sourceLineNo">240</span>              currentClientPort, e);<a name="line.240"></a>
-<span class="sourceLineNo">241</span>          // We're told to use some port but it's occupied, fail<a name="line.241"></a>
-<span class="sourceLineNo">242</span>          if (hasValidClientPortInList(i)) {<a name="line.242"></a>
-<span class="sourceLineNo">243</span>            return -1;<a name="line.243"></a>
-<span class="sourceLineNo">244</span>          }<a name="line.244"></a>
-<span class="sourceLineNo">245</span>          // This port is already in use, try to use another.<a name="line.245"></a>
-<span class="sourceLineNo">246</span>          tentativePort = selectClientPort(tentativePort);<a name="line.246"></a>
-<span class="sourceLineNo">247</span>          currentClientPort = tentativePort;<a name="line.247"></a>
-<span class="sourceLineNo">248</span>          continue;<a name="line.248"></a>
-<span class="sourceLineNo">249</span>        }<a name="line.249"></a>
-<span class="sourceLineNo">250</span>        break;<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>      // Start up this ZK server<a name="line.253"></a>
-<span class="sourceLineNo">254</span>      standaloneServerFactory.startup(server);<a name="line.254"></a>
-<span class="sourceLineNo">255</span>      // Runs a 'stat' against the servers.<a name="line.255"></a>
-<span class="sourceLineNo">256</span>      if (!waitForServerUp(currentClientPort, connectionTimeout)) {<a name="line.256"></a>
-<span class="sourceLineNo">257</span>        throw new IOException("Waiting for startup of standalone server");<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      }<a name="line.258"></a>
-<span class="sourceLineNo">259</span><a name="line.259"></a>
-<span class="sourceLineNo">260</span>      // We have selected a port as a client port.  Update clientPortList if necessary.<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      if (clientPortList.size() &lt;= i) { // it is not in the list, add the port<a name="line.261"></a>
-<span class="sourceLineNo">262</span>        clientPortList.add(currentClientPort);<a name="line.262"></a>
-<span class="sourceLineNo">263</span>      }<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      else if (clientPortList.get(i) &lt;= 0) { // the list has invalid port, update with valid port<a name="line.264"></a>
-<span class="sourceLineNo">265</span>        clientPortList.remove(i);<a name="line.265"></a>
-<span class="sourceLineNo">266</span>        clientPortList.add(i, currentClientPort);<a name="line.266"></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>    setupTestEnv();<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    shutdown();<a name="line.204"></a>
+<span class="sourceLineNo">205</span><a name="line.205"></a>
+<span class="sourceLineNo">206</span>    int tentativePort = -1; // the seed port<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    int currentClientPort;<a name="line.207"></a>
+<span class="sourceLineNo">208</span><a name="line.208"></a>
+<span class="sourceLineNo">209</span>    // running all the ZK servers<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    for (int i = 0; i &lt; numZooKeeperServers; i++) {<a name="line.210"></a>
+<span class="sourceLineNo">211</span>      File dir = new File(baseDir, "zookeeper_"+i).getAbsoluteFile();<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      createDir(dir);<a name="line.212"></a>
+<span class="sourceLineNo">213</span>      int tickTimeToUse;<a name="line.213"></a>
+<span class="sourceLineNo">214</span>      if (this.tickTime &gt; 0) {<a name="line.214"></a>
+<span class="sourceLineNo">215</span>        tickTimeToUse = this.tickTime;<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      } else {<a name="line.216"></a>
+<span class="sourceLineNo">217</span>        tickTimeToUse = TICK_TIME;<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      }<a name="line.218"></a>
+<span class="sourceLineNo">219</span><a name="line.219"></a>
+<span class="sourceLineNo">220</span>      // Set up client port - if we have already had a list of valid ports, use it.<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      if (hasValidClientPortInList(i)) {<a name="line.221"></a>
+<span class="sourceLineNo">222</span>        currentClientPort = clientPortList.get(i);<a name="line.222"></a>
+<span class="sourceLineNo">223</span>      } else {<a name="line.223"></a>
+<span class="sourceLineNo">224</span>        tentativePort = selectClientPort(tentativePort); // update the seed<a name="line.224"></a>
+<span class="sourceLineNo">225</span>        currentClientPort = tentativePort;<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>      ZooKeeperServer server = new ZooKeeperServer(dir, dir, tickTimeToUse);<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      // Setting {min,max}SessionTimeout defaults to be the same as in Zookeeper<a name="line.229"></a>
+<span class="sourceLineNo">230</span>      server.setMinSessionTimeout(configuration.getInt(<a name="line.230"></a>
+<span class="sourceLineNo">231</span>              "hbase.zookeeper.property.minSessionTimeout", -1));<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      server.setMaxSessionTimeout(configuration.getInt(<a name="line.232"></a>
+<span class="sourceLineNo">233</span>              "hbase.zookeeper.property.maxSessionTimeout", -1));<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      NIOServerCnxnFactory standaloneServerFactory;<a name="line.234"></a>
+<span class="sourceLineNo">235</span>      while (true) {<a name="line.235"></a>
+<span class="sourceLineNo">236</span>        try {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>          standaloneServerFactory = new NIOServerCnxnFactory();<a name="line.237"></a>
+<span class="sourceLineNo">238</span>          standaloneServerFactory.configure(<a name="line.238"></a>
+<span class="sourceLineNo">239</span>            new InetSocketAddress(currentClientPort),<a name="line.239"></a>
+<span class="sourceLineNo">240</span>            configuration.getInt(HConstants.ZOOKEEPER_MAX_CLIENT_CNXNS,<a name="line.240"></a>
+<span class="sourceLineNo">241</span>                    HConstants.DEFAULT_ZOOKEPER_MAX_CLIENT_CNXNS));<a name="line.241"></a>
+<span class="sourceLineNo">242</span>        } catch (BindException e) {<a name="line.242"></a>
+<span class="sourceLineNo">243</span>          LOG.debug("Failed binding ZK Server to client port: " +<a name="line.243"></a>
+<span class="sourceLineNo">244</span>              currentClientPort, e);<a name="line.244"></a>
+<span class="sourceLineNo">245</span>          // We're told to use some port but it's occupied, fail<a name="line.245"></a>
+<span class="sourceLineNo">246</span>          if (hasValidClientPortInList(i)) {<a name="line.246"></a>
+<span class="sourceLineNo">247</span>            return -1;<a name="line.247"></a>
+<span class="sourceLineNo">248</span>          }<a name="line.248"></a>
+<span class="sourceLineNo">249</span>          // This port is already in use, try to use another.<a name="line.249"></a>
+<span class="sourceLineNo">250</span>          tentativePort = selectClientPort(tentativePort);<a name="line.250"></a>
+<span class="sourceLineNo">251</span>          currentClientPort = tentativePort;<a name="line.251"></a>
+<span class="sourceLineNo">252</span>          continue;<a name="line.252"></a>
+<span class="sourceLineNo">253</span>        }<a name="line.253"></a>
+<span class="sourceLineNo">254</span>        break;<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>      // Start up this ZK server<a name="line.257"></a>
+<span class="sourceLineNo">258</span>      standaloneServerFactory.startup(server);<a name="line.258"></a>
+<span class="sourceLineNo">259</span>      // Runs a 'stat' against the servers.<a name="line.259"></a>
+<span class="sourceLineNo">260</span>      if (!waitForServerUp(currentClientPort, connectionTimeout)) {<a name="line.260"></a>
+<span class="sourceLineNo">261</span>        throw new IOException("Waiting for startup of standalone server");<a name="line.261"></a>
+<span class="sourceLineNo">262</span>      }<a name="line.262"></a>
+<span class="sourceLineNo">263</span><a name="line.263"></a>
+<span class="sourceLineNo">264</span>      // We have selected a port as a client port.  Update clientPortList if necessary.<a name="line.264"></a>
+<span class="sourceLineNo">265</span>      if (clientPortList.size() &lt;= i) { // it is not in the list, add the port<a name="line.265"></a>
+<span class="sourceLineNo">266</span>        clientPortList.add(currentClientPort);<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>      standaloneServerFactoryList.add(standaloneServerFactory);<a name="line.269"></a>
-<span class="sourceLineNo">270</span>      zooKeeperServers.add(server);<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    }<a name="line.271"></a>
+<span class="sourceLineNo">268</span>      else if (clientPortList.get(i) &lt;= 0) { // the list has invalid port, update with valid port<a name="line.268"></a>
+<span class="sourceLineNo">269</span>        clientPortList.remove(i);<a name="line.269"></a>
+<span class="sourceLineNo">270</span>        clientPortList.add(i, currentClientPort);<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>    // set the first one to be active ZK; Others are backups<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    activeZKServerIndex = 0;<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    started = true;<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    int clientPort = clientPortList.get(activeZKServerIndex);<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    LOG.info("Started MiniZooKeeperCluster and ran successful 'stat' " +<a name="line.277"></a>
-<span class="sourceLineNo">278</span>        "on client port=" + clientPort);<a name="line.278"></a>
-<span class="sourceLineNo">279</span>    return clientPort;<a name="line.279"></a>
-<span class="sourceLineNo">280</span>  }<a name="line.280"></a>
-<span class="sourceLineNo">281</span><a name="line.281"></a>
-<span class="sourceLineNo">282</span>  private void createDir(File dir) throws IOException {<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    try {<a name="line.283"></a>
-<span class="sourceLineNo">284</span>      if (!dir.exists()) {<a name="line.284"></a>
-<span class="sourceLineNo">285</span>        dir.mkdirs();<a name="line.285"></a>
-<span class="sourceLineNo">286</span>      }<a name="line.286"></a>
-<span class="sourceLineNo">287</span>    } catch (SecurityException e) {<a name="line.287"></a>
-<span class="sourceLineNo">288</span>      throw new IOException("creating dir: " + dir, e);<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    }<a name="line.289"></a>
-<span class="sourceLineNo">290</span>  }<a name="line.290"></a>
-<span class="sourceLineNo">291</span><a name="line.291"></a>
-<span class="sourceLineNo">292</span>  /**<a name="line.292"></a>
-<span class="sourceLineNo">293</span>   * @throws IOException<a name="line.293"></a>
-<span class="sourceLineNo">294</span>   */<a name="line.294"></a>
-<span class="sourceLineNo">295</span>  public void shutdown() throws IOException {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    // shut down all the zk servers<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    for (int i = 0; i &lt; standaloneServerFactoryList.size(); i++) {<a name="line.297"></a>
-<span class="sourceLineNo">298</span>      NIOServerCnxnFactory standaloneServerFactory =<a name="line.298"></a>
-<span class="sourceLineNo">299</span>        standaloneServerFactoryList.get(i);<a name="line.299"></a>
-<span class="sourceLineNo">300</span>      int clientPort = clientPortList.get(i);<a name="line.300"></a>
-<span class="sourceLineNo">301</span><a name="line.301"></a>
-<span class="sourceLineNo">302</span>      standaloneServerFactory.shutdown();<a name="line.302"></a>
-<span class="sourceLineNo">303</span>      if (!waitForServerDown(clientPort, connectionTimeout)) {<a name="line.303"></a>
-<span class="sourceLineNo">304</span>        throw new IOException("Waiting for shutdown of standalone server");<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>    standaloneServerFactoryList.clear();<a name="line.307"></a>
-<span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span>    for (ZooKeeperServer zkServer: zooKeeperServers) {<a name="line.309"></a>
-<span class="sourceLineNo">310</span>      //explicitly close ZKDatabase since ZookeeperServer does not close them<a name="line.310"></a>
-<span class="sourceLineNo">311</span>      zkServer.getZKDatabase().close();<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    }<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    zooKeeperServers.clear();<a name="line.313"></a>
-<span class="sourceLineNo">314</span><a name="line.314"></a>
-<span class="sourceLineNo">315</span>    // clear everything<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    if (started) {<a name="line.316"></a>
-<span class="sourceLineNo">317</span>      started = false;<a name="line.317"></a>
-<span class="sourceLineNo">318</span>      activeZKServerIndex = 0;<a name="line.318"></a>
-<span class="sourceLineNo">319</span>      clientPortList.clear();<a name="line.319"></a>
-<span class="sourceLineNo">320</span>      LOG.info("Shutdown MiniZK cluster with all ZK servers");<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><a name="line.323"></a>
-<span class="sourceLineNo">324</span>  /**@return clientPort return clientPort if there is another ZK backup can run<a name="line.324"></a>
-<span class="sourceLineNo">325</span>   *         when killing the current active; return -1, if there is no backups.<a name="line.325"></a>
-<span class="sourceLineNo">326</span>   * @throws IOException<a name="line.326"></a>
-<span class="sourceLineNo">327</span>   * @throws InterruptedException<a name="line.327"></a>
-<span class="sourceLineNo">328</span>   */<a name="line.328"></a>
-<span class="sourceLineNo">329</span>  public int killCurrentActiveZooKeeperServer() throws IOException,<a name="line.329"></a>
-<span class="sourceLineNo">330</span>                                        InterruptedException {<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    if (!started || activeZKServerIndex &lt; 0) {<a name="line.331"></a>
-<span class="sourceLineNo">332</span>      return -1;<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>    // Shutdown the current active one<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    NIOServerCnxnFactory standaloneServerFactory =<a name="line.336"></a>
-<span class="sourceLineNo">337</span>      standaloneServerFactoryList.get(activeZKServerIndex);<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    int clientPort = clientPortList.get(activeZKServerIndex);<a name="line.338"></a>
-<span class="sourceLineNo">339</span><a name="line.339"></a>
-<span class="sourceLineNo">340</span>    standaloneServerFactory.shutdown();<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    if (!waitForServerDown(clientPort, connectionTimeout)) {<a name="line.341"></a>
-<span class="sourceLineNo">342</span>      throw new IOException("Waiting for shutdown of standalone server");<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>    zooKeeperServers.get(activeZKServerIndex).getZKDatabase().close();<a name="line.345"></a>
-<span class="sourceLineNo">346</span><a name="line.346"></a>
-<span class="sourceLineNo">347</span>    // remove the current active zk server<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    standaloneServerFactoryList.remove(activeZKServerIndex);<a name="line.348"></a>
-<span class="sourceLineNo">349</span>    clientPortList.remove(activeZKServerIndex);<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    zooKeeperServers.remove(activeZKServerIndex);<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    LOG.info("Kill the current active ZK servers in the cluster " +<a name="line.351"></a>
-<span class="sourceLineNo">352</span>        "on client port: " + clientPort);<a name="line.352"></a>
-<span class="sourceLineNo">353</span><a name="line.353"></a>
-<span class="sourceLineNo">354</span>    if (standaloneServerFactoryList.isEmpty()) {<a name="line.354"></a>
-<span class="sourceLineNo">355</span>      // there is no backup servers;<a name="line.355"></a>
-<span class="sourceLineNo">356</span>      return -1;<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    }<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    clientPort = clientPortList.get(activeZKServerIndex);<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    LOG.info("Activate a backup zk server in the cluster " +<a name="line.359"></a>
-<span class="sourceLineNo">360</span>        "on client port: " + clientPort);<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    // return the next back zk server's port<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    return clientPort;<a name="line.362"></a>
-<span class="sourceLineNo">363</span>  }<a name="line.363"></a>
-<span class="sourceLineNo">364</span><a name="line.364"></a>
-<span class="sourceLineNo">365</span>  /**<a name="line.365"></a>
-<span class="sourceLineNo">366</span>   * Kill one back up ZK servers<a name="line.366"></a>
-<span class="sourceLineNo">367</span>   * @throws IOException<a name="line.367"></a>
-<span class="sourceLineNo">368</span>   * @throws InterruptedException<a name="line.368"></a>
-<span class="sourceLineNo">369</span>   */<a name="line.369"></a>
-<span class="sourceLineNo">370</span>  public void killOneBackupZooKeeperServer() throws IOException,<a name="line.370"></a>
-<span class="sourceLineNo">371</span>                                        InterruptedException {<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    if (!started || activeZKServerIndex &lt; 0 ||<a name="line.372"></a>
-<span class="sourceLineNo">373</span>        standaloneServerFactoryList.size() &lt;= 1) {<a name="line.373"></a>
-<span class="sourceLineNo">374</span>      return ;<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>    int backupZKServerIndex = activeZKServerIndex+1;<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    // Shutdown the current active one<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    NIOServerCnxnFactory standaloneServerFactory =<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      standaloneServerFactoryList.get(backupZKServerIndex);<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    int clientPort = clientPortList.get(backupZKServerIndex);<a name="line.381"></a>
-<span class="sourceLineNo">382</span><a name="line.382"></a>
-<span class="sourceLineNo">383</span>    standaloneServerFactory.shutdown();<a name="line.383"></a>
-<span class="sourceLineNo">384</span>    if (!waitForServerDown(clientPort, connectionTimeout)) {<a name="line.384"></a>
-<span class="sourceLineNo">385</span>      throw new IOException("Waiting for shutdown of standalone server");<a name="line.385"></a>
-<span class="sourceLineNo">386</span>    }<a name="line.386"></a>
-<span class="sourceLineNo">387</span><a name="line.387"></a>
-<span class="sourceLineNo">388</span>    zooKeeperServers.get(backupZKServerIndex).getZKDatabase().close();<a name="line.388"></a>
-<span class="sourceLineNo">389</span><a name="line.389"></a>
-<span class="sourceLineNo">390</span>    // remove this backup zk server<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    standaloneServerFactoryList.remove(backupZKServerIndex);<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    clientPortList.remove(backupZKServerIndex);<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    zooKeeperServers.remove(backupZKServerIndex);<a name="line.393"></a>
-<span class="sourceLineNo">394</span>    LOG.info("Kill one backup ZK servers in the cluster " +<a name="line.394"></a>
-<span class="sourceLineNo">395</span>        "on client port: " + clientPort);<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>  // XXX: From o.a.zk.t.ClientBase<a name="line.398"></a>
-<span class="sourceLineNo">399</span>  private static boolean waitForServerDown(int port, long timeout) throws IOException {<a name="line.399"></a>
-<span class="sourceLineNo">400</span>    long start = System.currentTimeMillis();<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    while (true) {<a name="line.401"></a>
-<span class="sourceLineNo">402</span>      try {<a name="line.402"></a>
-<span class="sourceLineNo">403</span>        Socket sock = new Socket("localhost", port);<a name="line.403"></a>
-<span class="sourceLineNo">404</span>        try {<a name="line.404"></a>
-<span class="sourceLineNo">405</span>          OutputStream outstream = sock.getOutputStream();<a name="line.405"></a>
-<span class="sourceLineNo">406</span>          outstream.write("stat".getBytes());<a name="line.406"></a>
-<span class="sourceLineNo">407</span>          outstream.flush();<a name="line.407"></a>
-<span class="sourceLineNo">408</span>        } finally {<a name="line.408"></a>
-<span class="sourceLineNo">409</span>          sock.close();<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>        return true;<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>      if (System.currentTimeMillis() &gt; start + timeout) {<a name="line.415"></a>
-<span class="sourceLineNo">416</span>        break;<a name="line.416"></a>
-<span class="sourceLineNo">417</span>      }<a name="line.417"></a>
-<span class="sourceLineNo">418</span>      try {<a name="line.418"></a>
-<span class="sourceLineNo">419</span>        Thread.sleep(250);<a name="line.419"></a>
-<span class="sourceLineNo">420</span>      } catch (InterruptedException e) {<a name="line.420"></a>
-<span class="sourceLineNo">421</span>        throw (InterruptedIOException)new InterruptedIOException().initCause(e);<a name="line.421"></a>
-<span class="sourceLineNo">422</span>      }<a name="line.422"></a>
-<span class="sourceLineNo">423</span>    }<a name="line.423"></a>
-<span class="sourceLineNo">424</span>    return false;<a name="line.424"></a>
-<span class="sourceLineNo">425</span>  }<a name="line.425"></a>
-<span class="sourceLineNo">426</span><a name="line.426"></a>
-<span class="sourceLineNo">427</span>  // XXX: From o.a.zk.t.ClientBase<a name="line.427"></a>
-<span class="sourceLineNo">428</span>  private static boolean waitForServerUp(int port, long timeout) throws IOException {<a name="line.428"></a>
-<span class="sourceLineNo">429</span>    long start = System.currentTimeMillis();<a name="line.429"></a>
-<span class="sourceLineNo">430</span>    while (true) {<a name="line.430"></a>
-<span class="sourceLineNo">431</span>      try {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>        Socket sock = new Socket("localhost", port);<a name="line.432"></a>
-<span class="sourceLineNo">433</span>        BufferedReader reader = null;<a name="line.433"></a>
-<span class="sourceLineNo">434</span>        try {<a name="line.434"></a>
-<span class="sourceLineNo">435</span>          OutputStream outstream = sock.getOutputStream();<a name="line.435"></a>
-<span class="sourceLineNo">436</span>          outstream.write("stat".getBytes());<a name="line.436"></a>
-<span class="sourceLineNo">437</span>          outstream.flush();<a name="line.437"></a>
-<span class="sourceLineNo">438</span><a name="line.438"></a>
-<span class="sourceLineNo">439</span>          Reader isr = new InputStreamReader(sock.getInputStream());<a name="line.439"></a>
-<span class="sourceLineNo">440</span>          reader = new BufferedReader(isr);<a name="line.440"></a>
-<span class="sourceLineNo">441</span>          String line = reader.readLine();<a name="line.441"></a>
-<span class="sourceLineNo">442</span>          if (line != null &amp;&amp; line.startsWith("Zookeeper version:")) {<a name="line.442"></a>
-<span class="sourceLineNo">443</span>            return true;<a name="line.443"></a>
-<span class="sourceLineNo">444</span>          }<a name="line.444"></a>
-<span class="sourceLineNo">445</span>        } finally {<a name="line.445"></a>
-<span class="sourceLineNo">446</span>          sock.close();<a name="line.446"></a>
-<span class="sourceLineNo">447</span>          if (reader != null) {<a name="line.447"></a>
-<span class="sourceLineNo">448</span>            reader.close();<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>      } catch (IOException e) {<a name="line.451"></a>
-<span class="sourceLineNo">452</span>        // ignore as this is expected<a name="line.452"></a>
-<span class="sourceLineNo">453</span>        LOG.info("server localhost:" + port + " not up " + e);<a name="line.453"></a>
-<span class="sourceLineNo">454</span>      }<a name="line.454"></a>
-<span class="sourceLineNo">455</span><a name="line.455"></a>
-<span class="sourceLineNo">456</span>      if (System.currentTimeMillis() &gt; start + timeout) {<a name="line.456"></a>
-<span class="sourceLineNo">457</span>        break;<a name="line.457"></a>
-<span class="sourceLineNo">458</span>      }<a name="line.458"></a>
-<span class="sourceLineNo">459</span>      try {<a name="line.459"></a>
-<span class="sourceLineNo">460</span>        Thread.sleep(250);<a name="line.460"></a>
-<span class="sourceLineNo">461</span>      } catch (InterruptedException e) {<a name="line.461"></a>
-<span class="sourceLineNo">462</span>        throw (InterruptedIOException)new InterruptedIOException().initCause(e);<a name="line.462"></a>
-<span class="sourceLineNo">463</span>      }<a name="line.463"></a>
-<span class="sourceLineNo">464</span>    }<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    return false;<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>  public int getClientPort() {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    return activeZKServerIndex &lt; 0 || activeZKServerIndex &gt;= clientPortList.size() ? -1<a name="line.469"></a>
-<span class="sourceLineNo">470</span>        : clientPortList.get(activeZKServerIndex);<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>  List&lt;ZooKeeperServer&gt; getZooKeeperServers() {<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    return zooKeeperServers;<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">273</span>      standaloneServerFactoryList.add(standaloneServerFactory);<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      zooKeeperServers.add(server);<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>    // set the first one to be active ZK; Others are backups<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    activeZKServerIndex = 0;<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    started = true;<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    int clientPort = clientPortList.get(activeZKServerIndex);<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    LOG.info("Started MiniZooKeeperCluster and ran successful 'stat' " +<a name="line.281"></a>
+<span class="sourceLineNo">282</span>        "on client port=" + clientPort);<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    return clientPort;<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>  private void createDir(File dir) throws IOException {<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    try {<a name="line.287"></a>
+<span class="sourceLineNo">288</span>      if (!dir.exists()) {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>        dir.mkdirs();<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      }<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    } catch (SecurityException e) {<a name="line.291"></a>
+<span class="sourceLineNo">292</span>      throw new IOException("creating dir: " + dir, e);<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>  /**<a name="line.296"></a>
+<span class="sourceLineNo">297</span>   * @throws IOException if waiting for the shutdown of a server fails<a name="line.297"></a>
+<span class="sourceLineNo">298</span>   */<a name="line.298"></a>
+<span class="sourceLineNo">299</span>  public void shutdown() throws IOException {<a name="line.299"></a>
+<span class="sourceLineNo">300</span>    // shut down all the zk servers<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    for (int i = 0; i &lt; standaloneServerFactoryList.size(); i++) {<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      NIOServerCnxnFactory standaloneServerFactory =<a name="line.302"></a>
+<span class="sourceLineNo">303</span>        standaloneServerFactoryList.get(i);<a name="line.303"></a>
+<span class="sourceLineNo">304</span>      int clientPort = clientPortList.get(i);<a name="line.304"></a>
+<span class="sourceLineNo">305</span><a name="line.305"></a>
+<span class="sourceLineNo">306</span>      standaloneServerFactory.shutdown();<a name="line.306"></a>
+<span class="sourceLineNo">307</span>      if (!waitForServerDown(clientPort, connectionTimeout)) {<a name="line.307"></a>
+<span class="sourceLineNo">308</span>        throw new IOException("Waiting for shutdown of standalone server");<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>    standaloneServerFactoryList.clear();<a name="line.311"></a>
+<span class="sourceLineNo">312</span><a name="line.312"></a>
+<span class="sourceLineNo">313</span>    for (ZooKeeperServer zkServer: zooKeeperServers) {<a name="line.313"></a>
+<span class="sourceLineNo">314</span>      //explicitly close ZKDatabase since ZookeeperServer does not close them<a name="line.314"></a>
+<span class="sourceLineNo">315</span>      zkServer.getZKDatabase().close();<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    }<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    zooKeeperServers.clear();<a name="line.317"></a>
+<span class="sourceLineNo">318</span><a name="line.318"></a>
+<span class="sourceLineNo">319</span>    // clear everything<a name="line.319"></a>
+<span class="sourceLineNo">320</span>    if (started) {<a name="line.320"></a>
+<span class="sourceLineNo">321</span>      started = false;<a name="line.321"></a>
+<span class="sourceLineNo">322</span>      activeZKServerIndex = 0;<a name="line.322"></a>
+<span class="sourceLineNo">323</span>      clientPortList.clear();<a name="line.323"></a>
+<span class="sourceLineNo">324</span>      LOG.info("Shutdown MiniZK cluster with all ZK servers");<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    }<a name="line.325"></a>
+<span class="sourceLineNo">326</span>  }<a name="line.326"></a>
+<span class="sourceLineNo">327</span><a name="line.327"></a>
+<span class="sourceLineNo">328</span>  /**<a name="line.328"></a>
+<span class="sourceLineNo">329</span>   * @return clientPort return clientPort if there is another ZK backup can run<a name="line.329"></a>
+<span class="sourceLineNo">330</span>   *         when killing the current active; return -1, if there is no backups.<a name="line.330"></a>
+<span class="sourceLineNo">331</span>   * @throws IOException if waiting for the shutdown of a server fails<a name="line.331"></a>
+<span class="sourceLineNo">332</span>   */<a name="line.332"></a>
+<span class="sourceLineNo">333</span>  public int killCurrentActiveZooKeeperServer() throws IOException, InterruptedException {<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    if (!started || activeZKServerIndex &lt; 0) {<a name="line.334"></a>
+<span class="sourceLineNo">335</span>      return -1;<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    }<a name="line.336"></a>
+<span class="sourceLineNo">337</span><a name="line.337"></a>
+<span class="sourceLineNo">338</span>    // Shutdown the current active one<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    NIOServerCnxnFactory standaloneServerFactory =<a name="line.339"></a>
+<span class="sourceLineNo">340</span>      standaloneServerFactoryList.get(activeZKServerIndex);<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    int clientPort = clientPortList.get(activeZKServerIndex);<a name="line.341"></a>
+<span class="sourceLineNo">342</span><a name="line.342"></a>
+<span class="sourceLineNo">343</span>    standaloneServerFactory.shutdown();<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    if (!waitForServerDown(clientPort, connectionTimeout)) {<a name="line.344"></a>
+<span class="sourceLineNo">345</span>      throw new IOException("Waiting for shutdown of standalone server");<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>    zooKeeperServers.get(activeZKServerIndex).getZKDatabase().close();<a name="line.348"></a>
+<span class="sourceLineNo">349</span><a name="line.349"></a>
+<span class="sourceLineNo">350</span>    // remove the current active zk server<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    standaloneServerFactoryList.remove(activeZKServerIndex);<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    clientPortList.remove(activeZKServerIndex);<a name="line.352"></a>
+<span class="sourceLineNo">353</span>    zooKeeperServers.remove(activeZKServerIndex);<a name="line.353"></a>
+<span class="sourceLineNo">354</span>    LOG.info("Kill the current active ZK servers in the cluster " +<a name="line.354"></a>
+<span class="sourceLineNo">355</span>        "on client port: " + clientPort);<a name="line.355"></a>
+<span class="sourceLineNo">356</span><a name="line.356"></a>
+<span class="sourceLineNo">357</span>    if (standaloneServerFactoryList.isEmpty()) {<a name="line.357"></a>
+<span class="sourceLineNo">358</span>      // there is no backup servers;<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      return -1;<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    }<a name="line.360"></a>
+<span class="sourceLineNo">361</span>    clientPort = clientPortList.get(activeZKServerIndex);<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    LOG.info("Activate a backup zk server in the cluster " +<a name="line.362"></a>
+<span class="sourceLineNo">363</span>        "on client port: " + clientPort);<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    // return the next back zk server's port<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    return clientPort;<a name="line.365"></a>
+<span class="sourceLineNo">366</span>  }<a name="line.366"></a>
+<span class="sourceLineNo">367</span><a name="line.367"></a>
+<span class="sourceLineNo">368</span>  /**<a name="line.368"></a>
+<span class="sourceLineNo">369</span>   * Kill one back up ZK servers.<a name="line.369"></a>
+<span class="sourceLineNo">370</span>   *<a name="line.370"></a>
+<span class="sourceLineNo">371</span>   * @throws IOException if waiting for the shutdown of a server fails<a name="line.371"></a>
+<span class="sourceLineNo">372</span>   */<a name="line.372"></a>
+<span class="sourceLineNo">373</span>  public void killOneBackupZooKeeperServer() throws IOException, InterruptedException {<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    if (!started || activeZKServerIndex &lt; 0 || standaloneServerFactoryList.size() &lt;= 1) {<a name="line.374"></a>
+<span class="sourceLineNo">375</span>      return ;<a name="line.375"></a>
+<span class="sourceLineNo">376</span>    }<a name="line.376"></a>
+<span class="sourceLineNo">377</span><a name="line.377"></a>
+<span class="sourceLineNo">378</span>    int backupZKServerIndex = activeZKServerIndex+1;<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    // Shutdown the current active one<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    NIOServerCnxnFactory standaloneServerFactory =<a name="line.380"></a>
+<span class="sourceLineNo">381</span>      standaloneServerFactoryList.get(backupZKServerIndex);<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    int clientPort = clientPortList.get(backupZKServerIndex);<a name="line.382"></a>
+<span class="sourceLineNo">383</span><a name="line.383"></a>
+<span class="sourceLineNo">384</span>    standaloneServerFactory.shutdown();<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    if (!waitForServerDown(clientPort, connectionTimeout)) {<a name="line.385"></a>
+<span class="sourceLineNo">386</span>      throw new IOException("Waiting for shutdown of standalone server");<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>    zooKeeperServers.get(backupZKServerIndex).getZKDatabase().close();<a name="line.389"></a>
+<span class="sourceLineNo">390</span><a name="line.390"></a>
+<span class="sourceLineNo">391</span>    // remove this backup zk server<a name="line.391"></a>
+<span class="sourceLineNo">392</span>    standaloneServerFactoryList.remove(backupZKServerIndex);<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    clientPortList.remove(backupZKServerIndex);<a name="line.393"></a>
+<span class="sourceLineNo">394</span>    zooKeeperServers.remove(backupZKServerIndex);<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    LOG.info("Kill one backup ZK servers in the cluster " +<a name="line.395"></a>
+<span class="sourceLineNo">396</span>        "on client port: " + clientPort);<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>  // XXX: From o.a.zk.t.ClientBase<a name="line.399"></a>
+<span class="sourceLineNo">400</span>  private static boolean waitForServerDown(int port, long timeout) throws IOException {<a name="line.400"></a>
+<span class="sourceLineNo">401</span>    long start = System.currentTimeMillis();<a name="line.401"></a>
+<span class="sourceLineNo">402</span>    while (true) {<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      try {<a name="line.403"></a>
+<span class="sourceLineNo">404</span>        Socket sock = new Socket("localhost", port);<a name="line.404"></a>
+<span class="sourceLineNo">405</span>        try {<a name="line.405"></a>
+<span class="sourceLineNo">406</span>          OutputStream outstream = sock.getOutputStream();<a name="line.406"></a>
+<span class="sourceLineNo">407</span>          outstream.write("stat".getBytes());<a name="line.407"></a>
+<span class="sourceLineNo">408</span>          outstream.flush();<a name="line.408"></a>
+<span class="sourceLineNo">409</span>        } finally {<a name="line.409"></a>
+<span class="sourceLineNo">410</span>          sock.close();<a name="line.410"></a>
+<span class="sourceLineNo">411</span>        }<a name="line.411"></a>
+<span class="sourceLineNo">412</span>      } catch (IOException e) {<a name="line.412"></a>
+<span class="sourceLineNo">413</span>        return true;<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>      if (System.currentTimeMillis() &gt; start + timeout) {<a name="line.416"></a>
+<span class="sourceLineNo">417</span>        break;<a name="line.417"></a>
+<span class="sourceLineNo">418</span>      }<a name="line.418"></a>
+<span class="sourceLineNo">419</span>      try {<a name="line.419"></a>
+<span class="sourceLineNo">420</span>        Thread.sleep(250);<a name="line.420"></a>
+<span class="sourceLineNo">421</span>      } catch (InterruptedException e) {<a name="line.421"></a>
+<span class="sourceLineNo">422</span>        throw (InterruptedIOException)new InterruptedIOException().initCause(e);<a name="line.422"></a>
+<span class="sourceLineNo">423</span>      }<a name="line.423"></a>
+<span class="sourceLineNo">424</span>    }<a name="line.424"></a>
+<span class="sourceLineNo">425</span>    return false;<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>  // XXX: From o.a.zk.t.ClientBase<a name="line.428"></a>
+<span class="sourceLineNo">429</span>  private static boolean waitForServerUp(int port, long timeout) throws IOException {<a name="line.429"></a>
+<span class="sourceLineNo">430</span>    long start = System.currentTimeMillis();<a name="line.430"></a>
+<span class="sourceLineNo">431</span>    while (true) {<a name="line.431"></a>
+<span class="sourceLineNo">432</span>      try {<a name="line.432"></a>
+<span class="sourceLineNo">433</span>        Socket sock = new Socket("localhost", port);<a name="line.433"></a>
+<span class="sourceLineNo">434</span>        BufferedReader reader = null;<a name="line.434"></a>
+<span class="sourceLineNo">435</span>        try {<a name="line.435"></a>
+<span class="sourceLineNo">436</span>          OutputStream outstream = sock.getOutputStream();<a name="line.436"></a>
+<span class="sourceLineNo">437</span>          outstream.write("stat".getBytes());<a name="line.437"></a>
+<span class="sourceLineNo">438</span>          outstream.flush();<a name="line.438"></a>
+<span class="sourceLineNo">439</span><a name="line.439"></a>
+<span class="sourceLineNo">440</span>          Reader isr = new InputStreamReader(sock.getInputStream());<a name="line.440"></a>
+<span class="sourceLineNo">441</span>          reader = new BufferedReader(isr);<a name="line.441"></a>
+<span class="sourceLineNo">442</span>          String line = reader.readLine();<a name="line.442"></a>
+<span class="sourceLineNo">443</span>          if (line != null &amp;&amp; line.startsWith("Zookeeper version:")) {<a name="line.443"></a>
+<span class="sourceLineNo">444</span>            return true;<a name="line.444"></a>
+<span class="sourceLineNo">445</span>          }<a name="line.445"></a>
+<span class="sourceLineNo">446</span>        } finally {<a name="line.446"></a>
+<span class="sourceLineNo">447</span>          sock.close();<a name="line.447"></a>
+<span class="sourceLineNo">448</span>          if (reader != null) {<a name="line.448"></a>
+<span class="sourceLineNo">449</span>            reader.close();<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>      } catch (IOException e) {<a name="line.452"></a>
+<span class="sourceLineNo">453</span>        // ignore as this is expected<a name="line.453"></a>
+<span class="sourceLineNo">454</span>        LOG.info("server localhost:" + port + " not up " + e);<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>      if (System.currentTimeMillis() &gt; start + timeout) {<a name="line.457"></a>
+<span class="sourceLineNo">458</span>        break;<a name="line.458"></a>
+<span class="sourceLineNo">459</span>      }<a name="line.459"></a>
+<span class="sourceLineNo">460</span>      try {<a name="line.460"></a>
+<span class="sourceLineNo">461</span>        Thread.sleep(250);<a name="line.461"></a>
+<span class="sourceLineNo">462</span>      } catch (InterruptedException e) {<a name="line.462"></a>
+<span class="sourceLineNo">463</span>        throw (InterruptedIOException)new InterruptedIOException().initCause(e);<a name="line.463"></a>
+<span class="sourceLineNo">464</span>      }<a name="line.464"></a>
+<span class="sourceLineNo">465</span>    }<a name="line.465"></a>
+<span class="sourceLineNo">466</span>    return false;<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>  public int getClientPort() {<a name="line.469"></a>
+<span class="sourceLineNo">470</span>    return activeZKServerIndex &lt; 0 || activeZKServerIndex &gt;= clientPortList.size() ? -1<a name="line.470"></a>
+<span class="sourceLineNo">471</span>        : clientPortList.get(activeZKServerIndex);<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>  List&lt;ZooKeeperServer&gt; getZooKeeperServers() {<a name="line.474"></a>
+<span class="sourceLineNo">475</span>    return zooKeeperServers;<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>
 
 
 


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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html
index 5378749..69b3737 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html
@@ -34,13 +34,13 @@
 <span class="sourceLineNo">026</span><a name="line.26"></a>
 <span class="sourceLineNo">027</span>import org.apache.commons.logging.Log;<a name="line.27"></a>
 <span class="sourceLineNo">028</span>import org.apache.commons.logging.LogFactory;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.util.RetryCounter;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.util.RetryCounterFactory;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.htrace.core.TraceScope;<a name="line.35"></a>
+<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.util.RetryCounter;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.util.RetryCounterFactory;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.htrace.core.TraceScope;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.35"></a>
 <span class="sourceLineNo">036</span>import org.apache.zookeeper.AsyncCallback;<a name="line.36"></a>
 <span class="sourceLineNo">037</span>import org.apache.zookeeper.CreateMode;<a name="line.37"></a>
 <span class="sourceLineNo">038</span>import org.apache.zookeeper.KeeperException;<a name="line.38"></a>
@@ -121,701 +121,727 @@
 <span class="sourceLineNo">113</span>    this.sessionTimeout = sessionTimeout;<a name="line.113"></a>
 <span class="sourceLineNo">114</span>    this.quorumServers = quorumServers;<a name="line.114"></a>
 <span class="sourceLineNo">115</span>    this.metrics = new ZKMetrics();<a name="line.115"></a>
-<span class="sourceLineNo">116</span>    try {checkZk();} catch (Exception x) {/* ignore */}<a name="line.116"></a>
-<span class="sourceLineNo">117</span>  }<a name="line.117"></a>
-<span class="sourceLineNo">118</span><a name="line.118"></a>
-<span class="sourceLineNo">119</span>  /**<a name="line.119"></a>
-<span class="sourceLineNo">120</span>   * Try to create a ZooKeeper connection. Turns any exception encountered into a<a name="line.120"></a>
-<span class="sourceLineNo">121</span>   * KeeperException.OperationTimeoutException so it can retried.<a name="line.121"></a>
-<span class="sourceLineNo">122</span>   * @return The created ZooKeeper connection object<a name="line.122"></a>
-<span class="sourceLineNo">123</span>   * @throws KeeperException<a name="line.123"></a>
-<span class="sourceLineNo">124</span>   */<a name="line.124"></a>
-<span class="sourceLineNo">125</span>  protected synchronized ZooKeeper checkZk() throws KeeperException {<a name="line.125"></a>
-<span class="sourceLineNo">126</span>    if (this.zk == null) {<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      try {<a name="line.127"></a>
-<span class="sourceLineNo">128</span>        this.zk = new ZooKeeper(quorumServers, sessionTimeout, watcher);<a name="line.128"></a>
-<span class="sourceLineNo">129</span>      } catch (IOException ex) {<a name="line.129"></a>
-<span class="sourceLineNo">130</span>        LOG.warn("Unable to create ZooKeeper Connection", ex);<a name="line.130"></a>
-<span class="sourceLineNo">131</span>        throw new KeeperException.OperationTimeoutException();<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>    return zk;<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>  public synchronized void reconnectAfterExpiration()<a name="line.137"></a>
-<span class="sourceLineNo">138</span>        throws IOException, KeeperException, InterruptedException {<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    if (zk != null) {<a name="line.139"></a>
-<span class="sourceLineNo">140</span>      LOG.info("Closing dead ZooKeeper connection, session" +<a name="line.140"></a>
-<span class="sourceLineNo">141</span>        " was: 0x"+Long.toHexString(zk.getSessionId()));<a name="line.141"></a>
-<span class="sourceLineNo">142</span>      zk.close();<a name="line.142"></a>
-<span class="sourceLineNo">143</span>      // reset the ZooKeeper connection<a name="line.143"></a>
-<span class="sourceLineNo">144</span>      zk = null;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    }<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    checkZk();<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    LOG.info("Recreated a ZooKeeper, session" +<a name="line.147"></a>
-<span class="sourceLineNo">148</span>      " is: 0x"+Long.toHexString(zk.getSessionId()));<a name="line.148"></a>
-<span class="sourceLineNo">149</span>  }<a name="line.149"></a>
-<span class="sourceLineNo">150</span><a name="line.150"></a>
-<span class="sourceLineNo">151</span>  /**<a name="line.151"></a>
-<span class="sourceLineNo">152</span>   * delete is an idempotent operation. Retry before throwing exception.<a name="line.152"></a>
-<span class="sourceLineNo">153</span>   * This function will not throw NoNodeException if the path does not<a name="line.153"></a>
-<span class="sourceLineNo">154</span>   * exist.<a name="line.154"></a>
-<span class="sourceLineNo">155</span>   */<a name="line.155"></a>
-<span class="sourceLineNo">156</span>  public void delete(String path, int version) throws InterruptedException, KeeperException {<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    try (TraceScope scope = TraceUtil.createTrace("RecoverableZookeeper.delete")) {<a name="line.157"></a>
-<span class="sourceLineNo">158</span>      RetryCounter retryCounter = retryCounterFactory.create();<a name="line.158"></a>
-<span class="sourceLineNo">159</span>      boolean isRetry = false; // False for first attempt, true for all retries.<a name="line.159"></a>
-<span class="sourceLineNo">160</span>      while (true) {<a name="line.160"></a>
-<span class="sourceLineNo">161</span>        try {<a name="line.161"></a>
-<span class="sourceLineNo">162</span>          long startTime = EnvironmentEdgeManager.currentTime();<a name="line.162"></a>
-<span class="sourceLineNo">163</span>          checkZk().delete(path, version);<a name="line.163"></a>
-<span class="sourceLineNo">164</span>          this.metrics.registerWriteOperationLatency(Math.min(EnvironmentEdgeManager.currentTime() - startTime,  1));<a name="line.164"></a>
-<span class="sourceLineNo">165</span>          return;<a name="line.165"></a>
-<span class="sourceLineNo">166</span>        } catch (KeeperException e) {<a name="line.166"></a>
-<span class="sourceLineNo">167</span>          this.metrics.registerFailedZKCall();<a name="line.167"></a>
-<span class="sourceLineNo">168</span>          switch (e.code()) {<a name="line.168"></a>
-<span class="sourceLineNo">169</span>            case NONODE:<a name="line.169"></a>
-<span class="sourceLineNo">170</span>              if (isRetry) {<a name="line.170"></a>
-<span class="sourceLineNo">171</span>                LOG.debug("Node " + path + " already deleted. Assuming a " +<a name="line.171"></a>
-<span class="sourceLineNo">172</span>                    "previous attempt succeeded.");<a name="line.172"></a>
-<span class="sourceLineNo">173</span>                return;<a name="line.173"></a>
-<span class="sourceLineNo">174</span>              }<a name="line.174"></a>
-<span class="sourceLineNo">175</span>              LOG.debug("Node " + path + " already deleted, retry=" + isRetry);<a name="line.175"></a>
-<span class="sourceLineNo">176</span>              throw e;<a name="line.176"></a>
-<span class="sourceLineNo">177</span><a name="line.177"></a>
-<span class="sourceLineNo">178</span>            case CONNECTIONLOSS:<a name="line.178"></a>
-<span class="sourceLineNo">179</span>              this.metrics.registerConnectionLossException();<a name="line.179"></a>
-<span class="sourceLineNo">180</span>              retryOrThrow(retryCounter, e, "delete");<a name="line.180"></a>
-<span class="sourceLineNo">181</span>              break;<a name="line.181"></a>
-<span class="sourceLineNo">182</span>            case OPERATIONTIMEOUT:<a name="line.182"></a>
-<span class="sourceLineNo">183</span>              this.metrics.registerOperationTimeoutException();<a name="line.183"></a>
-<span class="sourceLineNo">184</span>              retryOrThrow(retryCounter, e, "delete");<a name="line.184"></a>
-<span class="sourceLineNo">185</span>              break;<a name="line.185"></a>
-<span class="sourceLineNo">186</span><a name="line.186"></a>
-<span class="sourceLineNo">187</span>            default:<a name="line.187"></a>
-<span class="sourceLineNo">188</span>              throw e;<a name="line.188"></a>
-<span class="sourceLineNo">189</span>          }<a name="line.189"></a>
-<span class="sourceLineNo">190</span>        }<a name="line.190"></a>
-<span class="sourceLineNo">191</span>        retryCounter.sleepUntilNextRetry();<a name="line.191"></a>
-<span class="sourceLineNo">192</span>        isRetry = true;<a name="line.192"></a>
-<span class="sourceLineNo">193</span>      }<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    }<a name="line.194"></a>
-<span class="sourceLineNo">195</span>  }<a name="line.195"></a>
-<span class="sourceLineNo">196</span><a name="line.196"></a>
-<span class="sourceLineNo">197</span>  /**<a name="line.197"></a>
-<span class="sourceLineNo">198</span>   * exists is an idempotent operation. Retry before throwing exception<a name="line.198"></a>
-<span class="sourceLineNo">199</span>   * @return A Stat instance<a name="line.199"></a>
-<span class="sourceLineNo">200</span>   */<a name="line.200"></a>
-<span class="sourceLineNo">201</span>  public Stat exists(String path, Watcher watcher) throws KeeperException, InterruptedException {<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    try (TraceScope scope = TraceUtil.createTrace("RecoverableZookeeper.exists")) {<a name="line.202"></a>
-<span class="sourceLineNo">203</span>      RetryCounter retryCounter = retryCounterFactory.create();<a name="line.203"></a>
-<span class="sourceLineNo">204</span>      while (true) {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>        try {<a name="line.205"></a>
-<span class="sourceLineNo">206</span>          long startTime = EnvironmentEdgeManager.currentTime();<a name="line.206"></a>
-<span class="sourceLineNo">207</span>          Stat nodeStat = checkZk().exists(path, watcher);<a name="line.207"></a>
-<span class="sourceLineNo">208</span>          this.metrics.registerReadOperationLatency(Math.min(EnvironmentEdgeManager.currentTime() - startTime, 1));<a name="line.208"></a>
-<span class="sourceLineNo">209</span>          return nodeStat;<a name="line.209"></a>
-<span class="sourceLineNo">210</span>        } catch (KeeperException e) {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>          this.metrics.registerFailedZKCall();<a name="line.211"></a>
-<span class="sourceLineNo">212</span>          switch (e.code()) {<a name="line.212"></a>
-<span class="sourceLineNo">213</span>            case CONNECTIONLOSS:<a name="line.213"></a>
-<span class="sourceLineNo">214</span>              this.metrics.registerConnectionLossException();<a name="line.214"></a>
-<span class="sourceLineNo">215</span>              retryOrThrow(retryCounter, e, "exists");<a name="line.215"></a>
-<span class="sourceLineNo">216</span>              break;<a name="line.216"></a>
-<span class="sourceLineNo">217</span>            case OPERATIONTIMEOUT:<a name="line.217"></a>
-<span class="sourceLineNo">218</span>              this.metrics.registerOperationTimeoutException();<a name="line.218"></a>
-<span class="sourceLineNo">219</span>              retryOrThrow(retryCounter, e, "exists");<a name="line.219"></a>
-<span class="sourceLineNo">220</span>              break;<a name="line.220"></a>
-<span class="sourceLineNo">221</span><a name="line.221"></a>
-<span class="sourceLineNo">222</span>            default:<a name="line.222"></a>
-<span class="sourceLineNo">223</span>              throw e;<a name="line.223"></a>
-<span class="sourceLineNo">224</span>          }<a name="line.224"></a>
-<span class="sourceLineNo">225</span>        }<a name="line.225"></a>
-<span class="sourceLineNo">226</span>        retryCounter.sleepUntilNextRetry();<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><a name="line.230"></a>
-<span class="sourceLineNo">231</span>  /**<a name="line.231"></a>
-<span class="sourceLineNo">232</span>   * exists is an idempotent operation. Retry before throwing exception<a name="line.232"></a>
-<span class="sourceLineNo">233</span>   * @return A Stat instance<a name="line.233"></a>
-<span class="sourceLineNo">234</span>   */<a name="line.234"></a>
-<span class="sourceLineNo">235</span>  public Stat exists(String path, boolean watch) throws KeeperException, InterruptedException {<a name="line.235"></a>
-<span class="sourceLineNo">236</span>    try (TraceScope scope = TraceUtil.createTrace("RecoverableZookeeper.exists")) {<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      RetryCounter retryCounter = retryCounterFactory.create();<a name="line.237"></a>
-<span class="sourceLineNo">238</span>      while (true) {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>        try {<a name="line.239"></a>
-<span class="sourceLineNo">240</span>          long startTime = EnvironmentEdgeManager.currentTime();<a name="line.240"></a>
-<span class="sourceLineNo">241</span>          Stat nodeStat = checkZk().exists(path, watch);<a name="line.241"></a>
-<span class="sourceLineNo">242</span>          this.metrics.registerReadOperationLatency(Math.min(EnvironmentEdgeManager.currentTime() - startTime,  1));<a name="line.242"></a>
-<span class="sourceLineNo">243</span>          return nodeStat;<a name="line.243"></a>
-<span class="sourceLineNo">244</span>        } catch (KeeperException e) {<a name="line.244"></a>
-<span class="sourceLineNo">245</span>          this.metrics.registerFailedZKCall();<a name="line.245"></a>
-<span class="sourceLineNo">246</span>          switch (e.code()) {<a name="line.246"></a>
-<span class="sourceLineNo">247</span>            case CONNECTIONLOSS:<a name="line.247"></a>
-<span class="sourceLineNo">248</span>              this.metrics.registerConnectionLossException();<a name="line.248"></a>
-<span class="sourceLineNo">249</span>              retryOrThrow(retryCounter, e, "exists");<a name="line.249"></a>
-<span class="sourceLineNo">250</span>              break;<a name="line.250"></a>
-<span class="sourceLineNo">251</span>            case OPERATIONTIMEOUT:<a name="line.251"></a>
-<span class="sourceLineNo">252</span>              this.metrics.registerOperationTimeoutException();<a name="line.252"></a>
-<span class="sourceLineNo">253</span>              retryOrThrow(retryCounter, e, "exists");<a name="line.253"></a>
-<span class="sourceLineNo">254</span>              break;<a name="line.254"></a>
-<span class="sourceLineNo">255</span><a name="line.255"></a>
-<span class="sourceLineNo">256</span>            default:<a name="line.256"></a>
-<span class="sourceLineNo">257</span>              throw e;<a name="line.257"></a>
-<span class="sourceLineNo">258</span>          }<a name="line.258"></a>
-<span class="sourceLineNo">259</span>        }<a name="line.259"></a>
-<span class="sourceLineNo">260</span>        retryCounter.sleepUntilNextRetry();<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      }<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    }<a name="line.262"></a>
-<span class="sourceLineNo">263</span>  }<a name="line.263"></a>
-<span class="sourceLineNo">264</span><a name="line.264"></a>
-<span class="sourceLineNo">265</span>  private void retryOrThrow(RetryCounter retryCounter, KeeperException e,<a name="line.265"></a>
-<span class="sourceLineNo">266</span>      String opName) throws KeeperException {<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    if (!retryCounter.shouldRetry()) {<a name="line.267"></a>
-<span class="sourceLineNo">268</span>      LOG.error("ZooKeeper " + opName + " failed after "<a name="line.268"></a>
-<span class="sourceLineNo">269</span>        + retryCounter.getMaxAttempts() + " attempts");<a name="line.269"></a>
-<span class="sourceLineNo">270</span>      throw e;<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    }<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    LOG.debug("Retry, connectivity issue (JVM Pause?); quorum=" + quorumServers + "," +<a name="line.272"></a>
-<span class="sourceLineNo">273</span>        "exception=" + e);<a name="line.273"></a>
-<span class="sourceLineNo">274</span>  }<a name="line.274"></a>
-<span class="sourceLineNo">275</span><a name="line.275"></a>
-<span class="sourceLineNo">276</span>  /**<a name="line.276"></a>
-<span class="sourceLineNo">277</span>   * getChildren is an idempotent operation. Retry before throwing exception<a name="line.277"></a>
-<span class="sourceLineNo">278</span>   * @return List of children znodes<a name="line.278"></a>
-<span class="sourceLineNo">279</span>   */<a name="line.279"></a>
-<span class="sourceLineNo">280</span>  public List&lt;String&gt; getChildren(String path, Watcher watcher)<a name="line.280"></a>
-<span class="sourceLineNo">281</span>    throws KeeperException, InterruptedException {<a name="line.281"></a>
-<span class="sourceLineNo">282</span>    try (TraceScope scope = TraceUtil.createTrace("RecoverableZookeeper.getChildren")) {<a name="line.282"></a>
-<span class="sourceLineNo">283</span>      RetryCounter retryCounter = retryCounterFactory.create();<a name="line.283"></a>
-<span class="sourceLineNo">284</span>      while (true) {<a name="line.284"></a>
-<span class="sourceLineNo">285</span>        try {<a name="line.285"></a>
-<span class="sourceLineNo">286</span>          long startTime = EnvironmentEdgeManager.currentTime();<a name="line.286"></a>
-<span class="sourceLineNo">287</span>          List&lt;String&gt; children = checkZk().getChildren(path, watcher);<a name="line.287"></a>
-<span class="sourceLineNo">288</span>          this.metrics.registerReadOperationLatency(Math.min(EnvironmentEdgeManager.currentTime() - startTime,  1));<a name="line.288"></a>
-<span class="sourceLineNo">289</span>          return children;<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        } catch (KeeperException e) {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>          this.metrics.registerFailedZKCall();<a name="line.291"></a>
-<span class="sourceLineNo">292</span>          switch (e.code()) {<a name="line.292"></a>
-<span class="sourceLineNo">293</span>            case CONNECTIONLOSS:<a name="line.293"></a>
-<span class="sourceLineNo">294</span>              this.metrics.registerConnectionLossException();<a name="line.294"></a>
-<span class="sourceLineNo">295</span>              retryOrThrow(retryCounter, e, "getChildren");<a name="line.295"></a>
-<span class="sourceLineNo">296</span>              break;<a name="line.296"></a>
-<span class="sourceLineNo">297</span>            case OPERATIONTIMEOUT:<a name="line.297"></a>
-<span class="sourceLineNo">298</span>              this.metrics.registerOperationTimeoutException();<a name="line.298"></a>
-<span class="sourceLineNo">299</span>              retryOrThrow(retryCounter, e, "getChildren");<a name="line.299"></a>
-<span class="sourceLineNo">300</span>              break;<a name="line.300"></a>
-<span class="sourceLineNo">301</span><a name="line.301"></a>
-<span class="sourceLineNo">302</span>            default:<a name="line.302"></a>
-<span class="sourceLineNo">303</span>              throw e;<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>        retryCounter.sleepUntilNextRetry();<a name="line.306"></a>
-<span class="sourceLineNo">307</span>      }<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    }<a name="line.308"></a>
-<span class="sourceLineNo">309</span>  }<a name="line.309"></a>
+<span class="sourceLineNo">116</span><a name="line.116"></a>
+<span class="sourceLineNo">117</span>    try {<a name="line.117"></a>
+<span class="sourceLineNo">118</span>      checkZk();<a name="line.118"></a>
+<span class="sourceLineNo">119</span>    } catch (Exception x) {<a name="line.119"></a>
+<span class="sourceLineNo">120</span>      /* ignore */<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>  /**<a name="line.124"></a>
+<span class="sourceLineNo">125</span>   * Try to create a ZooKeeper connection. Turns any exception encountered into a<a name="line.125"></a>
+<span class="sourceLineNo">126</span>   * KeeperException.OperationTimeoutException so it can retried.<a name="line.126"></a>
+<span class="sourceLineNo">127</span>   * @return The created ZooKeeper connection object<a name="line.127"></a>
+<span class="sourceLineNo">128</span>   * @throws KeeperException if a ZooKeeper operation fails<a name="line.128"></a>
+<span class="sourceLineNo">129</span>   */<a name="line.129"></a>
+<span class="sourceLineNo">130</span>  protected synchronized ZooKeeper checkZk() throws KeeperException {<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    if (this.zk == null) {<a name="line.131"></a>
+<span class="sourceLineNo">132</span>      try {<a name="line.132"></a>
+<span class="sourceLineNo">133</span>        this.zk = new ZooKeeper(quorumServers, sessionTimeout, watcher);<a name="line.133"></a>
+<span class="sourceLineNo">134</span>      } catch (IOException ex) {<a name="line.134"></a>
+<span class="sourceLineNo">135</span>        LOG.warn("Unable to create ZooKeeper Connection", ex);<a name="line.135"></a>
+<span class="sourceLineNo">136</span>        throw new KeeperException.OperationTimeoutException();<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>    return zk;<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>  public synchronized void reconnectAfterExpiration()<a name="line.142"></a>
+<span class="sourceLineNo">143</span>        throws IOException, KeeperException, InterruptedException {<a name="line.143"></a>
+<span class="sourceLineNo">144</span>    if (zk != null) {<a name="line.144"></a>
+<span class="sourceLineNo">145</span>      LOG.info("Closing dead ZooKeeper connection, session" +<a name="line.145"></a>
+<span class="sourceLineNo">146</span>        " was: 0x"+Long.toHexString(zk.getSessionId()));<a name="line.146"></a>
+<span class="sourceLineNo">147</span>      zk.close();<a name="line.147"></a>
+<span class="sourceLineNo">148</span>      // reset the ZooKeeper connection<a name="line.148"></a>
+<span class="sourceLineNo">149</span>      zk = null;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    }<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    checkZk();<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    LOG.info("Recreated a ZooKeeper, session" +<a name="line.152"></a>
+<span class="sourceLineNo">153</span>      " is: 0x"+Long.toHexString(zk.getSessionId()));<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>   * delete is an idempotent operation. Retry before throwing exception.<a name="line.157"></a>
+<span class="sourceLineNo">158</span>   * This function will not throw NoNodeException if the path does not<a name="line.158"></a>
+<span class="sourceLineNo">159</span>   * exist.<a name="line.159"></a>
+<span class="sourceLineNo">160</span>   */<a name="line.160"></a>
+<span class="sourceLineNo">161</span>  public void delete(String path, int version) throws InterruptedException, KeeperException {<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    try (TraceScope scope = TraceUtil.createTrace("RecoverableZookeeper.delete")) {<a name="line.162"></a>
+<span class="sourceLineNo">163</span>      RetryCounter retryCounter = retryCounterFactory.create();<a name="line.163"></a>
+<span class="sourceLineNo">164</span>      boolean isRetry = false; // False for first attempt, true for all retries.<a name="line.164"></a>
+<span class="sourceLineNo">165</span>      while (true) {<a name="line.165"></a>
+<span class="sourceLineNo">166</span>        try {<a name="line.166"></a>
+<span class="sourceLineNo">167</span>          long startTime = EnvironmentEdgeManager.currentTime();<a name="line.167"></a>
+<span class="sourceLineNo">168</span>          checkZk().delete(path, version);<a name="line.168"></a>
+<span class="sourceLineNo">169</span>          this.metrics.registerWriteOperationLatency(<a name="line.169"></a>
+<span class="sourceLineNo">170</span>                  Math.min(EnvironmentEdgeManager.currentTime() - startTime,  1));<a name="line.170"></a>
+<span class="sourceLineNo">171</span>          return;<a name="line.171"></a>
+<span class="sourceLineNo">172</span>        } catch (KeeperException e) {<a name="line.172"></a>
+<span class="sourceLineNo">173</span>          this.metrics.registerFailedZKCall();<a name="line.173"></a>
+<span class="sourceLineNo">174</span>          switch (e.code()) {<a name="line.174"></a>
+<span class="sourceLineNo">175</span>            case NONODE:<a name="line.175"></a>
+<span class="sourceLineNo">176</span>              if (isRetry) {<a name="line.176"></a>
+<span class="sourceLineNo">177</span>                LOG.debug("Node " + path + " already deleted. Assuming a " +<a name="line.177"></a>
+<span class="sourceLineNo">178</span>                    "previous attempt succeeded.");<a name="line.178"></a>
+<span class="sourceLineNo">179</span>                return;<a name="line.179"></a>
+<span class="sourceLineNo">180</span>              }<a name="line.180"></a>
+<span class="sourceLineNo">181</span>              LOG.debug("Node " + path + " already deleted, retry=" + isRetry);<a name="line.181"></a>
+<span class="sourceLineNo">182</span>              throw e;<a name="line.182"></a>
+<span class="sourceLineNo">183</span><a name="line.183"></a>
+<span class="sourceLineNo">184</span>            case CONNECTIONLOSS:<a name="line.184"></a>
+<span class="sourceLineNo">185</span>              this.metrics.registerConnectionLossException();<a name="line.185"></a>
+<span class="sourceLineNo">186</span>              retryOrThrow(retryCounter, e, "delete");<a name="line.186"></a>
+<span class="sourceLineNo">187</span>              break;<a name="line.187"></a>
+<span class="sourceLineNo">188</span>            case OPERATIONTIMEOUT:<a name="line.188"></a>
+<span class="sourceLineNo">189</span>              this.metrics.registerOperationTimeoutException();<a name="line.189"></a>
+<span class="sourceLineNo">190</span>              retryOrThrow(retryCounter, e, "delete");<a name="line.190"></a>
+<span class="sourceLineNo">191</span>              break;<a name="line.191"></a>
+<span class="sourceLineNo">192</span><a name="line.192"></a>
+<span class="sourceLineNo">193</span>            default:<a name="line.193"></a>
+<span class="sourceLineNo">194</span>              throw e;<a name="line.194"></a>
+<span class="sourceLineNo">195</span>          }<a name="line.195"></a>
+<span class="sourceLineNo">196</span>        }<a name="line.196"></a>
+<span class="sourceLineNo">197</span>        retryCounter.sleepUntilNextRetry();<a name="line.197"></a>
+<span class="sourceLineNo">198</span>        isRetry = true;<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><a name="line.202"></a>
+<span class="sourceLineNo">203</span>  /**<a name="line.203"></a>
+<span class="sourceLineNo">204</span>   * exists is an idempotent operation. Retry before throwing exception<a name="line.204"></a>
+<span class="sourceLineNo">205</span>   * @return A Stat instance<a name="line.205"></a>
+<span class="sourceLineNo">206</span>   */<a name="line.206"></a>
+<span class="sourceLineNo">207</span>  public Stat exists(String path, Watcher watcher) throws KeeperException, InterruptedException {<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    try (TraceScope scope = TraceUtil.createTrace("RecoverableZookeeper.exists")) {<a name="line.208"></a>
+<span class="sourceLineNo">209</span>      RetryCounter retryCounter = retryCounterFactory.create();<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      while (true) {<a name="line.210"></a>
+<span class="sourceLineNo">211</span>        try {<a name="line.211"></a>
+<span class="sourceLineNo">212</span>          long startTime = EnvironmentEdgeManager.currentTime();<a name="line.212"></a>
+<span class="sourceLineNo">213</span>          Stat nodeStat = checkZk().exists(path, watcher);<a name="line.213"></a>
+<span class="sourceLineNo">214</span>          this.metrics.registerReadOperationLatency(<a name="line.214"></a>
+<span class="sourceLineNo">215</span>                  Math.min(EnvironmentEdgeManager.currentTime() - startTime, 1));<a name="line.215"></a>
+<span class="sourceLineNo">216</span>          return nodeStat;<a name="line.216"></a>
+<span class="sourceLineNo">217</span>        } catch (KeeperException e) {<a name="line.217"></a>
+<span class="sourceLineNo">218</span>          this.metrics.registerFailedZKCall();<a name="line.218"></a>
+<span class="sourceLineNo">219</span>          switch (e.code()) {<a name="line.219"></a>
+<span class="sourceLineNo">220</span>            case CONNECTIONLOSS:<a name="line.220"></a>
+<span class="sourceLineNo">221</span>              this.metrics.registerConnectionLossException();<a name="line.221"></a>
+<span class="sourceLineNo">222</span>              retryOrThrow(retryCounter, e, "exists");<a name="line.222"></a>
+<span class="sourceLineNo">223</span>              break;<a name="line.223"></a>
+<span class="sourceLineNo">224</span>            case OPERATIONTIMEOUT:<a name="line.224"></a>
+<span class="sourceLineNo">225</span>              this.metrics.registerOperationTimeoutException();<a name="line.225"></a>
+<span class="sourceLineNo">226</span>              retryOrThrow(retryCounter, e, "exists");<a name="line.226"></a>
+<span class="sourceLineNo">227</span>              break;<a name="line.227"></a>
+<span class="sourceLineNo">228</span><a name="line.228"></a>
+<span class="sourceLineNo">229</span>            default:<a name="line.229"></a>
+<span class="sourceLineNo">230</span>              throw e;<a name="line.230"></a>
+<span class="sourceLineNo">231</span>          }<a name="line.231"></a>
+<span class="sourceLineNo">232</span>        }<a name="line.232"></a>
+<span class="sourceLineNo">233</span>        retryCounter.sleepUntilNextRetry();<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      }<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    }<a name="line.235"></a>
+<span class="sourceLineNo">236</span>  }<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>   * exists is an idempotent operation. Retry before throwing exception<a name="line.239"></a>
+<span class="sourceLineNo">240</span>   * @return A Stat instance<a name="line.240"></a>
+<span class="sourceLineNo">241</span>   */<a name="line.241"></a>
+<span class="sourceLineNo">242</span>  public Stat exists(String path, boolean watch) throws KeeperException, InterruptedException {<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    try (TraceScope scope = TraceUtil.createTrace("RecoverableZookeeper.exists")) {<a name="line.243"></a>
+<span class="sourceLineNo">244</span>      RetryCounter retryCounter = retryCounterFactory.create();<a name="line.244"></a>
+<span class="sourceLineNo">245</span>      while (true) {<a name="line.245"></a>
+<span class="sourceLineNo">246</span>        try {<a name="line.246"></a>
+<span class="sourceLineNo">247</span>          long startTime = EnvironmentEdgeManager.currentTime();<a name="line.247"></a>
+<span class="sourceLineNo">248</span>          Stat nodeStat = checkZk().exists(path, watch);<a name="line.248"></a>
+<span class="sourceLineNo">249</span>          this.metrics.registerReadOperationLatency(<a name="line.249"></a>
+<span class="sourceLineNo">250</span>                  Math.min(EnvironmentEdgeManager.currentTime() - startTime,  1));<a name="line.250"></a>
+<span class="sourceLineNo">251</span>          return nodeStat;<a name="line.251"></a>
+<span class="sourceLineNo">252</span>        } catch (KeeperException e) {<a name="line.252"></a>
+<span class="sourceLineNo">253</span>          this.metrics.registerFailedZKCall();<a name="line.253"></a>
+<span class="sourceLineNo">254</span>          switch (e.code()) {<a name="line.254"></a>
+<span class="sourceLineNo">255</span>            case CONNECTIONLOSS:<a name="line.255"></a>
+<span class="sourceLineNo">256</span>              this.metrics.registerConnectionLossException();<a name="line.256"></a>
+<span class="sourceLineNo">257</span>              retryOrThrow(retryCounter, e, "exists");<a name="line.257"></a>
+<span class="sourceLineNo">258</span>              break;<a name="line.258"></a>
+<span class="sourceLineNo">259</span>            case OPERATIONTIMEOUT:<a name="line.259"></a>
+<span class="sourceLineNo">260</span>              this.metrics.registerOperationTimeoutException();<a name="line.260"></a>
+<span class="sourceLineNo">261</span>              retryOrThrow(retryCounter, e, "exists");<a name="line.261"></a>
+<span class="sourceLineNo">262</span>              break;<a name="line.262"></a>
+<span class="sourceLineNo">263</span><a name="line.263"></a>
+<span class="sourceLineNo">264</span>            default:<a name="line.264"></a>
+<span class="sourceLineNo">265</span>              throw e;<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>        retryCounter.sleepUntilNextRetry();<a name="line.268"></a>
+<span class="sourceLineNo">269</span>      }<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    }<a name="line.270"></a>
+<span class="sourceLineNo">271</span>  }<a name="line.271"></a>
+<span class="sourceLineNo">272</span><a name="line.272"></a>
+<span class="sourceLineNo">273</span>  private void retryOrThrow(RetryCounter retryCounter, KeeperException e,<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      String opName) throws KeeperException {<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    if (!retryCounter.shouldRetry()) {<a name="line.275"></a>
+<span class="sourceLineNo">276</span>      LOG.error("ZooKeeper " + opName + " failed after "<a name="line.276"></a>
+<span class="sourceLineNo">277</span>        + retryCounter.getMaxAttempts() + " attempts");<a name="line.277"></a>
+<span class="sourceLineNo">278</span>      throw e;<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    }<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    LOG.debug("Retry, connectivity issue (JVM Pause?); quorum=" + quorumServers + "," +<a name="line.280"></a>
+<span class="sourceLineNo">281</span>        "exception=" + e);<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>   * getChildren is an idempotent operation. Retry before throwing exception<a name="line.285"></a>
+<span class="sourceLineNo">286</span>   * @return List of children znodes<a name="line.286"></a>
+<span class="sourceLineNo">287</span>   */<a name="line.287"></a>
+<span class="sourceLineNo">288</span>  public List&lt;String&gt; getChildren(String path, Watcher watcher)<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    throws KeeperException, InterruptedException {<a name="line.289"></a>
+<span class="sourceLineNo">290</span>    try (TraceScope scope = TraceUtil.createTrace("RecoverableZookeeper.getChildren")) {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>      RetryCounter retryCounter = retryCounterFactory.create();<a name="line.291"></a>
+<span class="sourceLineNo">292</span>      while (true) {<a name="line.292"></a>
+<span class="sourceLineNo">293</span>        try {<a name="line.293"></a>
+<span class="sourceLineNo">294</span>          long startTime = EnvironmentEdgeManager.currentTime();<a name="line.294"></a>
+<span class="sourceLineNo">295</span>          List&lt;String&gt; children = checkZk().getChildren(path, watcher);<a name="line.295"></a>
+<span class="sourceLineNo">296</span>          this.metrics.registerReadOperationLatency(<a name="line.296"></a>
+<span class="sourceLineNo">297</span>                  Math.min(EnvironmentEdgeManager.currentTime() - startTime,  1));<a name="line.297"></a>
+<span class="sourceLineNo">298</span>          return children;<a name="line.298"></a>
+<span class="sourceLineNo">299</span>        } catch (KeeperException e) {<a name="line.299"></a>
+<span class="sourceLineNo">300</span>          this.metrics.registerFailedZKCall();<a name="line.300"></a>
+<span class="sourceLineNo">301</span>          switch (e.code()) {<a name="line.301"></a>
+<span class="sourceLineNo">302</span>            case CONNECTIONLOSS:<a name="line.302"></a>
+<span class="sourceLineNo">303</span>              this.metrics.registerConnectionLossException();<a name="line.303"></a>
+<span class="sourceLineNo">304</span>              retryOrThrow(retryCounter, e, "getChildren");<a name="line.304"></a>
+<span class="sourceLineNo">305</span>              break;<a name="line.305"></a>
+<span class="sourceLineNo">306</span>            case OPERATIONTIMEOUT:<a name="line.306"></a>
+<span class="sourceLineNo">307</span>              this.metrics.registerOperationTimeoutException();<a name="line.307"></a>
+<span class="sourceLineNo">308</span>              retryOrThrow(retryCounter, e, "getChildren");<a name="line.308"></a>
+<span class="sourceLineNo">309</span>              break;<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>   * getChildren is an idempotent operation. Retry before throwing exception<a name="line.312"></a>
-<span class="sourceLineNo">313</span>   * @return List of children znodes<a name="line.313"></a>
-<span class="sourceLineNo">314</span>   */<a name="line.314"></a>
-<span class="sourceLineNo">315</span>  public List&lt;String&gt; getChildren(String path, boolean watch)<a name="line.315"></a>
-<span class="sourceLineNo">316</span>  throws KeeperException, InterruptedException {<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    try (TraceScope scope = TraceUtil.createTrace("RecoverableZookeeper.getChildren")) {<a name="line.317"></a>
-<span class="sourceLineNo">318</span>      RetryCounter retryCounter = retryCounterFactory.create();<a name="line.318"></a>
-<span class="sourceLineNo">319</span>      while (true) {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>        try {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>          long startTime = EnvironmentEdgeManager.currentTime();<a name="line.321"></a>
-<span class="sourceLineNo">322</span>          List&lt;String&gt; children = checkZk().getChildren(path, watch);<a name="line.322"></a>
-<span class="sourceLineNo">323</span>          this.metrics.registerReadOperationLatency(Math.min(EnvironmentEdgeManager.currentTime() - startTime,  1));<a name="line.323"></a>
-<span class="sourceLineNo">324</span>          return children;<a name="line.324"></a>
-<span class="sourceLineNo">325</span>        } catch (KeeperException e) {<a name="line.325"></a>
-<span class="sourceLineNo">326</span>          this.metrics.registerFailedZKCall();<a name="line.326"></a>
-<span class="sourceLineNo">327</span>          switch (e.code()) {<a name="line.327"></a>
-<span class="sourceLineNo">328</span>            case CONNECTIONLOSS:<a name="line.328"></a>
-<span class="sourceLineNo">329</span>              this.metrics.registerConnectionLossException();<a name="line.329"></a>
-<span class="sourceLineNo">330</span>              retryOrThrow(retryCounter, e, "getChildren");<a name="line.330"></a>
-<span class="sourceLineNo">331</span>              break;<a name="line.331"></a>
-<span class="sourceLineNo">332</span>            case OPERATIONTIMEOUT:<a name="line.332"></a>
-<span class="sourceLineNo">333</span>              this.metrics.registerOperationTimeoutException();<a name="line.333"></a>
-<span class="sourceLineNo">334</span>              retryOrThrow(retryCounter, e, "getChildren");<a name="line.334"></a>
-<span class="sourceLineNo">335</span>              break;<a name="line.335"></a>
-<span class="sourceLineNo">336</span><a name="line.336"></a>
-<span class="sourceLineNo">337</span>            default:<a name="line.337"></a>
-<span class="sourceLineNo">338</span>              throw e;<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>        retryCounter.sleepUntilNextRetry();<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><a name="line.345"></a>
-<span class="sourceLineNo">346</span>  /**<a name="line.346"></a>
-<span class="sourceLineNo">347</span>   * getData is an idempotent operation. Retry before throwing exception<a name="line.347"></a>
-<span class="sourceLineNo">348</span>   * @return Data<a name="line.348"></a>
-<span class="sourceLineNo">349</span>   */<a name="line.349"></a>
-<span class="sourceLineNo">350</span>  public byte[] getData(String path, Watcher watcher, Stat stat)<a name="line.350"></a>
-<span class="sourceLineNo">351</span>  throws KeeperException, InterruptedException {<a name="line.351"></a>
-<span class="sourceLineNo">352</span>    try (TraceScope scope = TraceUtil.createTrace("RecoverableZookeeper.getData")) {<a name="line.352"></a>
-<span class="sourceLineNo">353</span>      RetryCounter retryCounter = retryCounterFactory.create();<a name="line.353"></a>
-<span class="sourceLineNo">354</span>      while (true) {<a name="line.354"></a>
-<span class="sourceLineNo">355</span>        try {<a name="line.355"></a>
-<span class="sourceLineNo">356</span>          long startTime = EnvironmentEdgeManager.currentTime();<a name="line.356"></a>
-<span class="sourceLineNo">357</span>          byte[] revData = checkZk().getData(path, watcher, stat);<a name="line.357"></a>
-<span class="sourceLineNo">358</span>          this.metrics.registerReadOperationLatency(Math.min(EnvironmentEdgeManager.currentTime() - startTime,  1));<a name="line.358"></a>
-<span class="sourceLineNo">359</span>          return ZKMetadata.removeMetaData(revData);<a name="line.359"></a>
-<span class="sourceLineNo">360</span>        } catch (KeeperException e) {<a name="line.360"></a>
-<span class="sourceLineNo">361</span>          this.metrics.registerFailedZKCall();<a name="line.361"></a>
-<span class="sourceLineNo">362</span>          switch (e.code()) {<a name="line.362"></a>
-<span class="sourceLineNo">363</span>            case CONNECTIONLOSS:<a name="line.363"></a>
-<span class="sourceLineNo">364</span>              this.metrics.registerConnectionLossException();<a name="line.364"></a>
-<span class="sourceLineNo">365</span>              retryOrThrow(retryCounter, e, "getData");<a name="line.365"></a>
-<span class="sourceLineNo">366</span>              break;<a name="line.366"></a>
-<span class="sourceLineNo">367</span>            case OPERATIONTIMEOUT:<a name="line.367"></a>
-<span class="sourceLineNo">368</span>              this.metrics.registerOperationTimeoutException();<a name="line.368"></a>
-<span class="sourceLineNo">369</span>              retryOrThrow(retryCounter, e, "getData");<a name="line.369"></a>
-<span class="sourceLineNo">370</span>              break;<a name="line.370"></a>
-<span class="sourceLineNo">371</span><a name="line.371"></a>
-<span class="sourceLineNo">372</span>            default:<a name="line.372"></a>
-<span class="sourceLineNo">373</span>              throw e;<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>        retryCounter.sleepUntilNextRetry();<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><a name="line.380"></a>
-<span class="sourceLineNo">381</span>  /**<a name="line.381"></a>
-<span class="sourceLineNo">382</span>   * getData is an idempotent operation. Retry before throwing exception<a name="line.382"></a>
-<span class="sourceLineNo">383</span>   * @return Data<a name="line.383"></a>
-<span class="sourceLineNo">384</span>   */<a name="line.384"></a>
-<span class="sourceLineNo">385</span>  public byte[] getData(String path, boolean watch, Stat stat)<a name="line.385"></a>
-<span class="sourceLineNo">386</span>  throws KeeperException, InterruptedException {<a name="line.386"></a>
-<span class="sourceLineNo">387</span>    try (TraceScope scope = TraceUtil.createTrace("RecoverableZookeeper.getData")) {<a name="line.387"></a>
-<span class="sourceLineNo">388</span>      RetryCounter retryCounter = retryCounterFactory.create();<a name="line.388"></a>
-<span class="sourceLineNo">389</span>      while (true) {<a name="line.389"></a>
-<span class="sourceLineNo">390</span>        try {<a name="line.390"></a>
-<span class="sourceLineNo">391</span>          long startTime = EnvironmentEdgeManager.currentTime();<a name="line.391"></a>
-<span class="sourceLineNo">392</span>          byte[] revData = checkZk().getData(path, watch, stat);<a name="line.392"></a>
-<span class="sourceLineNo">393</span>          this.metrics.registerReadOperationLatency(Math.min(EnvironmentEdgeManager.currentTime() - startTime,  1));<a name="line.393"></a>
-<span class="sourceLineNo">394</span>          return ZKMetadata.removeMetaData(revData);<a name="line.394"></a>
-<span class="sourceLineNo">395</span>        } catch (KeeperException e) {<a name="line.395"></a>
-<span class="sourceLineNo">396</span>          this.metrics.registerFailedZKCall();<a name="line.396"></a>
-<span class="sourceLineNo">397</span>          switch (e.code()) {<a name="line.397"></a>
-<span class="sourceLineNo">398</span>            case CONNECTIONLOSS:<a name="line.398"></a>
-<span class="sourceLineNo">399</span>              this.metrics.registerConnectionLossException();<a name="line.399"></a>
-<span class="sourceLineNo">400</span>              retryOrThrow(retryCounter, e, "getData");<a name="line.400"></a>
-<span class="sourceLineNo">401</span>              break;<a name="line.401"></a>
-<span class="sourceLineNo">402</span>            case OPERATIONTIMEOUT:<a name="line.402"></a>
-<span class="sourceLineNo">403</span>              this.metrics.registerOperationTimeoutException();<a name="line.403"></a>
-<span class="sourceLineNo">404</span>              retryOrThrow(retryCounter, e, "getData");<a name="line.404"></a>
-<span class="sourceLineNo">405</span>              break;<a name="line.405"></a>
-<span class="sourceLineNo">406</span><a name="line.406"></a>
-<span class="sourceLineNo">407</span>            default:<a name="line.407"></a>
-<span class="sourceLineNo">408</span>              throw e;<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>        retryCounter.sleepUntilNextRetry();<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><a name="line.415"></a>
-<span class="sourceLineNo">416</span>  /**<a name="line.416"></a>
-<span class="sourceLineNo">417</span>   * setData is NOT an idempotent operation. Retry may cause BadVersion Exception<a name="line.417"></a>
-<span class="sourceLineNo">418</span>   * Adding an identifier field into the data to check whether<a name="line.418"></a>
-<span class="sourceLineNo">419</span>   * badversion is caused by the result of previous correctly setData<a name="line.419"></a>
-<span class="sourceLineNo">420</span>   * @return Stat instance<a name="line.420"></a>
-<span class="sourceLineNo">421</span>   */<a name="line.421"></a>
-<span class="sourceLineNo">422</span>  public Stat setData(String path, byte[] data, int version)<a name="line.422"></a>
-<span class="sourceLineNo">423</span>  throws KeeperException, InterruptedException {<a name="line.423"></a>
-<span class="sourceLineNo">424</span>    try (TraceScope scope = TraceUtil.createTrace("RecoverableZookeeper.setData")) {<a name="line.424"></a>
-<span class="sourceLineNo">425</span>      RetryCounter retryCounter = retryCounterFactory.create();<a name="line.425"></a>
-<span class="sourceLineNo">426</span>      byte[] newData = ZKMetadata.appendMetaData(id, data);<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      boolean isRetry = false;<a name="line.427"></a>
-<span class="sourceLineNo">428</span>      long startTime;<a name="line.428"></a>
-<span class="sourceLineNo">429</span>      while (true) {<a name="line.429"></a>
-<span class="sourceLineNo">430</span>        try {<a name="line.430"></a>
-<span class="sourceLineNo">431</span>          startTime = EnvironmentEdgeManager.currentTime();<a name="line.431"></a>
-<span class="sourceLineNo">432</span>          Stat nodeStat = checkZk().setData(path, newData, version);<a name="line.432"></a>
-<span class="sourceLineNo">433</span>          this.metrics.registerWriteOperationLatency(Math.min(EnvironmentEdgeManager.currentTime() - startTime,  1));<a name="line.433"></a>
-<span class="sourceLineNo">434</span>          return nodeStat;<a name="line.434"></a>
-<span class="sourceLineNo">435</span>        } catch (KeeperException e) {<a name="line.435"></a>
-<span class="sourceLineNo">436</span>          this.metrics.registerFailedZKCall();<a name="line.436"></a>
-<span class="sourceLineNo">437</span>          switch (e.code()) {<a name="line.437"></a>
-<span class="sourceLineNo">438</span>            case CONNECTIONLOSS:<a name="line.438"></a>
-<span class="sourceLineNo">439</span>              this.metrics.registerConnectionLossException();<a name="line.439"></a>
-<span class="sourceLineNo">440</span>              retryOrThrow(retryCounter, e, "setData");<a name="line.440"></a>
-<span class="sourceLineNo">441</span>              break;<a name="line.441"></a>
-<span class="sourceLineNo">442</span>            case OPERATIONTIMEOUT:<a name="line.442"></a>
-<span class="sourceLineNo">443</span>              this.metrics.registerOperationTimeoutException();<a name="line.443"></a>
-<span class="sourceLineNo">444</span>              retryOrThrow(retryCounter, e, "setData");<a name="line.444"></a>
-<span class="sourceLineNo">445</span>              break;<a name="line.445"></a>
-<span class="sourceLineNo">446</span>            case BADVERSION:<a name="line.446"></a>
-<span class="sourceLineNo">447</span>              if (isRetry) {<a name="line.447"></a>
-<span class="sourceLineNo">448</span>                // try to verify whether the previous setData success or not<a name="line.448"></a>
-<span class="sourceLineNo">449</span>                try{<a name="line.449"></a>
-<span class="sourceLineNo">450</span>                  Stat stat = new Stat();<a name="line.450"></a>
-<span class="sourceLineNo">451</span>                  startTime = EnvironmentEdgeManager.currentTime();<a name="line.451"></a>
-<span class="sourceLineNo">452</span>                  byte[] revData = checkZk().getData(path, false, stat);<a name="line.452"></a>
-<span class="sourceLineNo">453</span>                  this.metrics.registerReadOperationLatency(Math.min(EnvironmentEdgeManager.currentTime() - startTime,  1));<a name="line.453"></a>
-<span class="sourceLineNo">454</span>                  if(Bytes.compareTo(revData, newData) == 0) {<a name="line.454"></a>
-<span class="sourceLineNo">455</span>                    // the bad version is caused by previous successful setData<a name="line.455"></a>
-<span class="sourceLineNo">456</span>                    return stat;<a name="line.456"></a>
-<span class="sourceLineNo">457</span>                  }<a name="line.457"></a>
-<span class="sourceLineNo">458</span>                } catch(KeeperException keeperException){<a name="line.458"></a>
-<span class="sourceLineNo">459</span>                  this.metrics.registerFailedZKCall();<a name="line.459"></a>
-<span class="sourceLineNo">460</span>                  // the ZK is not reliable at this moment. just throwing exception<a name="line.460"></a>
-<span class="sourceLineNo">461</span>                  throw keeperException;<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>            // throw other exceptions and verified bad version exceptions<a name="line.464"></a>
-<span class="sourceLineNo">465</span>            default:<a name="line.465"></a>
-<span class="sourceLineNo">466</span>              throw e;<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>        retryCounter.sleepUntilNextRetry();<a name="line.469"></a>
-<span class="sourceLineNo">470</span>        isRetry = true;<a name="line.470"></a>
-<span class="sourceLineNo">471</span>      }<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    }<a name="line.472"></a>
-<span class="sourceLineNo">473</span>  }<a name="line.473"></a>
-<span class="sourceLineNo">474</span><a name="line.474"></a>
-<span class="sourceLineNo">475</span>  /**<a name="line.475"></a>
-<span class="sourceLineNo">476</span>   * getAcl is an idempotent operation. Retry before throwing exception<a name="line.476"></a>
-<span class="sourceLineNo">477</span>   * @return list of ACLs<a name="line.477"></a>
-<span class="sourceLineNo">478</span>   */<a name="line.478"></a>
-<span class="sourceLineNo">479</span>  public List&lt;ACL&gt; getAcl(String path, Stat stat)<a name="line.479"></a>
-<span class="sourceLineNo">480</span>  throws KeeperException, InterruptedException {<a name="line.480"></a>
-<span class="sourceLineNo">481</span>    try (TraceScope scope = TraceUtil.createTrace("RecoverableZookeeper.getAcl")) {<a name="line.481"></a>
-<span class="sourceLineNo">482</span>      RetryCounter retryCounter = retryCounterFactory.create();<a name="line.482"></a>
-<span class="sourceLineNo">483</span>      while (true) {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>        try {<a name="line.484"></a>
-<span class="sourceLineNo">485</span>          long startTime = EnvironmentEdgeManager.currentTime();<a name="line.485"></a>
-<span class="sourceLineNo">486</span>          List&lt;ACL&gt; nodeACL = checkZk().getACL(path, stat);<a name="line.486"></a>
-<span class="sourceLineNo">487</span>          this.metrics.registerReadOperationLatency(Math.min(EnvironmentEdgeManager.currentTime() - startTime,  1));<a name="line.487"></a>
-<span class="sourceLineNo">488</span>          return nodeACL;<a name="line.488"></a>
-<span class="sourceLineNo">489</span>        } catch (KeeperException e) {<a name="line.489"></a>
-<span class="sourceLineNo">490</span>          this.metrics.registerFailedZKCall();<a name="line.490"></a>
-<span class="sourceLineNo">491</span>          switch (e.code()) {<a name="line.491"></a>
-<span class="sourceLineNo">492</span>            case CONNECTIONLOSS:<a name="line.492"></a>
-<span class="sourceLineNo">493</span>              this.metrics.registerConnectionLossException();<a name="line.493"></a>
-<span class="sourceLineNo">494</span>              retryOrThrow(retryCounter, e, "getAcl");<a name="line.494"></a>
-<span class="sourceLineNo">495</span>              break;<a name="line.495"></a>
-<span class="sourceLineNo">496</span>            case OPERATIONTIMEOUT:<a name="line.496"></a>
-<span class="sourceLineNo">497</span>              this.metrics.registerOperationTimeoutException();<a name="line.497"></a>
-<span class="sourceLineNo">498</span>              retryOrThrow(retryCounter, e, "getAcl");<a name="line.498"></a>
-<span class="sourceLineNo">499</span>              break;<a name="line.499"></a>
-<span class="sourceLineNo">500</span><a name="line.500"></a>
-<span class="sourceLineNo">501</span>            default:<a name="line.501"></a>
-<span class="sourceLineNo">502</span>              throw e;<a name="line.502"></a>
-<span class="sourceLineNo">503</span>          }<a name="line.503"></a>
-<span class="sourceLineNo">504</span>        }<a name="line.504"></a>
-<span class="sourceLineNo">505</span>        retryCounter.sleepUntilNextRetry();<a name="line.505"></a>
-<span class="sourceLineNo">506</span>      }<a name="line.506"></a>
-<span class="sourceLineNo">507</span>    }<a name="line.507"></a>
-<span class="sourceLineNo">508</span>  }<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>   * setAcl is an idempotent operation. Retry before throwing exception<a name="line.511"></a>
-<span class="sourceLineNo">512</span>   * @return list of ACLs<a name="line.512"></a>
-<span class="sourceLineNo">513</span>   */<a name="line.513"></a>
-<span class="sourceLineNo">514</span>  public Stat setAcl(String path, List&lt;ACL&gt; acls, int version)<a name="line.514"></a>
-<span class="sourceLineNo">515</span>  throws KeeperException, InterruptedException {<a name="line.515"></a>
-<span class="sourceLineNo">516</span>    try (TraceScope scope = TraceUtil.createTrace("RecoverableZookeeper.setAcl")) {<a name="line.516"></a>
-<span class="sourceLineNo">517</span>      RetryCounter retryCounter = retryCounterFactory.create();<a name="line.517"></a>
-<span class="sourceLineNo">518</span>      while (true) {<a name="line.518"></a>
-<span class="sourceLineNo">519</span>        try {<a name="line.519"></a>
-<span class="sourceLineNo">520</span>          long startTime = EnvironmentEdgeManager.currentTime();<a name="line.520"></a>
-<span class="sourceLineNo">521</span>          Stat nodeStat = checkZk().setACL(path, acls, version);<a name="line.521"></a>
-<span class="sourceLineNo">522</span>          this.metrics.registerWriteOperationLatency(Math.min(EnvironmentEdgeManager.currentTime() - startTime,  1));<a name="line.522"></a>
-<span class="sourceLineNo">523</span>          return nodeStat;<a name="line.523"></a>
-<span class="sourceLineNo">524</span>        } catch (KeeperException e) {<a name="line.524"></a>
-<span class="sourceLineNo">525</span>          this.metrics.registerFailedZKCall();<a name="line.525"></a>
-<span class="sourceLineNo">526</span>          switch (e.code()) {<a name="line.526"></a>
-<span class="sourceLineNo">527</span>            case CONNECTIONLOSS:<a name="line.527"></a>
-<span class="sourceLineNo">528</span>              this.metrics.registerConnectionLossException();<a name="line.528"></a>
-<span class="sourceLineNo">529</span>              retryOrThrow(retryCounter, e, "setAcl");<a name="line.529"></a>
-<span class="sourceLineNo">530</span>              break;<a name="line.530"></a>
-<span class="sourceLineNo">531</span>            case OPERATIONTIMEOUT:<a name="line.531"></a>
-<span class="sourceLineNo">532</span>              this.metrics.registerOperationTimeoutException();<a name="line.532"></a>
-<span class="sourceLineNo">533</span>              retryOrThrow(retryCounter, e, "setAcl");<a name="line.533"></a>
-<span class="sourceLineNo">534</span>              break;<a name="line.534"></a>
-<span class="sourceLineNo">535</span><a name="line.535"></a>
-<span class="sourceLineNo">536</span>            default:<a name="line.536"></a>
-<span class="sourceLineNo">537</span>              throw e;<a name="line.537"></a>
-<span class="sourceLineNo">538</span>          }<a name="line.538"></a>
-<span class="sourceLineNo">539</span>        }<a name="line.539"></a>
-<span class="sourceLineNo">540</span>        retryCounter.sleepUntilNextRetry();<a name="line.540"></a>
-<span class="sourceLineNo">541</span>      }<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    }<a name="line.542"></a>
-<span class="sourceLineNo">543</span>  }<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>   * &lt;p&gt;<a name="line.546"></a>
-<span class="sourceLineNo">547</span>   * NONSEQUENTIAL create is idempotent operation.<a name="line.547"></a>
-<span class="sourceLineNo">548</span>   * Retry before throwing exceptions.<a name="line.548"></a>
-<span class="sourceLineNo">549</span>   * But this function will not throw the NodeExist exception back to the<a name="line.549"></a>
-<span class="sourceLineNo">550</span>   * application.<a name="line.550"></a>
-<span class="sourceLineNo">551</span>   * &lt;/p&gt;<a name="line.551"></a>
-<span class="sourceLineNo">552</span>   * &lt;p&gt;<a name="line.552"></a>
-<span class="sourceLineNo">553</span>   * But SEQUENTIAL is NOT idempotent operation. It is necessary to add<a name="line.553"></a>
-<span class="sourceLineNo">554</span>   * identifier to the path to verify, whether the previous one is successful<a name="line.554"></a>
-<span class="sourceLineNo">555</span>   * or not.<a name="line.555"></a>
-<span class="sourceLineNo">556</span>   * &lt;/p&gt;<a name="line.556"></a>
-<span class="sourceLineNo">557</span>   *<a name="line.557"></a>
-<span class="sourceLineNo">558</span>   * @return Path<a name="line.558"></a>
-<span class="sourceLineNo">559</span>   */<a name="line.559"></a>
-<span class="sourceLineNo">560</span>  public String create(String path, byte[] data, List&lt;ACL&gt; acl,<a name="line.560"></a>
-<span class="sourceLineNo">561</span>      CreateMode createMode)<a name="line.561"></a>
-<span class="sourceLineNo">562</span>  throws KeeperException, InterruptedException {<a name="line.562"></a>
-<span class="sourceLineNo">563</span>    try (TraceScope scope = TraceUtil.createTrace("RecoverableZookeeper.create")) {<a name="line.563"></a>
-<span class="sourceLineNo">564</span>      byte[] newData = ZKMetadata.appendMetaData(id, data);<a name="line.564"></a>
-<span class="sourceLineNo">565</span>      switch (createMode) {<a name="line.565"></a>
-<span class="sourceLineNo">566</span>        case EPHEMERAL:<a name="line.566"></a>
-<span class="sourceLineNo">567</span>        case PERSISTENT:<a name="line.567"></a>
-<span class="sourceLineNo">568</span>          return createNonSequential(path, newData, acl, createMode);<a name="line.568"></a>
-<span class="sourceLineNo">569</span><a name="line.569"></a>
-<span class="sourceLineNo">570</span>        case EPHEMERAL_SEQUENTIAL:<a name="line.570"></a>
-<span class="sourceLineNo">571</span>        case PERSISTENT_SEQUENTIAL:<a name="line.571"></a>
-<span class="sourceLineNo">572</span>          return createSequential(path, newData, acl, createMode);<a name="line.572"></a>
-<span class="sourceLineNo">573</span><a name="line.573"></a>
-<span class="sourceLineNo">574</span>        default:<a name="line.574"></a>
-<span class="sourceLineNo">575</span>          throw new IllegalArgumentException("Unrecognized CreateMode: " +<a name="line.575"></a>
-<span class="sourceLineNo">576</span>              createMode);<a name="line.576"></a>
-<span class="sourceLineNo">577</span>      }<a name="line.577"></a>
-<span class="sourceLineNo">578</span>    }<a name="line.578"></a>
-<span class="sourceLineNo">579</span>  }<a name="line.579"></a>
-<span class="sourceLineNo">580</span><a name="line.580"></a>
-<span class="sourceLineNo">581</span>  private String createNonSequential(String path, byte[] data, List&lt;ACL&gt; acl,<a name="line.581"></a>
-<span class="sourceLineNo">582</span>      CreateMode createMode) throws KeeperException, InterruptedException {<a name="line.582"></a>
-<span class="sourceLineNo">583</span>    RetryCounter retryCounter = retryCounterFactory.create();<a name="line.583"></a>
-<span class="sourceLineNo">584</span>    boolean isRetry = false; // False for first attempt, true for all retries.<a name="line.584"></a>
-<span class="sourceLineNo">585</span>    long startTime;<a name="line.585"></a>
-<span class="sourceLineNo">586</span>    while (true) {<a name="line.586"></a>
-<span class="sourceLineNo">587</span>      try {<a name="line.587"></a>
-<span class="sourceLineNo">588</span>        startTime = EnvironmentEdgeManager.currentTime();<a name="line.588"></a>
-<span class="sourceLineNo">589</span>        String nodePath = checkZk().create(path, data, acl, createMode);<a name="line.589"></a>
-<span class="sourceLineNo">590</span>        this.metrics.registerWriteOperationLatency(Math.min(EnvironmentEdgeManager.currentTime() - startTime,  1));<a name="line.590"></a>
-<span class="sourceLineNo">591</span>        return nodePath;<a name="line.591"></a>
-<span class="sourceLineNo">592</span>      } catch (KeeperException e) {<a name="line.592"></a>
-<span class="sourceLineNo">593</span>        this.metrics.registerFailedZKCall();<a name="line.593"></a>
-<span class="sourceLineNo">594</span>        switch (e.code()) {<a name="line.594"></a>
-<span class="sourceLineNo">595</span>          case NODEEXISTS:<a name="line.595"></a>
-<span class="sourceLineNo">596</span>            if (isRetry) {<a name="line.596"></a>
-<span class="sourceLineNo">597</span>              // If the connection was lost, there is still a possibility that<a name="line.597"></a>
-<span class="sourceLineNo">598</span>              // we have successfully created the node at our previous attempt,<a name="line.598"></a>
-<span class="sourceLineNo">599</span>              // so we read the node and compare.<a name="line.599"></a>
-<span class="sourceLineNo">600</span>              startTime = EnvironmentEdgeManager.currentTime();<a name="line.600"></a>
-<span class="sourceLineNo">601</span>              byte[] currentData = checkZk().getData(path, false, null);<a name="line.601"></a>
-<span class="sourceLineNo">602</span>              this.metrics.registerReadOperationLatency(Math.min(EnvironmentEdgeManager.currentTime() - startTime,  1));<a name="line.602"></a>
-<span class="sourceLineNo">603</span>              if (currentData != null &amp;&amp;<a name="line.603"></a>
-<span class="sourceLineNo">604</span>                  Bytes.compareTo(currentData, data) == 0) {<a name="line.604"></a>
-<span class="sourceLineNo">605</span>                // We successfully created a non-sequential node<a name="line.605"></a>
-<span class="sourceLineNo">606</span>                return path;<a name="line.606"></a>
-<span class="sourceLineNo">607</span>              }<a name="line.607"></a>
-<span class="sourceLineNo">608</span>              LOG.error("Node " + path + " already exists with " +<a name="line.608"></a>
-<span class="sourceLineNo">609</span>                  Bytes.toStringBinary(currentData) + ", could not write " +<a name="line.609"></a>
-<span class="sourceLineNo">610</span>                  Bytes.toStringBinary(data));<a name="line.610"></a>
-<span class="sourceLineNo">611</span>              throw e;<a name="line.611"></a>
-<span class="sourceLineNo">612</span>            }<a name="line.612"></a>
-<span class="sourceLineNo">613</span>            LOG.debug("Node " + path + " already exists");<a name="line.613"></a>
-<span class="sourceLineNo">614</span>            throw e;<a name="line.614"></a>
-<span class="sourceLineNo">615</span><a name="line.615"></a>
-<span class="sourceLineNo">616</span>          case CONNECTIONLOSS:<a name="line.616"></a>
-<span class="sourceLineNo">617</span>            this.metrics.registerConnectionLossException();<a name="line.617"></a>
-<span class="sourceLineNo">618</span>            retryOrThrow(retryCounter, e, "create");<a name="line.618"></a>
-<span class="sourceLineNo">619</span>            break;<a name="line.619"></a>
-<span class="sourceLineNo">620</span>          case OPERATIONTIMEOUT:<a name="line.620"></a>
-<span class="sourceLineNo">621</span>            this.metrics.registerOperationTimeoutException();<a name="line.621"></a>
-<span class="sourceLineNo">622</span>            retryOrThrow(retryCounter, e, "create");<a name="line.622"></a>
-<span class="sourceLineNo">623</span>            break;<a name="line.623"></a>
-<span class="sourceLineNo">624</span><a name="line.624"></a>
-<span class="sourceLineNo">625</span>          default:<a name="line.625"></a>
-<span class="sourceLineNo">626</span>            throw e;<a name="line.626"></a>
-<span class="sourceLineNo">627</span>        }<a name="line.627"></a>
-<span class="sourceLineNo">628</span>      }<a name="line.628"></a>
-<span class="sourceLineNo">629</span>      retryCounter.sleepUntilNextRetry();<a name="line.629"></a>
-<span class="sourceLineNo">630</span>      isRetry = true;<a name="line.630"></a>
-<span class="sourceLineNo">631</span>    }<a name="line.631"></a>
-<span class="sourceLineNo">632</span>  }<a name="line.632"></a>
+<span class="sourceLineNo">311</span>            default:<a name="line.311"></a>
+<span class="sourceLineNo">312</span>              throw e;<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>        retryCounter.sleepUntilNextRetry();<a name="line.315"></a>
+<span class="sourceLineNo">316</span>      }<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    }<a name="line.317"></a>
+<span class="sourceLineNo">318</span>  }<a name="line.318"></a>
+<span class="sourceLineNo">319</span><a name="line.319"></a>
+<span class="sourceLineNo">320</span>  /**<a name="line.320"></a>
+<span class="sourceLineNo">321</span>   * getChildren is an idempotent operation. Retry before throwing exception<a name="line.321"></a>
+<span class="sourceLineNo">322</span>   * @return List of children znodes<a name="line.322"></a>
+<span class="sourceLineNo">323</span>   */<a name="line.323"></a>
+<span class="sourceLineNo">324</span>  public List&lt;String&gt; getChildren(String path, boolean watch)<a name="line.324"></a>
+<span class="sourceLineNo">325</span>  throws KeeperException, InterruptedException {<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    try (TraceScope scope = TraceUtil.createTrace("RecoverableZookeeper.getChildren")) {<a name="line.326"></a>
+<span class="sourceLineNo">327</span>      RetryCounter retryCounter = retryCounterFactory.create();<a name="line.327"></a>
+<span class="sourceLineNo">328</span>      while (true) {<a name="line.328"></a>
+<span class="sourceLineNo">329</span>        try {<a name="line.329"></a>
+<span class="sourceLineNo">330</span>          long startTime = EnvironmentEdgeManager.currentTime();<a name="line.330"></a>
+<span class="sourceLineNo">331</span>          List&lt;String&gt; children = checkZk().getChildren(path, watch);<a name="line.331"></a>
+<span class="sourceLineNo">332</span>          this.metrics.registerReadOperationLatency(<a name="line.332"></a>
+<span class="sourceLineNo">333</span>                  Math.min(EnvironmentEdgeManager.currentTime() - startTime,  1));<a name="line.333"></a>
+<span class="sourceLineNo">334</span>          return children;<a name="line.334"></a>
+<span class="sourceLineNo">335</span>        } catch (KeeperException e) {<a name="line.335"></a>
+<span class="sourceLineNo">336</span>          this.metrics.registerFailedZKCall();<a name="line.336"></a>
+<span class="sourceLineNo">337</span>          switch (e.code()) {<a name="line.337"></a>
+<span class="sourceLineNo">338</span>            case CONNECTIONLOSS:<a name="line.338"></a>
+<span class="sourceLineNo">339</span>              this.metrics.registerConnectionLossException();<a name="line.339"></a>
+<span class="sourceLineNo">340</span>              retryOrThrow(retryCounter, e, "getChildren");<a name="line.340"></a>
+<span class="sourceLineNo">341</span>              break;<a name="line.341"></a>
+<span class="sourceLineNo">342</span>            case OPERATIONTIMEOUT:<a name="line.342"></a>
+<span class="sourceLineNo">343</span>              this.metrics.registerOperationTimeoutException();<a name="line.343"></a>
+<span class="sourceLineNo">344</span>              retryOrThrow(retryCounter, e, "getChildren");<a name="line.344"></a>
+<span class="sourceLineNo">345</span>              break;<a name="line.345"></a>
+<span class="sourceLineNo">346</span><a name="line.346"></a>
+<span class="sourceLineNo">347</span>            default:<a name="line.347"></a>
+<span class="sourceLineNo">348</span>              throw e;<a name="line.348"></a>
+<span class="sourceLineNo">349</span>          }<a name="line.349"></a>
+<span class="sourceLineNo">350</span>        }<a name="line.350"></a>
+<span class="sourceLineNo">351</span>        retryCounter.sleepUntilNextRetry();<a name="line.351"></a>
+<span class="sourceLineNo">352</span>      }<a name="line.352"></a>
+<span class="sourceLineNo">353</span>    }<a name="line.353"></a>
+<span class="sourceLineNo">354</span>  }<a name="line.354"></a>
+<span class="sourceLineNo">355</span><a name="line.355"></a>
+<span class="sourceLineNo">356</span>  /**<a name="line.356"></a>
+<span class="sourceLineNo">357</span>   * getData is an idempotent operation. Retry before throwing exception<a name="line.357"></a>
+<span class="sourceLineNo">358</span>   * @return Data<a name="line.358"></a>
+<span class="sourceLineNo">359</span>   */<a name="line.359"></a>
+<span class="sourceLineNo">360</span>  public byte[] getData(String path, Watcher watcher, Stat stat)<a name="line.360"></a>
+<span class="sourceLineNo">361</span>  throws KeeperException, InterruptedException {<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    try (TraceScope scope = TraceUtil.createTrace("RecoverableZookeeper.getData")) {<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      RetryCounter retryCounter = retryCounterFactory.create();<a name="line.363"></a>
+<span class="sourceLineNo">364</span>      while (true) {<a name="line.364"></a>
+<span class="sourceLineNo">365</span>        try {<a name="line.365"></a>
+<span class="sourceLineNo">366</span>          long startTime = EnvironmentEdgeManager.currentTime();<a name="line.366"></a>
+<span class="sourceLineNo">367</span>          byte[] revData = checkZk().getData(path, watcher, stat);<a name="line.367"></a>
+<span class="sourceLineNo">368</span>          this.metrics.registerReadOperationLatency(<a name="line.368"></a>
+<span class="sourceLineNo">369</span>                  Math.min(EnvironmentEdgeManager.currentTime() - startTime,  1));<a name="line.369"></a>
+<span class="sourceLineNo">370</span>          return ZKMetadata.removeMetaData(revData);<a name="line.370"></a>
+<span class="sourceLineNo">371</span>        } catch (KeeperException e) {<a name="line.371"></a>
+<span class="sourceLineNo">372</span>          this.metrics.registerFailedZKCall();<a name="line.372"></a>
+<span class="sourceLineNo">373</span>          switch (e.code()) {<a name="line.373"></a>
+<span class="sourceLineNo">374</span>            case CONNECTIONLOSS:<a name="line.374"></a>
+<span class="sourceLineNo">375</span>              this.metrics.registerConnectionLossException();<a name="line.375"></a>
+<span class="sourceLineNo">376</span>              retryOrThrow(retryCounter, e, "getData");<a name="line.376"></a>
+<span class="sourceLineNo">377</span>              break;<a name="line.377"></a>
+<span class="sourceLineNo">378</span>            case OPERATIONTIMEOUT:<a name="line.378"></a>
+<span class="sourceLineNo">379</span>              this.metrics.registerOperationTimeoutException();<a name="line.379"></a>
+<span class="sourceLineNo">380</span>              retryOrThrow(retryCounter, e, "getData");<a name="line.380"></a>
+<span class="sourceLineNo">381</span>              break;<a name="line.381"></a>
+<span class="sourceLineNo">382</span><a name="line.382"></a>
+<span class="sourceLineNo">383</span>            default:<a name="line.383"></a>
+<span class="sourceLineNo">384</span>              throw e;<a name="line.384"></a>
+<span class="sourceLineNo">385</span>          }<a name="line.385"></a>
+<span class="sourceLineNo">386</span>        }<a name="line.386"></a>
+<span class="sourceLineNo">387</span>        retryCounter.sleepUntilNextRetry();<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>  /**<a name="line.392"></a>
+<span class="sourceLineNo">393</span>   * getData is an idempotent operation. Retry before throwing exception<a name="line.393"></a>
+<span class="sourceLineNo">394</span>   * @return Data<a name="line.394"></a>
+<span class="sourceLineNo">395</span>   */<a name="line.395"></a>
+<span class="sourceLineNo">396</span>  public byte[] getData(String path, boolean watch, Stat stat)<a name="line.396"></a>
+<span class="sourceLineNo">397</span>  throws KeeperException, InterruptedException {<a name="line.397"></a>
+<span class="sourceLineNo">398</span>    try (TraceScope scope = TraceUtil.createTrace("RecoverableZookeeper.getData")) {<a name="line.398"></a>
+<span class="sourceLineNo">399</span>      RetryCounter retryCounter = retryCounterFactory.create();<a name="line.399"></a>
+<span class="sourceLineNo">400</span>      while (true) {<a name="line.400"></a>
+<span class="sourceLineNo">401</span>        try {<a name="line.401"></a>
+<span class="sourceLineNo">402</span>          long startTime = EnvironmentEdgeManager.currentTime();<a name="line.402"></a>
+<span class="sourceLineNo">403</span>          byte[] revData = checkZk().getData(path, watch, stat);<a name="line.403"></a>
+<span class="sourceLineNo">404</span>          this.metrics.registerReadOperationLatency(<a name="line.404"></a>
+<span class="sourceLineNo">405</span>                  Math.min(EnvironmentEdgeManager.currentTime() - startTime,  1));<a name="line.405"></a>
+<span class="sourceLineNo">406</span>          return ZKMetadata.removeMetaData(revData);<a name="line.406"></a>
+<span class="sourceLineNo">407</span>        } catch (KeeperException e) {<a name="line.407"></a>
+<span class="sourceLineNo">408</span>          this.metrics.registerFailedZKCall();<a name="line.408"></a>
+<span class="sourceLineNo">409</span>          switch (e.code()) {<a name="line.409"></a>
+<span class="sourceLineNo">410</span>            case CONNECTIONLOSS:<a name="line.410"></a>
+<span class="sourceLineNo">411</span>              this.metrics.registerConnectionLossException();<a name="line.411"></a>
+<span class="sourceLineNo">412</span>              retryOrThrow(retryCounter, e, "getData");<a name="line.412"></a>
+<span class="sourceLineNo">413</span>              break;<a name="line.413"></a>
+<span class="sourceLineNo">414</span>            case OPERATIONTIMEOUT:<a name="line.414"></a>
+<span class="sourceLineNo">415</span>              this.metrics.registerOperationTimeoutException();<a name="line.415"></a>
+<span class="sourceLineNo">416</span>              retryOrThrow(retryCounter, e, "getData");<a name="line.416"></a>
+<span class="sourceLineNo">417</span>              break;<a name="line.417"></a>
+<span class="sourceLineNo">418</span><a name="line.418"></a>
+<span class="sourceLineNo">419</span>            default:<a name="line.419"></a>
+<span class="sourceLineNo">420</span>              throw 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>        retryCounter.sleepUntilNextRetry();<a name="line.423"></a>
+<span class="sourceLineNo">424</span>      }<a name="line.424"></a>
+<span class="sourceLineNo">425</span>    }<a name="line.425"></a>
+<span class="sourceLineNo">426</span>  }<a name="line.426"></a>
+<span class="sourceLineNo">427</span><a name="line.427"></a>
+<span class="sourceLineNo">428</span>  /**<a name="line.428"></a>
+<span class="sourceLineNo">429</span>   * setData is NOT an idempotent operation. Retry may cause BadVersion Exception<a name="line.429"></a>
+<span class="sourceLineNo">430</span>   * Adding an identifier field into the data to check whether<a name="line.430"></a>
+<span class="sourceLineNo">431</span>   * badversion is caused by the result of previous correctly setData<a name="line.431"></a>
+<span class="sourceLineNo">432</span>   * @return Stat instance<a name="line.432"></a>
+<span class="sourceLineNo">433</span>   */<a name="line.433"></a>
+<span class="sourceLineNo">434</span>  public Stat setData(String path, byte[] data, int version)<a name="line.434"></a>
+<span class="sourceLineNo">435</span>  throws KeeperException, InterruptedException {<a name="line.435"></a>
+<span class="sourceLineNo">436</span>    try (TraceScope scope = TraceUtil.createTrace("RecoverableZookeeper.setData")) {<a name="line.436"></a>
+<span class="sourceLineNo">437</span>      RetryCounter retryCounter = retryCounterFactory.create();<a name="line.437"></a>
+<span class="sourceLineNo">438</span>      byte[] newData = ZKMetadata.appendMetaData(id, data);<a name="line.438"></a>
+<span class="sourceLineNo">439</span>      boolean isRetry = false;<a name="line.439"></a>
+<span class="sourceLineNo">440</span>      long startTime;<a name="line.440"></a>
+<span class="sourceLineNo">441</span>      while (true) {<a name="line.441"></a>
+<span class="sourceLineNo">442</span>        try {<a name="line.442"></a>
+<span class="sourceLineNo">443</span>          startTime = EnvironmentEdgeManager.currentTime();<a name="line.443"></a>
+<span class="sourceLineNo">444</span>          Stat nodeStat = checkZk().setData(path, newData, version);<a name="line.444"></a>
+<span class="sourceLineNo">445</span>          this.metrics.registerWriteOperationLatency(<a name="line.445"></a>
+<span class="sourceLineNo">446</span>                  Math.min(EnvironmentEdgeManager.currentTime() - startTime,  1));<a name="line.446"></a>
+<span class="sourceLineNo">447</span>          return nodeStat;<a name="line.447"></a>
+<span class="sourceLineNo">448</span>        } catch (KeeperException e) {<a name="line.448"></a>
+<span class="sourceLineNo">449</span>          this.metrics.registerFailedZKCall();<a name="line.449"></a>
+<span class="sourceLineNo">450</span>          switch (e.code()) {<a name="line.450"></a>
+<span class="sourceLineNo">451</span>            case CONNECTIONLOSS:<a name="line.451"></a>
+<span class="sourceLineNo">452</span>              this.metrics.registerConnectionLossException();<a name="line.452"></a>
+<span class="sourceLineNo">453</span>              retryOrThrow(retryCounter, e, "setData");<a name="line.453"></a>
+<span class="sourceLineNo">454</span>              break;<a name="line.454"></a>
+<span class="sourceLineNo">455</span>            case OPERATIONTIMEOUT:<a name="line.455"></a>
+<span class="sourceLineNo">456</span>              this.metrics.registerOperationTimeoutException();<a name="line.456"></a>
+<span class="sourceLineNo">457</span>              retryOrThrow(retryCounter, e, "setData");<a name="line.457"></a>
+<span class="sourceLineNo">458</span>              break;<a name="line.458"></a>
+<span class="sourceLineNo">459</span>            case BADVERSION:<a name="line.459"></a>
+<span class="sourceLineNo">460</span>              if (isRetry) {<a name="line.460"></a>
+<span class="sourceLineNo">461</span>                // try to verify whether the previous setData success or not<a name="line.461"></a>
+<span class="sourceLineNo">462</span>                try{<a name="line.462"></a>
+<span class="sourceLineNo">463</span>                  Stat stat = new Stat();<a name="line.463"></a>
+<span class="sourceLineNo">464</span>                  startTime = EnvironmentEdgeManager.currentTime();<a name="line.464"></a>
+<span class="sourceLineNo">465</span>                  byte[] revData = checkZk().getData(path, false, stat);<a name="line.465"></a>
+<span class="sourceLineNo">466</span>                  this.metrics.registerReadOperationLatency(<a name="line.466"></a>
+<span class="sourceLineNo">467</span>                          Math.min(EnvironmentEdgeManager.currentTime() - startTime,  1));<a name="line.467"></a>
+<span class="sourceLineNo">468</span>                  if(Bytes.compareTo(revData, newData) == 0) {<a name="line.468"></a>
+<span class="sourceLineNo">469</span>                    // the bad version is caused by previous successful setData<a name="line.469"></a>
+<span class="sourceLineNo">470</span>                    return stat;<a name="line.470"></a>
+<span class="sourceLineNo">471</span>                  }<a name="line.471"></a>
+<span class="sourceLineNo">472</span>                } catch(KeeperException keeperException){<a name="line.472"></a>
+<span class="sourceLineNo">473</span>                  this.metrics.registerFailedZKCall();<a name="line.473"></a>
+<span class="sourceLineNo">474</span>                  // the ZK is not reliable at this moment. just throwing exception<a name="line.474"></a>
+<span class="sourceLineNo">475</span>                  throw keeperExc

<TRUNCATED>

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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/checkstyle.rss
----------------------------------------------------------------------
diff --git a/checkstyle.rss b/checkstyle.rss
index a58e294..0957a04 100644
--- a/checkstyle.rss
+++ b/checkstyle.rss
@@ -26,7 +26,7 @@ under the License.
     <copyright>&#169;2007 - 2017 The Apache Software Foundation</copyright>
     <item>
       <title>File: 3453,
-             Errors: 19823,
+             Errors: 19574,
              Warnings: 0,
              Infos: 0
       </title>
@@ -111,7 +111,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  56
+                  0
                 </td>
               </tr>
                           <tr>
@@ -1371,7 +1371,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  1
+                  0
                 </td>
               </tr>
                           <tr>
@@ -2141,7 +2141,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  3
+                  0
                 </td>
               </tr>
                           <tr>
@@ -3051,7 +3051,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  7
+                  0
                 </td>
               </tr>
                           <tr>
@@ -4843,7 +4843,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  24
+                  0
                 </td>
               </tr>
                           <tr>
@@ -5501,7 +5501,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  1
+                  0
                 </td>
               </tr>
                           <tr>
@@ -6929,7 +6929,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  1
+                  0
                 </td>
               </tr>
                           <tr>
@@ -12641,7 +12641,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  23
+                  5
                 </td>
               </tr>
                           <tr>
@@ -12949,7 +12949,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  9
+                  3
                 </td>
               </tr>
                           <tr>
@@ -19697,7 +19697,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  3
+                  0
                 </td>
               </tr>
                           <tr>
@@ -22987,7 +22987,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  3
+                  0
                 </td>
               </tr>
                           <tr>
@@ -26977,7 +26977,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  61
+                  4
                 </td>
               </tr>
                           <tr>
@@ -27299,7 +27299,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  4
+                  0
                 </td>
               </tr>
                           <tr>
@@ -31751,7 +31751,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  13
+                  0
                 </td>
               </tr>
                           <tr>
@@ -32717,7 +32717,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  15
+                  0
                 </td>
               </tr>
                           <tr>
@@ -37393,7 +37393,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  23
+                  0
                 </td>
               </tr>
                           <tr>
@@ -37519,7 +37519,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  6
+                  0
                 </td>
               </tr>
                           <tr>
@@ -46815,7 +46815,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  5
+                  0
                 </td>
               </tr>
                           <tr>
@@ -47235,7 +47235,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  1
+                  0
                 </td>
               </tr>
                           <tr>
@@ -47641,7 +47641,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  2
+                  0
                 </td>
               </tr>
                           <tr>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/coc.html
----------------------------------------------------------------------
diff --git a/coc.html b/coc.html
index 51274a4..6b7a63d 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="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Code of Conduct Policy
@@ -380,7 +380,7 @@ email to <a class="externalLink" href="mailto:private@hbase.apache.org">the priv
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/dependencies.html
----------------------------------------------------------------------
diff --git a/dependencies.html b/dependencies.html
index 91e56a2..9ec5139 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="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Dependencies</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -445,7 +445,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/dependency-convergence.html b/dependency-convergence.html
index 5192a15..03bf5ec 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="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <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" />
@@ -999,7 +999,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/dependency-info.html
----------------------------------------------------------------------
diff --git a/dependency-info.html b/dependency-info.html
index bbc46ab..9c8585c 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="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Dependency Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -318,7 +318,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/dependency-management.html
----------------------------------------------------------------------
diff --git a/dependency-management.html b/dependency-management.html
index ef38350..3c22dea 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="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Dependency Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -980,7 +980,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/devapidocs/constant-values.html
----------------------------------------------------------------------
diff --git a/devapidocs/constant-values.html b/devapidocs/constant-values.html
index 77ec1a3..42bb705 100644
--- a/devapidocs/constant-values.html
+++ b/devapidocs/constant-values.html
@@ -3726,21 +3726,21 @@
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/Version.html#date">date</a></code></td>
-<td class="colLast"><code>"Sat Dec 16 14:41:51 UTC 2017"</code></td>
+<td class="colLast"><code>"Sun Dec 17 14:41:52 UTC 2017"</code></td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.Version.revision">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/Version.html#revision">revision</a></code></td>
-<td class="colLast"><code>"979767824d37df0e05002fa76402ff2b9e534d50"</code></td>
+<td class="colLast"><code>"26b69dc45bf3c953905d5ed279e3f691ea802157"</code></td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.Version.srcChecksum">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/Version.html#srcChecksum">srcChecksum</a></code></td>
-<td class="colLast"><code>"134238446ca4bc95900183b2706bfdbc"</code></td>
+<td class="colLast"><code>"17b2bd885a9f8f4e728cc4b3cea18074"</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/48bd3915/devapidocs/index-all.html
----------------------------------------------------------------------
diff --git a/devapidocs/index-all.html b/devapidocs/index-all.html
index 70cf4f6..1c22b50 100644
--- a/devapidocs/index-all.html
+++ b/devapidocs/index-all.html
@@ -40888,13 +40888,19 @@
 <div class="block">Gets the meta region location, if available.</div>
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html#getMetaRegions-org.apache.hadoop.hbase.zookeeper.ZKWatcher-">getMetaRegions(ZKWatcher)</a></span> - Method in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html" title="class in org.apache.hadoop.hbase.zookeeper">MetaTableLocator</a></dt>
-<dd>&nbsp;</dd>
+<dd>
+<div class="block">Gets the meta regions for the given path with the default replica ID.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html#getMetaRegions-org.apache.hadoop.hbase.zookeeper.ZKWatcher-int-">getMetaRegions(ZKWatcher, int)</a></span> - Method in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html" title="class in org.apache.hadoop.hbase.zookeeper">MetaTableLocator</a></dt>
-<dd>&nbsp;</dd>
+<dd>
+<div class="block">Gets the meta regions for the given path and replica ID.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html#getMetaRegionsAndLocations-org.apache.hadoop.hbase.zookeeper.ZKWatcher-">getMetaRegionsAndLocations(ZKWatcher)</a></span> - Method in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html" title="class in org.apache.hadoop.hbase.zookeeper">MetaTableLocator</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html#getMetaRegionsAndLocations-org.apache.hadoop.hbase.zookeeper.ZKWatcher-int-">getMetaRegionsAndLocations(ZKWatcher, int)</a></span> - Method in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html" title="class in org.apache.hadoop.hbase.zookeeper">MetaTableLocator</a></dt>
-<dd>&nbsp;</dd>
+<dd>
+<div class="block">Gets the meta regions and their locations for the given path and replica ID.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/HBaseFsck.html#getMetaRegionServerName-int-">getMetaRegionServerName(int)</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/HBaseFsck.html" title="class in org.apache.hadoop.hbase.util">HBaseFsck</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#getMetaRegionSet--">getMetaRegionSet()</a></span> - Method in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignmentManager</a></dt>
@@ -40925,8 +40931,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html#getMetaServerConnection-org.apache.hadoop.hbase.client.ClusterConnection-org.apache.hadoop.hbase.zookeeper.ZKWatcher-long-int-">getMetaServerConnection(ClusterConnection, ZKWatcher, long, int)</a></span> - Method in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html" title="class in org.apache.hadoop.hbase.zookeeper">MetaTableLocator</a></dt>
 <dd>
-<div class="block">Gets a connection to the server hosting meta, as reported by ZooKeeper,
- waiting up to the specified timeout for availability.</div>
+<div class="block">Gets a connection to the server hosting meta, as reported by ZooKeeper, waiting up to the
+ specified timeout for availability.</div>
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/HRegionServer.html#getMetaTableLocator--">getMetaTableLocator()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a></dt>
 <dd>&nbsp;</dd>
@@ -60905,7 +60911,9 @@
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/ZKSplitLog.html#isRescanNode-java.lang.String-">isRescanNode(String)</a></span> - Static method in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/ZKSplitLog.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKSplitLog</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/ZKSplitLog.html#isRescanNode-org.apache.hadoop.hbase.zookeeper.ZKWatcher-java.lang.String-">isRescanNode(ZKWatcher, String)</a></span> - Static method in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/ZKSplitLog.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKSplitLog</a></dt>
-<dd>&nbsp;</dd>
+<dd>
+<div class="block">Checks if the given path represents a rescan node.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/hfile/HFile.html#isReservedFileInfoKey-byte:A-">isReservedFileInfoKey(byte[])</a></span> - Static method in class org.apache.hadoop.hbase.io.hfile.<a href="org/apache/hadoop/hbase/io/hfile/HFile.html" title="class in org.apache.hadoop.hbase.io.hfile">HFile</a></dt>
 <dd>
 <div class="block">Return true if the given file info key is reserved for internal use.</div>
@@ -62682,7 +62690,7 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#killOneBackupZooKeeperServer--">killOneBackupZooKeeperServer()</a></span> - Method in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html" title="class in org.apache.hadoop.hbase.zookeeper">MiniZooKeeperCluster</a></dt>
 <dd>
-<div class="block">Kill one back up ZK servers</div>
+<div class="block">Kill one back up ZK servers.</div>
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#killRegionServer-org.apache.hadoop.hbase.ServerName-">killRegionServer(ServerName)</a></span> - Method in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignmentManager</a></dt>
 <dd>&nbsp;</dd>
@@ -95906,7 +95914,7 @@ service.</div>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/LoadBalancerTracker.html#setBalancerOn-boolean-">setBalancerOn(boolean)</a></span> - Method in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/LoadBalancerTracker.html" title="class in org.apache.hadoop.hbase.zookeeper">LoadBalancerTracker</a></dt>
 <dd>
-<div class="block">Set the balancer on/off</div>
+<div class="block">Set the balancer on/off.</div>
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/Admin.html#setBalancerRunning-boolean-boolean-">setBalancerRunning(boolean, boolean)</a></span> - Method in interface org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/Admin.html" title="interface in org.apache.hadoop.hbase.client">Admin</a></dt>
 <dd>
@@ -97804,8 +97812,7 @@ service.</div>
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html#setMetaLocation-org.apache.hadoop.hbase.zookeeper.ZKWatcher-org.apache.hadoop.hbase.ServerName-int-org.apache.hadoop.hbase.master.RegionState.State-">setMetaLocation(ZKWatcher, ServerName, int, RegionState.State)</a></span> - Static method in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html" title="class in org.apache.hadoop.hbase.zookeeper">MetaTableLocator</a></dt>
 <dd>
-<div class="block">Sets the location of <code>hbase:meta</code> in ZooKeeper to the
- specified server address.</div>
+<div class="block">Sets the location of <code>hbase:meta</code> in ZooKeeper to the specified server address.</div>
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/JvmPauseMonitor.html#setMetricsSource-org.apache.hadoop.hbase.metrics.JvmPauseMonitorSource-">setMetricsSource(JvmPauseMonitorSource)</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/JvmPauseMonitor.html" title="class in org.apache.hadoop.hbase.util">JvmPauseMonitor</a></dt>
 <dd>&nbsp;</dd>
@@ -115680,8 +115687,8 @@ the order they are declared.</div>
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html#waitMetaRegionLocation-org.apache.hadoop.hbase.zookeeper.ZKWatcher-int-long-">waitMetaRegionLocation(ZKWatcher, int, long)</a></span> - Method in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html" title="class in org.apache.hadoop.hbase.zookeeper">MetaTableLocator</a></dt>
 <dd>
-<div class="block">Gets the meta region location, if available, and waits for up to the
- specified timeout if not immediately available.</div>
+<div class="block">Gets the meta region location, if available, and waits for up to the specified timeout if not
+ immediately available.</div>
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html#waitMetaRegionLocation-org.apache.hadoop.hbase.zookeeper.ZKWatcher-">waitMetaRegionLocation(ZKWatcher)</a></span> - Method in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html" title="class in org.apache.hadoop.hbase.zookeeper">MetaTableLocator</a></dt>
 <dd>
@@ -118142,7 +118149,8 @@ the order they are declared.</div>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/zookeeper/ZKSplitLog.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">ZKSplitLog</span></a> - Class in <a href="org/apache/hadoop/hbase/zookeeper/package-summary.html">org.apache.hadoop.hbase.zookeeper</a></dt>
 <dd>
-<div class="block">Common methods and attributes used by SplitLogManager and SplitLogWorker running distributed splitting of WAL logs.</div>
+<div class="block">Common methods and attributes used by SplitLogManager and SplitLogWorker running distributed
+ splitting of WAL logs.</div>
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/ZKSplitLog.html#ZKSplitLog--">ZKSplitLog()</a></span> - Constructor for class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/ZKSplitLog.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKSplitLog</a></dt>
 <dd>&nbsp;</dd>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/devapidocs/org/apache/hadoop/hbase/class-use/NotAllMetaRegionsOnlineException.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/class-use/NotAllMetaRegionsOnlineException.html b/devapidocs/org/apache/hadoop/hbase/class-use/NotAllMetaRegionsOnlineException.html
index 9b31d9e..ebb8fff 100644
--- a/devapidocs/org/apache/hadoop/hbase/class-use/NotAllMetaRegionsOnlineException.html
+++ b/devapidocs/org/apache/hadoop/hbase/class-use/NotAllMetaRegionsOnlineException.html
@@ -130,25 +130,15 @@
 </tr>
 <tbody>
 <tr class="altColor">
-<td class="colFirst"><code>private org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.AdminService.BlockingInterface</code></td>
-<td class="colLast"><span class="typeNameLabel">MetaTableLocator.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html#getMetaServerConnection-org.apache.hadoop.hbase.client.ClusterConnection-org.apache.hadoop.hbase.zookeeper.ZKWatcher-long-int-">getMetaServerConnection</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/ClusterConnection.html" title="interface in org.apache.hadoop.hbase.client">ClusterConnection</a>&nbsp;connection,
-                       <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
-                       long&nbsp;timeout,
-                       int&nbsp;replicaId)</code>
-<div class="block">Gets a connection to the server hosting meta, as reported by ZooKeeper,
- waiting up to the specified timeout for availability.</div>
-</td>
-</tr>
-<tr 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"><span class="typeNameLabel">MetaTableLocator.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html#waitMetaRegionLocation-org.apache.hadoop.hbase.zookeeper.ZKWatcher-int-long-">waitMetaRegionLocation</a></span>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                       int&nbsp;replicaId,
                       long&nbsp;timeout)</code>
-<div class="block">Gets the meta region location, if available, and waits for up to the
- specified timeout if not immediately available.</div>
+<div class="block">Gets the meta region location, if available, and waits for up to the specified timeout if not
+ immediately available.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr 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"><span class="typeNameLabel">MetaTableLocator.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html#waitMetaRegionLocation-org.apache.hadoop.hbase.zookeeper.ZKWatcher-long-">waitMetaRegionLocation</a></span>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                       long&nbsp;timeout)</code>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/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 296b2c7..c60b889 100644
--- a/devapidocs/org/apache/hadoop/hbase/class-use/ServerName.html
+++ b/devapidocs/org/apache/hadoop/hbase/class-use/ServerName.html
@@ -6189,8 +6189,8 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 <td class="colLast"><span class="typeNameLabel">MetaTableLocator.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html#waitMetaRegionLocation-org.apache.hadoop.hbase.zookeeper.ZKWatcher-int-long-">waitMetaRegionLocation</a></span>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                       int&nbsp;replicaId,
                       long&nbsp;timeout)</code>
-<div class="block">Gets the meta region location, if available, and waits for up to the
- specified timeout if not immediately available.</div>
+<div class="block">Gets the meta region location, if available, and waits for up to the specified timeout if not
+ immediately available.</div>
 </td>
 </tr>
 <tr class="rowColor">
@@ -6225,7 +6225,9 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 <tr class="altColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/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;&gt;</code></td>
 <td class="colLast"><span class="typeNameLabel">MetaTableLocator.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html#getMetaRegionsAndLocations-org.apache.hadoop.hbase.zookeeper.ZKWatcher-int-">getMetaRegionsAndLocations</a></span>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
-                          int&nbsp;replicaId)</code>&nbsp;</td>
+                          int&nbsp;replicaId)</code>
+<div class="block">Gets the meta regions and their locations for the given path and replica ID.</div>
+</td>
 </tr>
 </tbody>
 </table>
@@ -6264,8 +6266,7 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
                <a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
                int&nbsp;replicaId,
                <a href="../../../../../org/apache/hadoop/hbase/master/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master">RegionState.State</a>&nbsp;state)</code>
-<div class="block">Sets the location of <code>hbase:meta</code> in ZooKeeper to the
- specified server address.</div>
+<div class="block">Sets the location of <code>hbase:meta</code> in ZooKeeper to the specified server address.</div>
 </td>
 </tr>
 <tr class="altColor">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/devapidocs/org/apache/hadoop/hbase/client/class-use/ClusterConnection.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/client/class-use/ClusterConnection.html b/devapidocs/org/apache/hadoop/hbase/client/class-use/ClusterConnection.html
index f0f0790..fca9f4e 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/class-use/ClusterConnection.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/class-use/ClusterConnection.html
@@ -888,8 +888,8 @@
                        <a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                        long&nbsp;timeout,
                        int&nbsp;replicaId)</code>
-<div class="block">Gets a connection to the server hosting meta, as reported by ZooKeeper,
- waiting up to the specified timeout for availability.</div>
+<div class="block">Gets a connection to the server hosting meta, as reported by ZooKeeper, waiting up to the
+ specified timeout for availability.</div>
 </td>
 </tr>
 <tr class="altColor">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/devapidocs/org/apache/hadoop/hbase/client/class-use/RegionInfo.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/client/class-use/RegionInfo.html b/devapidocs/org/apache/hadoop/hbase/client/class-use/RegionInfo.html
index 7553522..e611423 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/class-use/RegionInfo.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/class-use/RegionInfo.html
@@ -6751,12 +6751,16 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&gt;</code></td>
-<td class="colLast"><span class="typeNameLabel">MetaTableLocator.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html#getMetaRegions-org.apache.hadoop.hbase.zookeeper.ZKWatcher-">getMetaRegions</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw)</code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">MetaTableLocator.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html#getMetaRegions-org.apache.hadoop.hbase.zookeeper.ZKWatcher-">getMetaRegions</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw)</code>
+<div class="block">Gets the meta regions for the given path with the default replica ID.</div>
+</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&gt;</code></td>
 <td class="colLast"><span class="typeNameLabel">MetaTableLocator.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html#getMetaRegions-org.apache.hadoop.hbase.zookeeper.ZKWatcher-int-">getMetaRegions</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
-              int&nbsp;replicaId)</code>&nbsp;</td>
+              int&nbsp;replicaId)</code>
+<div class="block">Gets the meta regions for the given path and replica ID.</div>
+</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/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;&gt;</code></td>
@@ -6765,7 +6769,9 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 <tr class="altColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/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;&gt;</code></td>
 <td class="colLast"><span class="typeNameLabel">MetaTableLocator.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html#getMetaRegionsAndLocations-org.apache.hadoop.hbase.zookeeper.ZKWatcher-int-">getMetaRegionsAndLocations</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
-                          int&nbsp;replicaId)</code>&nbsp;</td>
+                          int&nbsp;replicaId)</code>
+<div class="block">Gets the meta regions and their locations for the given path and replica ID.</div>
+</td>
 </tr>
 </tbody>
 </table>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/devapidocs/org/apache/hadoop/hbase/master/class-use/RegionState.State.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/class-use/RegionState.State.html b/devapidocs/org/apache/hadoop/hbase/master/class-use/RegionState.State.html
index 20b8381..2b07ab3 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/class-use/RegionState.State.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/class-use/RegionState.State.html
@@ -397,8 +397,7 @@ the order they are declared.</div>
                <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
                int&nbsp;replicaId,
                <a href="../../../../../../org/apache/hadoop/hbase/master/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master">RegionState.State</a>&nbsp;state)</code>
-<div class="block">Sets the location of <code>hbase:meta</code> in ZooKeeper to the
- specified server address.</div>
+<div class="block">Sets the location of <code>hbase:meta</code> in ZooKeeper to the specified server address.</div>
 </td>
 </tr>
 <tr class="rowColor">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/devapidocs/org/apache/hadoop/hbase/master/cleaner/LogCleaner.CleanerContext.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/cleaner/LogCleaner.CleanerContext.html b/devapidocs/org/apache/hadoop/hbase/master/cleaner/LogCleaner.CleanerContext.html
index ca12be2..5f9ef0e 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/cleaner/LogCleaner.CleanerContext.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/cleaner/LogCleaner.CleanerContext.html
@@ -113,7 +113,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private static final class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/cleaner/LogCleaner.html#line.179">LogCleaner.CleanerContext</a>
+<pre>private static final class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/cleaner/LogCleaner.html#line.181">LogCleaner.CleanerContext</a>
 extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 </li>
 </ul>
@@ -227,7 +227,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>MAX_WAIT</h4>
-<pre>static final&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/cleaner/LogCleaner.CleanerContext.html#line.181">MAX_WAIT</a></pre>
+<pre>static final&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/cleaner/LogCleaner.CleanerContext.html#line.183">MAX_WAIT</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../../constant-values.html#org.apache.hadoop.hbase.master.cleaner.LogCleaner.CleanerContext.MAX_WAIT">Constant Field Values</a></dd>
@@ -240,7 +240,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>target</h4>
-<pre>final&nbsp;org.apache.hadoop.fs.FileStatus <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/cleaner/LogCleaner.CleanerContext.html#line.183">target</a></pre>
+<pre>final&nbsp;org.apache.hadoop.fs.FileStatus <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/cleaner/LogCleaner.CleanerContext.html#line.185">target</a></pre>
 </li>
 </ul>
 <a name="result">
@@ -249,7 +249,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>result</h4>
-<pre>volatile&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/cleaner/LogCleaner.CleanerContext.html#line.184">result</a></pre>
+<pre>volatile&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/cleaner/LogCleaner.CleanerContext.html#line.186">result</a></pre>
 </li>
 </ul>
 <a name="setFromCleaner">
@@ -258,7 +258,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>setFromCleaner</h4>
-<pre>volatile&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/cleaner/LogCleaner.CleanerContext.html#line.185">setFromCleaner</a></pre>
+<pre>volatile&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/cleaner/LogCleaner.CleanerContext.html#line.187">setFromCleaner</a></pre>
 </li>
 </ul>
 </li>
@@ -275,7 +275,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>CleanerContext</h4>
-<pre>private&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/cleaner/LogCleaner.CleanerContext.html#line.191">CleanerContext</a>(org.apache.hadoop.fs.FileStatus&nbsp;status)</pre>
+<pre>private&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/cleaner/LogCleaner.CleanerContext.html#line.193">CleanerContext</a>(org.apache.hadoop.fs.FileStatus&nbsp;status)</pre>
 </li>
 </ul>
 </li>
@@ -292,7 +292,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>createCleanerContext</h4>
-<pre>static&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/cleaner/LogCleaner.CleanerContext.html" title="class in org.apache.hadoop.hbase.master.cleaner">LogCleaner.CleanerContext</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/cleaner/LogCleaner.CleanerContext.html#line.187">createCleanerContext</a>(org.apache.hadoop.fs.FileStatus&nbsp;status)</pre>
+<pre>static&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/cleaner/LogCleaner.CleanerContext.html" title="class in org.apache.hadoop.hbase.master.cleaner">LogCleaner.CleanerContext</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/cleaner/LogCleaner.CleanerContext.html#line.189">createCleanerContext</a>(org.apache.hadoop.fs.FileStatus&nbsp;status)</pre>
 </li>
 </ul>
 <a name="setResult-boolean-">
@@ -301,7 +301,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>setResult</h4>
-<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/cleaner/LogCleaner.CleanerContext.html#line.196">setResult</a>(boolean&nbsp;res)</pre>
+<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/cleaner/LogCleaner.CleanerContext.html#line.198">setResult</a>(boolean&nbsp;res)</pre>
 </li>
 </ul>
 <a name="getResult-long-">
@@ -310,7 +310,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getResult</h4>
-<pre>boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/cleaner/LogCleaner.CleanerContext.html#line.202">getResult</a>(long&nbsp;waitIfNotFinished)</pre>
+<pre>boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/cleaner/LogCleaner.CleanerContext.html#line.204">getResult</a>(long&nbsp;waitIfNotFinished)</pre>
 </li>
 </ul>
 <a name="getTargetToClean--">
@@ -319,7 +319,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getTargetToClean</h4>
-<pre>org.apache.hadoop.fs.FileStatus&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/cleaner/LogCleaner.CleanerContext.html#line.220">getTargetToClean</a>()</pre>
+<pre>org.apache.hadoop.fs.FileStatus&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/cleaner/LogCleaner.CleanerContext.html#line.222">getTargetToClean</a>()</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/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 68c9b03..7264953 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/class-use/Pair.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/class-use/Pair.html
@@ -2027,7 +2027,9 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 <tr class="rowColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/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;&gt;</code></td>
 <td class="colLast"><span class="typeNameLabel">MetaTableLocator.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html#getMetaRegionsAndLocations-org.apache.hadoop.hbase.zookeeper.ZKWatcher-int-">getMetaRegionsAndLocations</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
-                          int&nbsp;replicaId)</code>&nbsp;</td>
+                          int&nbsp;replicaId)</code>
+<div class="block">Gets the meta regions and their locations for the given path and replica ID.</div>
+</td>
 </tr>
 </tbody>
 </table>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/devapidocs/org/apache/hadoop/hbase/zookeeper/ClusterStatusTracker.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/zookeeper/ClusterStatusTracker.html b/devapidocs/org/apache/hadoop/hbase/zookeeper/ClusterStatusTracker.html
index fec2bb0..271dfda 100644
--- a/devapidocs/org/apache/hadoop/hbase/zookeeper/ClusterStatusTracker.html
+++ b/devapidocs/org/apache/hadoop/hbase/zookeeper/ClusterStatusTracker.html
@@ -120,7 +120,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Private
-public class <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ClusterStatusTracker.html#line.37">ClusterStatusTracker</a>
+public class <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ClusterStatusTracker.html#line.38">ClusterStatusTracker</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKNodeTracker</a></pre>
 <div class="block">Tracker on cluster settings up in zookeeper.
  This is not related to <a href="../../../../../org/apache/hadoop/hbase/ClusterStatus.html" title="class in org.apache.hadoop.hbase"><code>ClusterStatus</code></a>. That class
@@ -261,7 +261,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.
 <ul class="blockListLast">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ClusterStatusTracker.html#line.38">LOG</a></pre>
+<pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ClusterStatusTracker.html#line.39">LOG</a></pre>
 </li>
 </ul>
 </li>
@@ -278,15 +278,16 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ClusterStatusTracker</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ClusterStatusTracker.html#line.48">ClusterStatusTracker</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;watcher,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ClusterStatusTracker.html#line.50">ClusterStatusTracker</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;watcher,
                             <a href="../../../../../org/apache/hadoop/hbase/Abortable.html" title="interface in org.apache.hadoop.hbase">Abortable</a>&nbsp;abortable)</pre>
 <div class="block">Creates a cluster status tracker.
 
  <p>After construction, use <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.html#start--"><code>ZKNodeTracker.start()</code></a> to kick off tracking.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>watcher</code> - </dd>
-<dd><code>abortable</code> - </dd>
+<dd><code>watcher</code> - reference to the <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper"><code>ZKWatcher</code></a> which also contains configuration and
+                constants</dd>
+<dd><code>abortable</code> - used to abort if a fatal error occurs</dd>
 </dl>
 </li>
 </ul>
@@ -304,12 +305,12 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.
 <ul class="blockList">
 <li class="blockList">
 <h4>isClusterUp</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ClusterStatusTracker.html#line.57">isClusterUp</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ClusterStatusTracker.html#line.59">isClusterUp</a>()</pre>
 <div class="block">Checks if cluster is up.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>true if the cluster up ('shutdown' is its name up in zk) znode
- exists with data, false if not</dd>
+         exists with data, false if not</dd>
 </dl>
 </li>
 </ul>
@@ -319,7 +320,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.
 <ul class="blockList">
 <li class="blockList">
 <h4>setClusterUp</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ClusterStatusTracker.html#line.65">setClusterUp</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ClusterStatusTracker.html#line.67">setClusterUp</a>()
                   throws org.apache.zookeeper.KeeperException</pre>
 <div class="block">Sets the cluster as up.</div>
 <dl>
@@ -334,7 +335,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.
 <ul class="blockList">
 <li class="blockList">
 <h4>setClusterDown</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ClusterStatusTracker.html#line.79">setClusterDown</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ClusterStatusTracker.html#line.81">setClusterDown</a>()
                     throws org.apache.zookeeper.KeeperException</pre>
 <div class="block">Sets the cluster as down by deleting the znode.</div>
 <dl>
@@ -349,11 +350,11 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.
 <ul class="blockListLast">
 <li class="blockList">
 <h4>toByteArray</h4>
-<pre>static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ClusterStatusTracker.html#line.93">toByteArray</a>()</pre>
+<pre>static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ClusterStatusTracker.html#line.95">toByteArray</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>Content of the clusterup znode as a serialized pb with the pb
- magic as prefix.</dd>
+         magic as prefix.</dd>
 </dl>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/devapidocs/org/apache/hadoop/hbase/zookeeper/EmptyWatcher.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/zookeeper/EmptyWatcher.html b/devapidocs/org/apache/hadoop/hbase/zookeeper/EmptyWatcher.html
index 7c074bc..bb77250 100644
--- a/devapidocs/org/apache/hadoop/hbase/zookeeper/EmptyWatcher.html
+++ b/devapidocs/org/apache/hadoop/hbase/zookeeper/EmptyWatcher.html
@@ -114,7 +114,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Private
-public class <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/EmptyWatcher.html#line.28">EmptyWatcher</a>
+public final class <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/EmptyWatcher.html#line.28">EmptyWatcher</a>
 extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
 implements org.apache.zookeeper.Watcher</pre>
 <div class="block">An empty ZooKeeper watcher</div>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/devapidocs/org/apache/hadoop/hbase/zookeeper/HQuorumPeer.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/zookeeper/HQuorumPeer.html b/devapidocs/org/apache/hadoop/hbase/zookeeper/HQuorumPeer.html
index 648c6e8..bafed9e 100644
--- a/devapidocs/org/apache/hadoop/hbase/zookeeper/HQuorumPeer.html
+++ b/devapidocs/org/apache/hadoop/hbase/zookeeper/HQuorumPeer.html
@@ -111,7 +111,7 @@ var activeTableTab = "activeTableTab";
 <br>
 <pre>@InterfaceAudience.LimitedPrivate(value="Tools")
  @InterfaceStability.Evolving
-public class <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/HQuorumPeer.html#line.57">HQuorumPeer</a>
+public final class <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/HQuorumPeer.html#line.57">HQuorumPeer</a>
 extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 <div class="block">HBase's version of ZooKeeper's QuorumPeer. When HBase is set to manage
  ZooKeeper, this class is used to start up QuorumPeer instances. By doing
@@ -133,10 +133,12 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <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>
+<th class="colFirst" scope="col">Modifier</th>
+<th class="colLast" scope="col">Constructor and Description</th>
 </tr>
 <tr class="altColor">
-<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/HQuorumPeer.html#HQuorumPeer--">HQuorumPeer</a></span>()</code>&nbsp;</td>
+<td class="colFirst"><code>private </code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/HQuorumPeer.html#HQuorumPeer--">HQuorumPeer</a></span>()</code>&nbsp;</td>
 </tr>
 </table>
 </li>
@@ -199,7 +201,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>HQuorumPeer</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/HQuorumPeer.html#line.57">HQuorumPeer</a>()</pre>
+<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/HQuorumPeer.html#line.58">HQuorumPeer</a>()</pre>
 </li>
 </ul>
 </li>
@@ -216,7 +218,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>main</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/HQuorumPeer.html#line.63">main</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;args)</pre>
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/HQuorumPeer.html#line.65">main</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;args)</pre>
 <div class="block">Parse ZooKeeper configuration from HBase XML config and run a QuorumPeer.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -230,7 +232,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>runZKServer</h4>
-<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/HQuorumPeer.html#line.83">runZKServer</a>(org.apache.zookeeper.server.quorum.QuorumPeerConfig&nbsp;zkConfig)
+<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/HQuorumPeer.html#line.85">runZKServer</a>(org.apache.zookeeper.server.quorum.QuorumPeerConfig&nbsp;zkConfig)
                          throws <a href="http://docs.oracle.com/javase/8/docs/api/java/net/UnknownHostException.html?is-external=true" title="class or interface in java.net">UnknownHostException</a>,
                                 <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
@@ -246,7 +248,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>addressIsLocalHost</h4>
-<pre>private static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/HQuorumPeer.html#line.95">addressIsLocalHost</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;address)</pre>
+<pre>private static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/HQuorumPeer.html#line.98">addressIsLocalHost</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;address)</pre>
 </li>
 </ul>
 <a name="writeMyID-java.util.Properties-">
@@ -255,7 +257,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>writeMyID</h4>
-<pre>static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/HQuorumPeer.html#line.99">writeMyID</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Properties.html?is-external=true" title="class or interface in java.util">Properties</a>&nbsp;properties)
+<pre>static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/HQuorumPeer.html#line.102">writeMyID</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Properties.html?is-external=true" title="class or interface in java.util">Properties</a>&nbsp;properties)
                throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/devapidocs/org/apache/hadoop/hbase/zookeeper/LoadBalancerTracker.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/zookeeper/LoadBalancerTracker.html b/devapidocs/org/apache/hadoop/hbase/zookeeper/LoadBalancerTracker.html
index e91721f..5aefa4b 100644
--- a/devapidocs/org/apache/hadoop/hbase/zookeeper/LoadBalancerTracker.html
+++ b/devapidocs/org/apache/hadoop/hbase/zookeeper/LoadBalancerTracker.html
@@ -120,7 +120,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Private
-public class <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/LoadBalancerTracker.html#line.36">LoadBalancerTracker</a>
+public class <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/LoadBalancerTracker.html#line.37">LoadBalancerTracker</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKNodeTracker</a></pre>
 <div class="block">Tracks the load balancer state up in ZK</div>
 </li>
@@ -205,7 +205,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.
 <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/zookeeper/LoadBalancerTracker.html#setBalancerOn-boolean-">setBalancerOn</a></span>(boolean&nbsp;balancerOn)</code>
-<div class="block">Set the balancer on/off</div>
+<div class="block">Set the balancer on/off.</div>
 </td>
 </tr>
 <tr id="i3" class="rowColor">
@@ -254,7 +254,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.
 <ul class="blockListLast">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/LoadBalancerTracker.html#line.37">LOG</a></pre>
+<pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/LoadBalancerTracker.html#line.38">LOG</a></pre>
 </li>
 </ul>
 </li>
@@ -271,7 +271,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.
 <ul class="blockListLast">
 <li class="blockList">
 <h4>LoadBalancerTracker</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/LoadBalancerTracker.html#line.39">LoadBalancerTracker</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;watcher,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/LoadBalancerTracker.html#line.40">LoadBalancerTracker</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;watcher,
                            <a href="../../../../../org/apache/hadoop/hbase/Abortable.html" title="interface in org.apache.hadoop.hbase">Abortable</a>&nbsp;abortable)</pre>
 </li>
 </ul>
@@ -289,7 +289,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.
 <ul class="blockList">
 <li class="blockList">
 <h4>isBalancerOn</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/LoadBalancerTracker.html#line.47">isBalancerOn</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/LoadBalancerTracker.html#line.48">isBalancerOn</a>()</pre>
 <div class="block">Return true if the balance switch is on, false otherwise</div>
 </li>
 </ul>
@@ -299,14 +299,14 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.
 <ul class="blockList">
 <li class="blockList">
 <h4>setBalancerOn</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/LoadBalancerTracker.html#line.64">setBalancerOn</a>(boolean&nbsp;balancerOn)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/LoadBalancerTracker.html#line.66">setBalancerOn</a>(boolean&nbsp;balancerOn)
                    throws org.apache.zookeeper.KeeperException</pre>
-<div class="block">Set the balancer on/off</div>
+<div class="block">Set the balancer on/off.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>balancerOn</code> - </dd>
+<dd><code>balancerOn</code> - true if the balancher should be on, false otherwise</dd>
 <dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code>org.apache.zookeeper.KeeperException</code></dd>
+<dd><code>org.apache.zookeeper.KeeperException</code> - if a ZooKeeper operation fails</dd>
 </dl>
 </li>
 </ul>
@@ -316,7 +316,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.
 <ul class="blockList">
 <li class="blockList">
 <h4>toByteArray</h4>
-<pre>private&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/LoadBalancerTracker.html#line.74">toByteArray</a>(boolean&nbsp;isBalancerOn)</pre>
+<pre>private&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/LoadBalancerTracker.html#line.77">toByteArray</a>(boolean&nbsp;isBalancerOn)</pre>
 </li>
 </ul>
 <a name="parseFrom-byte:A-">
@@ -325,7 +325,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.
 <ul class="blockListLast">
 <li class="blockList">
 <h4>parseFrom</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.LoadBalancerProtos.LoadBalancerState&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/LoadBalancerTracker.html#line.81">parseFrom</a>(byte[]&nbsp;pbBytes)
+<pre>private&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.LoadBalancerProtos.LoadBalancerState&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/LoadBalancerTracker.html#line.84">parseFrom</a>(byte[]&nbsp;pbBytes)
                                                                                                   throws <a href="../../../../../org/apache/hadoop/hbase/exceptions/DeserializationException.html" title="class in org.apache.hadoop.hbase.exceptions">DeserializationException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/devapidocs/org/apache/hadoop/hbase/zookeeper/MasterAddressTracker.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/zookeeper/MasterAddressTracker.html b/devapidocs/org/apache/hadoop/hbase/zookeeper/MasterAddressTracker.html
index 141269d..89aabe8 100644
--- a/devapidocs/org/apache/hadoop/hbase/zookeeper/MasterAddressTracker.html
+++ b/devapidocs/org/apache/hadoop/hbase/zookeeper/MasterAddressTracker.html
@@ -120,7 +120,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Private
-public class <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MasterAddressTracker.html#line.54">MasterAddressTracker</a>
+public class <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MasterAddressTracker.html#line.55">MasterAddressTracker</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKNodeTracker</a></pre>
 <div class="block">Manages the location of the current active Master for the RegionServer.
  <p>
@@ -310,7 +310,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.
 <ul class="blockListLast">
 <li class="blockList">
 <h4>MasterAddressTracker</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MasterAddressTracker.html#line.66">MasterAddressTracker</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;watcher,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MasterAddressTracker.html#line.67">MasterAddressTracker</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;watcher,
                             <a href="../../../../../org/apache/hadoop/hbase/Abortable.html" title="interface in org.apache.hadoop.hbase">Abortable</a>&nbsp;abortable)</pre>
 <div class="block">Construct a master address listener with the specified
  <code>zookeeper</code> reference.
@@ -339,7 +339,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.
 <ul class="blockList">
 <li class="blockList">
 <h4>getMasterAddress</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/zookeeper/MasterAddressTracker.html#line.75">getMasterAddress</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/zookeeper/MasterAddressTracker.html#line.76">getMasterAddress</a>()</pre>
 <div class="block">Get the address of the current master if one is available.  Returns null
  if no current master.</div>
 <dl>
@@ -354,7 +354,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.
 <ul class="blockList">
 <li class="blockList">
 <h4>getMasterInfoPort</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MasterAddressTracker.html#line.84">getMasterInfoPort</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MasterAddressTracker.html#line.85">getMasterInfoPort</a>()</pre>
 <div class="block">Get the info port of the current master of one is available.
  Return 0 if no current master or zookeeper is unavailable</div>
 <dl>
@@ -369,7 +369,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.
 <ul class="blockList">
 <li class="blockList">
 <h4>getBackupMasterInfoPort</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MasterAddressTracker.html#line.102">getBackupMasterInfoPort</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;sn)</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MasterAddressTracker.html#line.103">getBackupMasterInfoPort</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;sn)</pre>
 <div class="block">Get the info port of the backup master if it is available.
  Return 0 if no backup master or zookeeper is unavailable</div>
 <dl>
@@ -386,7 +386,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.
 <ul class="blockList">
 <li class="blockList">
 <h4>getMasterAddress</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/zookeeper/MasterAddressTracker.html#line.126">getMasterAddress</a>(boolean&nbsp;refresh)</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/zookeeper/MasterAddressTracker.html#line.127">getMasterAddress</a>(boolean&nbsp;refresh)</pre>
 <div class="block">Get the address of the current master if one is available.  Returns null
  if no current master. If refresh is set, try to load the data from ZK again,
  otherwise, cached data will be used.</div>
@@ -404,7 +404,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.
 <ul class="blockList">
 <li class="blockList">
 <h4>getMasterAddress</h4>
-<pre>public static&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/zookeeper/MasterAddressTracker.html#line.145">getMasterAddress</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw)
+<pre>public static&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/zookeeper/MasterAddressTracker.html#line.146">getMasterAddress</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw)
                                    throws org.apache.zookeeper.KeeperException,
                                           <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Get master address.
@@ -415,10 +415,10 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.
 <dd><code>zkw</code> - ZKWatcher to use</dd>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>ServerName stored in the the master address znode or null if no
- znode present.</dd>
+         znode present.</dd>
 <dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code>org.apache.zookeeper.KeeperException</code></dd>
-<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+<dd><code>org.apache.zookeeper.KeeperException</code> - if a ZooKeeper operation fails</dd>
+<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code> - if the address of the ZooKeeper master cannot be retrieved</dd>
 </dl>
 </li>
 </ul>
@@ -428,7 +428,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.
 <ul class="blockList">
 <li class="blockList">
 <h4>getMasterInfoPort</h4>
-<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MasterAddressTracker.html#line.177">getMasterInfoPort</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw)
+<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MasterAddressTracker.html#line.178">getMasterInfoPort</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw)
                              throws org.apache.zookeeper.KeeperException,
                                     <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Get master info port.
@@ -439,11 +439,11 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.
 <dd><code>zkw</code> - ZKWatcher to use</dd>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>master info port in the the master address znode or null if no
- znode present.
- // TODO can't return null for 'int' return type. non-static verison returns 0</dd>
+         znode present.
+         // TODO can't return null for 'int' return type. non-static verison returns 0</dd>
 <dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code>org.apache.zookeeper.KeeperException</code></dd>
-<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+<dd><code>org.apache.zookeeper.KeeperException</code> - if a ZooKeeper operation fails</dd>
+<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code> - if the address of the ZooKeeper master cannot be retrieved</dd>
 </dl>
 </li>
 </ul>
@@ -465,12 +465,12 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>zkw</code> - The ZKWatcher to use.</dd>
 <dd><code>znode</code> - Where to create the znode; could be at the top level or it
- could be under backup masters</dd>
+              could be under backup masters</dd>
 <dd><code>master</code> - ServerName of the current master must not be null.</dd>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>true if node created, false if not; a watch is set in both cases</dd>
 <dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code>org.apache.zookeeper.KeeperException</code></dd>
+<dd><code>org.apache.zookeeper.KeeperException</code> - if a ZooKeeper operation fails</dd>
 </dl>
 </li>
 </ul>
@@ -501,7 +501,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.
 <dd><code>sn</code> - must not be null</dd>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>Content of the master znode as a serialized pb with the pb
- magic as prefix.</dd>
+         magic as prefix.</dd>
 </dl>
 </li>
 </ul>
@@ -519,7 +519,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>pb object of master, null if no active master</dd>
 <dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="../../../../../org/apache/hadoop/hbase/exceptions/DeserializationException.html" title="class in org.apache.hadoop.hbase.exceptions">DeserializationException</a></code></dd>
+<dd><code><a href="../../../../../org/apache/hadoop/hbase/exceptions/DeserializationException.html" title="class in org.apache.hadoop.hbase.exceptions">DeserializationException</a></code> - if the parsing fails</dd>
 </dl>
 </li>
 </ul>


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

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


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

Branch: refs/heads/asf-site
Commit: 48bd3915f7f5a0b35d1cb09d88f5148636801653
Parents: 3d2ba2b
Author: jenkins <bu...@apache.org>
Authored: Sun Dec 17 15:17:20 2017 +0000
Committer: jenkins <bu...@apache.org>
Committed: Sun Dec 17 15:17:20 2017 +0000

----------------------------------------------------------------------
 acid-semantics.html                             |     4 +-
 apache_hbase_reference_guide.pdf                |     4 +-
 apidocs/index-all.html                          |     2 +-
 .../hbase/zookeeper/MiniZooKeeperCluster.html   |    30 +-
 .../hbase/zookeeper/MiniZooKeeperCluster.html   |   577 +-
 book.html                                       |     2 +-
 bulk-loads.html                                 |     4 +-
 checkstyle-aggregate.html                       | 49354 ++++++++---------
 checkstyle.rss                                  |    42 +-
 coc.html                                        |     4 +-
 cygwin.html                                     |     4 +-
 dependencies.html                               |     4 +-
 dependency-convergence.html                     |     4 +-
 dependency-info.html                            |     4 +-
 dependency-management.html                      |     4 +-
 devapidocs/constant-values.html                 |     6 +-
 devapidocs/index-all.html                       |    34 +-
 .../NotAllMetaRegionsOnlineException.html       |    16 +-
 .../hadoop/hbase/class-use/ServerName.html      |    11 +-
 .../client/class-use/ClusterConnection.html     |     4 +-
 .../hbase/client/class-use/RegionInfo.html      |    12 +-
 .../master/class-use/RegionState.State.html     |     3 +-
 .../cleaner/LogCleaner.CleanerContext.html      |    20 +-
 .../hadoop/hbase/util/class-use/Pair.html       |     4 +-
 .../hbase/zookeeper/ClusterStatusTracker.html   |    23 +-
 .../hadoop/hbase/zookeeper/EmptyWatcher.html    |     2 +-
 .../hadoop/hbase/zookeeper/HQuorumPeer.html     |    18 +-
 .../hbase/zookeeper/LoadBalancerTracker.html    |    22 +-
 .../hbase/zookeeper/MasterAddressTracker.html   |    38 +-
 .../hbase/zookeeper/MetaTableLocator.html       |   200 +-
 .../hbase/zookeeper/MiniZooKeeperCluster.html   |    38 +-
 .../hbase/zookeeper/RecoverableZooKeeper.html   |    56 +-
 .../zookeeper/RegionNormalizerTracker.html      |     8 +-
 .../hadoop/hbase/zookeeper/ZKClusterId.html     |     2 +-
 .../hadoop/hbase/zookeeper/ZKMainServer.html    |     6 +-
 .../hadoop/hbase/zookeeper/ZKNodeTracker.html   |    35 +-
 .../hadoop/hbase/zookeeper/ZKServerTool.html    |    14 +-
 .../hadoop/hbase/zookeeper/ZKSplitLog.html      |    42 +-
 .../zookeeper/ZKUtil.JaasConfiguration.html     |    30 +-
 .../hbase/zookeeper/ZKUtil.NodeAndData.html     |    16 +-
 .../ZKUtil.ZKUtilOp.CreateAndFailSilent.html    |    12 +-
 .../ZKUtil.ZKUtilOp.DeleteNodeFailSilent.html   |     8 +-
 .../zookeeper/ZKUtil.ZKUtilOp.SetData.html      |    12 +-
 .../hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.html |    14 +-
 .../apache/hadoop/hbase/zookeeper/ZKUtil.html   |   191 +-
 .../hadoop/hbase/zookeeper/ZKWatcher.html       |    68 +-
 .../hbase/zookeeper/class-use/ZKWatcher.html    |    27 +-
 .../hadoop/hbase/zookeeper/package-summary.html |     3 +-
 .../org/apache/hadoop/hbase/Version.html        |     6 +-
 .../cleaner/LogCleaner.CleanerContext.html      |   120 +-
 .../hadoop/hbase/master/cleaner/LogCleaner.html |   120 +-
 .../hbase/zookeeper/ClusterStatusTracker.html   |   156 +-
 .../hadoop/hbase/zookeeper/EmptyWatcher.html    |     2 +-
 .../hadoop/hbase/zookeeper/HQuorumPeer.html     |   225 +-
 .../hbase/zookeeper/LoadBalancerTracker.html    |   145 +-
 .../hbase/zookeeper/MasterAddressTracker.html   |   314 +-
 .../hbase/zookeeper/MetaTableLocator.html       |  1070 +-
 .../hbase/zookeeper/MiniZooKeeperCluster.html   |   577 +-
 .../hbase/zookeeper/RecoverableZooKeeper.html   |  1420 +-
 .../zookeeper/RegionNormalizerTracker.html      |    34 +-
 .../hadoop/hbase/zookeeper/ZKAclReset.html      |     6 +-
 .../hadoop/hbase/zookeeper/ZKClusterId.html     |     6 +-
 .../hadoop/hbase/zookeeper/ZKLeaderManager.html |     4 +-
 ...HACK_UNTIL_ZOOKEEPER_1897_ZooKeeperMain.html |    82 +-
 .../hadoop/hbase/zookeeper/ZKMainServer.html    |    82 +-
 .../hadoop/hbase/zookeeper/ZKNodeTracker.html   |   396 +-
 .../hadoop/hbase/zookeeper/ZKServerTool.html    |    79 +-
 .../hadoop/hbase/zookeeper/ZKSplitLog.html      |   182 +-
 .../zookeeper/ZKUtil.JaasConfiguration.html     |  4042 +-
 .../hbase/zookeeper/ZKUtil.NodeAndData.html     |  4042 +-
 .../ZKUtil.ZKUtilOp.CreateAndFailSilent.html    |  4042 +-
 .../ZKUtil.ZKUtilOp.DeleteNodeFailSilent.html   |  4042 +-
 .../zookeeper/ZKUtil.ZKUtilOp.SetData.html      |  4042 +-
 .../hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.html |  4042 +-
 .../apache/hadoop/hbase/zookeeper/ZKUtil.html   |  4042 +-
 .../hadoop/hbase/zookeeper/ZKWatcher.html       |   708 +-
 export_control.html                             |     4 +-
 hbase-annotations/checkstyle.html               |     4 +-
 hbase-annotations/dependencies.html             |     4 +-
 hbase-annotations/dependency-convergence.html   |     4 +-
 hbase-annotations/dependency-info.html          |     4 +-
 hbase-annotations/dependency-management.html    |     4 +-
 hbase-annotations/index.html                    |     4 +-
 hbase-annotations/integration.html              |     4 +-
 hbase-annotations/issue-tracking.html           |     4 +-
 hbase-annotations/license.html                  |     4 +-
 hbase-annotations/mail-lists.html               |     4 +-
 hbase-annotations/plugin-management.html        |     4 +-
 hbase-annotations/plugins.html                  |     4 +-
 hbase-annotations/project-info.html             |     4 +-
 hbase-annotations/project-reports.html          |     4 +-
 hbase-annotations/project-summary.html          |     4 +-
 hbase-annotations/source-repository.html        |     4 +-
 hbase-annotations/team-list.html                |     4 +-
 hbase-build-configuration/dependencies.html     |     4 +-
 .../dependency-convergence.html                 |     4 +-
 hbase-build-configuration/dependency-info.html  |     4 +-
 .../dependency-management.html                  |     4 +-
 .../hbase-archetypes/dependencies.html          |     4 +-
 .../dependency-convergence.html                 |     4 +-
 .../hbase-archetypes/dependency-info.html       |     4 +-
 .../hbase-archetypes/dependency-management.html |     4 +-
 .../hbase-archetype-builder/dependencies.html   |     4 +-
 .../dependency-convergence.html                 |     4 +-
 .../dependency-info.html                        |     4 +-
 .../dependency-management.html                  |     4 +-
 .../hbase-archetype-builder/index.html          |     4 +-
 .../hbase-archetype-builder/integration.html    |     4 +-
 .../hbase-archetype-builder/issue-tracking.html |     4 +-
 .../hbase-archetype-builder/license.html        |     4 +-
 .../hbase-archetype-builder/mail-lists.html     |     4 +-
 .../plugin-management.html                      |     4 +-
 .../hbase-archetype-builder/plugins.html        |     4 +-
 .../hbase-archetype-builder/project-info.html   |     4 +-
 .../project-summary.html                        |     4 +-
 .../source-repository.html                      |     4 +-
 .../hbase-archetype-builder/team-list.html      |     4 +-
 .../hbase-client-project/checkstyle.html        |     4 +-
 .../hbase-client-project/dependencies.html      |     4 +-
 .../dependency-convergence.html                 |     4 +-
 .../hbase-client-project/dependency-info.html   |     4 +-
 .../dependency-management.html                  |     4 +-
 .../hbase-client-project/index.html             |     4 +-
 .../hbase-client-project/integration.html       |     4 +-
 .../hbase-client-project/issue-tracking.html    |     4 +-
 .../hbase-client-project/license.html           |     4 +-
 .../hbase-client-project/mail-lists.html        |     4 +-
 .../hbase-client-project/plugin-management.html |     4 +-
 .../hbase-client-project/plugins.html           |     4 +-
 .../hbase-client-project/project-info.html      |     4 +-
 .../hbase-client-project/project-reports.html   |     4 +-
 .../hbase-client-project/project-summary.html   |     4 +-
 .../hbase-client-project/source-repository.html |     4 +-
 .../hbase-client-project/team-list.html         |     4 +-
 .../hbase-shaded-client-project/checkstyle.html |     4 +-
 .../dependencies.html                           |     4 +-
 .../dependency-convergence.html                 |     4 +-
 .../dependency-info.html                        |     4 +-
 .../dependency-management.html                  |     4 +-
 .../hbase-shaded-client-project/index.html      |     4 +-
 .../integration.html                            |     4 +-
 .../issue-tracking.html                         |     4 +-
 .../hbase-shaded-client-project/license.html    |     4 +-
 .../hbase-shaded-client-project/mail-lists.html |     4 +-
 .../plugin-management.html                      |     4 +-
 .../hbase-shaded-client-project/plugins.html    |     4 +-
 .../project-info.html                           |     4 +-
 .../project-reports.html                        |     4 +-
 .../project-summary.html                        |     4 +-
 .../source-repository.html                      |     4 +-
 .../hbase-shaded-client-project/team-list.html  |     4 +-
 .../hbase-archetypes/index.html                 |     4 +-
 .../hbase-archetypes/integration.html           |     4 +-
 .../hbase-archetypes/issue-tracking.html        |     4 +-
 .../hbase-archetypes/license.html               |     4 +-
 .../hbase-archetypes/mail-lists.html            |     4 +-
 .../hbase-archetypes/plugin-management.html     |     4 +-
 .../hbase-archetypes/plugins.html               |     4 +-
 .../hbase-archetypes/project-info.html          |     4 +-
 .../hbase-archetypes/project-summary.html       |     4 +-
 .../hbase-archetypes/source-repository.html     |     4 +-
 .../hbase-archetypes/team-list.html             |     4 +-
 .../hbase-spark/checkstyle.html                 |     4 +-
 .../hbase-spark/dependencies.html               |     4 +-
 .../hbase-spark/dependency-convergence.html     |     4 +-
 .../hbase-spark/dependency-info.html            |     4 +-
 .../hbase-spark/dependency-management.html      |     4 +-
 .../hbase-spark/index.html                      |     4 +-
 .../hbase-spark/integration.html                |     4 +-
 .../hbase-spark/issue-tracking.html             |     4 +-
 .../hbase-spark/license.html                    |     4 +-
 .../hbase-spark/mail-lists.html                 |     4 +-
 .../hbase-spark/plugin-management.html          |     4 +-
 .../hbase-spark/plugins.html                    |     4 +-
 .../hbase-spark/project-info.html               |     4 +-
 .../hbase-spark/project-reports.html            |     4 +-
 .../hbase-spark/project-summary.html            |     4 +-
 .../hbase-spark/source-repository.html          |     4 +-
 .../hbase-spark/team-list.html                  |     4 +-
 hbase-build-configuration/index.html            |     4 +-
 hbase-build-configuration/integration.html      |     4 +-
 hbase-build-configuration/issue-tracking.html   |     4 +-
 hbase-build-configuration/license.html          |     4 +-
 hbase-build-configuration/mail-lists.html       |     4 +-
 .../plugin-management.html                      |     4 +-
 hbase-build-configuration/plugins.html          |     4 +-
 hbase-build-configuration/project-info.html     |     4 +-
 hbase-build-configuration/project-summary.html  |     4 +-
 .../source-repository.html                      |     4 +-
 hbase-build-configuration/team-list.html        |     4 +-
 hbase-shaded-check-invariants/checkstyle.html   |     4 +-
 hbase-shaded-check-invariants/dependencies.html |     4 +-
 .../dependency-convergence.html                 |     4 +-
 .../dependency-info.html                        |     4 +-
 .../dependency-management.html                  |     4 +-
 hbase-shaded-check-invariants/index.html        |     4 +-
 hbase-shaded-check-invariants/integration.html  |     4 +-
 .../issue-tracking.html                         |     4 +-
 hbase-shaded-check-invariants/license.html      |     4 +-
 hbase-shaded-check-invariants/mail-lists.html   |     4 +-
 .../plugin-management.html                      |     4 +-
 hbase-shaded-check-invariants/plugins.html      |     4 +-
 hbase-shaded-check-invariants/project-info.html |     4 +-
 .../project-reports.html                        |     4 +-
 .../project-summary.html                        |     4 +-
 .../source-repository.html                      |     4 +-
 hbase-shaded-check-invariants/team-list.html    |     4 +-
 index.html                                      |     4 +-
 integration.html                                |     4 +-
 issue-tracking.html                             |     4 +-
 license.html                                    |     4 +-
 mail-lists.html                                 |     4 +-
 metrics.html                                    |     4 +-
 old_news.html                                   |     4 +-
 plugin-management.html                          |     4 +-
 plugins.html                                    |     4 +-
 poweredbyhbase.html                             |     4 +-
 project-info.html                               |     4 +-
 project-reports.html                            |     4 +-
 project-summary.html                            |     4 +-
 pseudo-distributed.html                         |     4 +-
 replication.html                                |     4 +-
 resources.html                                  |     4 +-
 source-repository.html                          |     4 +-
 sponsors.html                                   |     4 +-
 supportingprojects.html                         |     4 +-
 team-list.html                                  |     4 +-
 testdevapidocs/index-all.html                   |    85 +-
 .../hbase/testclassification/ClientTests.html   |    19 +
 .../testclassification/CoprocessorTests.html    |    20 +-
 .../hbase/testclassification/FilterTests.html   |    20 +-
 .../hbase/testclassification/FlakeyTests.html   |    18 +
 .../hbase/testclassification/IOTests.html       |    19 +
 .../testclassification/IntegrationTests.html    |     5 +-
 .../hbase/testclassification/LargeTests.html    |    12 +-
 .../testclassification/MapReduceTests.html      |    18 +
 .../hbase/testclassification/MasterTests.html   |    18 +
 .../hbase/testclassification/MediumTests.html   |    12 +-
 .../hbase/testclassification/MetricsTests.html  |     1 +
 .../hbase/testclassification/MiscTests.html     |    18 +
 .../hbase/testclassification/RPCTests.html      |    18 +
 .../testclassification/RegionServerTests.html   |    20 +-
 .../testclassification/ReplicationTests.html    |    18 +
 .../hbase/testclassification/RestTests.html     |    20 +-
 .../hbase/testclassification/SecurityTests.html |    20 +-
 .../hbase/testclassification/SmallTests.html    |    10 +-
 .../VerySlowMapReduceTests.html                 |    21 +-
 .../VerySlowRegionServerTests.html              |    21 +-
 .../hbase/testclassification/ZKTests.html       |     4 +-
 .../testclassification/package-summary.html     |    85 +-
 .../hadoop/hbase/client/TestShellNoCluster.html |    25 +-
 .../hbase/testclassification/ClientTests.html   |    76 +-
 .../testclassification/CoprocessorTests.html    |    79 +-
 .../hbase/testclassification/FilterTests.html   |    79 +-
 .../hbase/testclassification/FlakeyTests.html   |    74 +-
 .../hbase/testclassification/IOTests.html       |    76 +-
 .../testclassification/IntegrationTests.html    |    37 +-
 .../hbase/testclassification/LargeTests.html    |    75 +-
 .../testclassification/MapReduceTests.html      |    74 +-
 .../hbase/testclassification/MasterTests.html   |    74 +-
 .../hbase/testclassification/MediumTests.html   |    73 +-
 .../hbase/testclassification/MetricsTests.html  |    10 +-
 .../hbase/testclassification/MiscTests.html     |    74 +-
 .../hbase/testclassification/RPCTests.html      |    74 +-
 .../testclassification/RegionServerTests.html   |    79 +-
 .../testclassification/ReplicationTests.html    |    74 +-
 .../hbase/testclassification/RestTests.html     |    79 +-
 .../hbase/testclassification/SecurityTests.html |    80 +-
 .../hbase/testclassification/SmallTests.html    |    67 +-
 .../VerySlowMapReduceTests.html                 |    81 +-
 .../VerySlowRegionServerTests.html              |    73 +-
 .../hbase/testclassification/ZKTests.html       |    19 +-
 272 files changed, 43326 insertions(+), 44298 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/acid-semantics.html
----------------------------------------------------------------------
diff --git a/acid-semantics.html b/acid-semantics.html
index cd0c32f..daf0780 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="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Apache HBase (TM) ACID Properties
@@ -606,7 +606,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/apache_hbase_reference_guide.pdf
----------------------------------------------------------------------
diff --git a/apache_hbase_reference_guide.pdf b/apache_hbase_reference_guide.pdf
index b36d03a..aec7aa8 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:20171216144716+00'00')
-/CreationDate (D:20171216144716+00'00')
+/ModDate (D:20171217144715+00'00')
+/CreationDate (D:20171217144715+00'00')
 >>
 endobj
 2 0 obj

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/apidocs/index-all.html
----------------------------------------------------------------------
diff --git a/apidocs/index-all.html b/apidocs/index-all.html
index 23a24e7..b73f99e 100644
--- a/apidocs/index-all.html
+++ b/apidocs/index-all.html
@@ -10594,7 +10594,7 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#killOneBackupZooKeeperServer--">killOneBackupZooKeeperServer()</a></span> - Method in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html" title="class in org.apache.hadoop.hbase.zookeeper">MiniZooKeeperCluster</a></dt>
 <dd>
-<div class="block">Kill one back up ZK servers</div>
+<div class="block">Kill one back up ZK servers.</div>
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TsvImporterMapper.html#kvCreator">kvCreator</a></span> - Variable in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TsvImporterMapper.html" title="class in org.apache.hadoop.hbase.mapreduce">TsvImporterMapper</a></dt>
 <dd>&nbsp;</dd>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/apidocs/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html
----------------------------------------------------------------------
diff --git a/apidocs/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html b/apidocs/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html
index 5eff509..9b4a44f 100644
--- a/apidocs/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html
+++ b/apidocs/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html
@@ -184,7 +184,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <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/zookeeper/MiniZooKeeperCluster.html#killOneBackupZooKeeperServer--">killOneBackupZooKeeperServer</a></span>()</code>
-<div class="block">Kill one back up ZK servers</div>
+<div class="block">Kill one back up ZK servers.</div>
 </td>
 </tr>
 <tr id="i7" class="rowColor">
@@ -348,14 +348,14 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
                    <a href="http://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="paramLabel">Parameters:</span></dt>
-<dd><code>baseDir</code> - </dd>
-<dd><code>numZooKeeperServers</code> - </dd>
+<dd><code>baseDir</code> - the base directory to use</dd>
+<dd><code>numZooKeeperServers</code> - the number of ZooKeeper servers</dd>
 <dt><span class="returnLabel">Returns:</span></dt>
-<dd>ClientPort server bound to, -1 if there was a
-         binding problem and we couldn't pick another port.</dd>
+<dd>ClientPort server bound to, -1 if there was a binding problem and we couldn't pick
+         another port.</dd>
 <dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
-<dd><code><a href="http://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>
+<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code> - if an operation fails during the startup</dd>
+<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></code> - if the startup fails</dd>
 </dl>
 </li>
 </ul>
@@ -365,11 +365,11 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>shutdown</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#line.295">shutdown</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#line.299">shutdown</a>()
               throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code> - if waiting for the shutdown of a server fails</dd>
 </dl>
 </li>
 </ul>
@@ -379,7 +379,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>killCurrentActiveZooKeeperServer</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#line.329">killCurrentActiveZooKeeperServer</a>()
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#line.333">killCurrentActiveZooKeeperServer</a>()
                                      throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                                             <a href="http://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>
@@ -387,7 +387,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <dd>clientPort return clientPort if there is another ZK backup can run
          when killing the current active; return -1, if there is no backups.</dd>
 <dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code> - if waiting for the shutdown of a server fails</dd>
 <dd><code><a href="http://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>
@@ -398,13 +398,13 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>killOneBackupZooKeeperServer</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#line.370">killOneBackupZooKeeperServer</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#line.373">killOneBackupZooKeeperServer</a>()
                                   throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                                          <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
-<div class="block">Kill one back up ZK servers</div>
+<div class="block">Kill one back up ZK servers.</div>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code> - if waiting for the shutdown of a server fails</dd>
 <dd><code><a href="http://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>
@@ -415,7 +415,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getClientPort</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#line.468">getClientPort</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#line.469">getClientPort</a>()</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/apidocs/src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html
----------------------------------------------------------------------
diff --git a/apidocs/src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html b/apidocs/src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html
index 5db3c04..313bb69 100644
--- a/apidocs/src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html
+++ b/apidocs/src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html
@@ -28,9 +28,9 @@
 <span class="sourceLineNo">020</span><a name="line.20"></a>
 <span class="sourceLineNo">021</span>import java.io.BufferedReader;<a name="line.21"></a>
 <span class="sourceLineNo">022</span>import java.io.File;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import java.io.InterruptedIOException;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import java.io.IOException;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import java.io.InputStreamReader;<a name="line.25"></a>
+<span class="sourceLineNo">023</span>import java.io.IOException;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import java.io.InputStreamReader;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import java.io.InterruptedIOException;<a name="line.25"></a>
 <span class="sourceLineNo">026</span>import java.io.OutputStream;<a name="line.26"></a>
 <span class="sourceLineNo">027</span>import java.io.Reader;<a name="line.27"></a>
 <span class="sourceLineNo">028</span>import java.net.BindException;<a name="line.28"></a>
@@ -42,9 +42,9 @@
 <span class="sourceLineNo">034</span><a name="line.34"></a>
 <span class="sourceLineNo">035</span>import org.apache.commons.logging.Log;<a name="line.35"></a>
 <span class="sourceLineNo">036</span>import org.apache.commons.logging.LogFactory;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.conf.Configuration;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.HConstants;<a name="line.39"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.conf.Configuration;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.HConstants;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.39"></a>
 <span class="sourceLineNo">040</span>import org.apache.zookeeper.server.NIOServerCnxnFactory;<a name="line.40"></a>
 <span class="sourceLineNo">041</span>import org.apache.zookeeper.server.ZooKeeperServer;<a name="line.41"></a>
 <span class="sourceLineNo">042</span>import org.apache.zookeeper.server.persistence.FileTxnLog;<a name="line.42"></a>
@@ -195,293 +195,294 @@
 <span class="sourceLineNo">187</span>  }<a name="line.187"></a>
 <span class="sourceLineNo">188</span><a name="line.188"></a>
 <span class="sourceLineNo">189</span>  /**<a name="line.189"></a>
-<span class="sourceLineNo">190</span>   * @param baseDir<a name="line.190"></a>
-<span class="sourceLineNo">191</span>   * @param numZooKeeperServers<a name="line.191"></a>
-<span class="sourceLineNo">192</span>   * @return ClientPort server bound to, -1 if there was a<a name="line.192"></a>
-<span class="sourceLineNo">193</span>   *         binding problem and we couldn't pick another port.<a name="line.193"></a>
-<span class="sourceLineNo">194</span>   * @throws IOException<a name="line.194"></a>
-<span class="sourceLineNo">195</span>   * @throws InterruptedException<a name="line.195"></a>
+<span class="sourceLineNo">190</span>   * @param baseDir the base directory to use<a name="line.190"></a>
+<span class="sourceLineNo">191</span>   * @param numZooKeeperServers the number of ZooKeeper servers<a name="line.191"></a>
+<span class="sourceLineNo">192</span>   * @return ClientPort server bound to, -1 if there was a binding problem and we couldn't pick<a name="line.192"></a>
+<span class="sourceLineNo">193</span>   *         another port.<a name="line.193"></a>
+<span class="sourceLineNo">194</span>   * @throws IOException if an operation fails during the startup<a name="line.194"></a>
+<span class="sourceLineNo">195</span>   * @throws InterruptedException if the startup fails<a name="line.195"></a>
 <span class="sourceLineNo">196</span>   */<a name="line.196"></a>
 <span class="sourceLineNo">197</span>  public int startup(File baseDir, int numZooKeeperServers) throws IOException,<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      InterruptedException {<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    if (numZooKeeperServers &lt;= 0)<a name="line.199"></a>
+<span class="sourceLineNo">198</span>          InterruptedException {<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    if (numZooKeeperServers &lt;= 0) {<a name="line.199"></a>
 <span class="sourceLineNo">200</span>      return -1;<a name="line.200"></a>
-<span class="sourceLineNo">201</span><a name="line.201"></a>
-<span class="sourceLineNo">202</span>    setupTestEnv();<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    shutdown();<a name="line.203"></a>
-<span class="sourceLineNo">204</span><a name="line.204"></a>
-<span class="sourceLineNo">205</span>    int tentativePort = -1; // the seed port<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    int currentClientPort;<a name="line.206"></a>
-<span class="sourceLineNo">207</span><a name="line.207"></a>
-<span class="sourceLineNo">208</span>    // running all the ZK servers<a name="line.208"></a>
-<span class="sourceLineNo">209</span>    for (int i = 0; i &lt; numZooKeeperServers; i++) {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      File dir = new File(baseDir, "zookeeper_"+i).getAbsoluteFile();<a name="line.210"></a>
-<span class="sourceLineNo">211</span>      createDir(dir);<a name="line.211"></a>
-<span class="sourceLineNo">212</span>      int tickTimeToUse;<a name="line.212"></a>
-<span class="sourceLineNo">213</span>      if (this.tickTime &gt; 0) {<a name="line.213"></a>
-<span class="sourceLineNo">214</span>        tickTimeToUse = this.tickTime;<a name="line.214"></a>
-<span class="sourceLineNo">215</span>      } else {<a name="line.215"></a>
-<span class="sourceLineNo">216</span>        tickTimeToUse = TICK_TIME;<a name="line.216"></a>
-<span class="sourceLineNo">217</span>      }<a name="line.217"></a>
-<span class="sourceLineNo">218</span><a name="line.218"></a>
-<span class="sourceLineNo">219</span>      // Set up client port - if we have already had a list of valid ports, use it.<a name="line.219"></a>
-<span class="sourceLineNo">220</span>      if (hasValidClientPortInList(i)) {<a name="line.220"></a>
-<span class="sourceLineNo">221</span>        currentClientPort = clientPortList.get(i);<a name="line.221"></a>
-<span class="sourceLineNo">222</span>      } else {<a name="line.222"></a>
-<span class="sourceLineNo">223</span>        tentativePort = selectClientPort(tentativePort); // update the seed<a name="line.223"></a>
-<span class="sourceLineNo">224</span>        currentClientPort = tentativePort;<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>      ZooKeeperServer server = new ZooKeeperServer(dir, dir, tickTimeToUse);<a name="line.227"></a>
-<span class="sourceLineNo">228</span>      // Setting {min,max}SessionTimeout defaults to be the same as in Zookeeper<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      server.setMinSessionTimeout(configuration.getInt("hbase.zookeeper.property.minSessionTimeout", -1));<a name="line.229"></a>
-<span class="sourceLineNo">230</span>      server.setMaxSessionTimeout(configuration.getInt("hbase.zookeeper.property.maxSessionTimeout", -1));<a name="line.230"></a>
-<span class="sourceLineNo">231</span>      NIOServerCnxnFactory standaloneServerFactory;<a name="line.231"></a>
-<span class="sourceLineNo">232</span>      while (true) {<a name="line.232"></a>
-<span class="sourceLineNo">233</span>        try {<a name="line.233"></a>
-<span class="sourceLineNo">234</span>          standaloneServerFactory = new NIOServerCnxnFactory();<a name="line.234"></a>
-<span class="sourceLineNo">235</span>          standaloneServerFactory.configure(<a name="line.235"></a>
-<span class="sourceLineNo">236</span>            new InetSocketAddress(currentClientPort),<a name="line.236"></a>
-<span class="sourceLineNo">237</span>            configuration.getInt(HConstants.ZOOKEEPER_MAX_CLIENT_CNXNS, HConstants.DEFAULT_ZOOKEPER_MAX_CLIENT_CNXNS));<a name="line.237"></a>
-<span class="sourceLineNo">238</span>        } catch (BindException e) {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>          LOG.debug("Failed binding ZK Server to client port: " +<a name="line.239"></a>
-<span class="sourceLineNo">240</span>              currentClientPort, e);<a name="line.240"></a>
-<span class="sourceLineNo">241</span>          // We're told to use some port but it's occupied, fail<a name="line.241"></a>
-<span class="sourceLineNo">242</span>          if (hasValidClientPortInList(i)) {<a name="line.242"></a>
-<span class="sourceLineNo">243</span>            return -1;<a name="line.243"></a>
-<span class="sourceLineNo">244</span>          }<a name="line.244"></a>
-<span class="sourceLineNo">245</span>          // This port is already in use, try to use another.<a name="line.245"></a>
-<span class="sourceLineNo">246</span>          tentativePort = selectClientPort(tentativePort);<a name="line.246"></a>
-<span class="sourceLineNo">247</span>          currentClientPort = tentativePort;<a name="line.247"></a>
-<span class="sourceLineNo">248</span>          continue;<a name="line.248"></a>
-<span class="sourceLineNo">249</span>        }<a name="line.249"></a>
-<span class="sourceLineNo">250</span>        break;<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>      // Start up this ZK server<a name="line.253"></a>
-<span class="sourceLineNo">254</span>      standaloneServerFactory.startup(server);<a name="line.254"></a>
-<span class="sourceLineNo">255</span>      // Runs a 'stat' against the servers.<a name="line.255"></a>
-<span class="sourceLineNo">256</span>      if (!waitForServerUp(currentClientPort, connectionTimeout)) {<a name="line.256"></a>
-<span class="sourceLineNo">257</span>        throw new IOException("Waiting for startup of standalone server");<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      }<a name="line.258"></a>
-<span class="sourceLineNo">259</span><a name="line.259"></a>
-<span class="sourceLineNo">260</span>      // We have selected a port as a client port.  Update clientPortList if necessary.<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      if (clientPortList.size() &lt;= i) { // it is not in the list, add the port<a name="line.261"></a>
-<span class="sourceLineNo">262</span>        clientPortList.add(currentClientPort);<a name="line.262"></a>
-<span class="sourceLineNo">263</span>      }<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      else if (clientPortList.get(i) &lt;= 0) { // the list has invalid port, update with valid port<a name="line.264"></a>
-<span class="sourceLineNo">265</span>        clientPortList.remove(i);<a name="line.265"></a>
-<span class="sourceLineNo">266</span>        clientPortList.add(i, currentClientPort);<a name="line.266"></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>    setupTestEnv();<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    shutdown();<a name="line.204"></a>
+<span class="sourceLineNo">205</span><a name="line.205"></a>
+<span class="sourceLineNo">206</span>    int tentativePort = -1; // the seed port<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    int currentClientPort;<a name="line.207"></a>
+<span class="sourceLineNo">208</span><a name="line.208"></a>
+<span class="sourceLineNo">209</span>    // running all the ZK servers<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    for (int i = 0; i &lt; numZooKeeperServers; i++) {<a name="line.210"></a>
+<span class="sourceLineNo">211</span>      File dir = new File(baseDir, "zookeeper_"+i).getAbsoluteFile();<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      createDir(dir);<a name="line.212"></a>
+<span class="sourceLineNo">213</span>      int tickTimeToUse;<a name="line.213"></a>
+<span class="sourceLineNo">214</span>      if (this.tickTime &gt; 0) {<a name="line.214"></a>
+<span class="sourceLineNo">215</span>        tickTimeToUse = this.tickTime;<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      } else {<a name="line.216"></a>
+<span class="sourceLineNo">217</span>        tickTimeToUse = TICK_TIME;<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      }<a name="line.218"></a>
+<span class="sourceLineNo">219</span><a name="line.219"></a>
+<span class="sourceLineNo">220</span>      // Set up client port - if we have already had a list of valid ports, use it.<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      if (hasValidClientPortInList(i)) {<a name="line.221"></a>
+<span class="sourceLineNo">222</span>        currentClientPort = clientPortList.get(i);<a name="line.222"></a>
+<span class="sourceLineNo">223</span>      } else {<a name="line.223"></a>
+<span class="sourceLineNo">224</span>        tentativePort = selectClientPort(tentativePort); // update the seed<a name="line.224"></a>
+<span class="sourceLineNo">225</span>        currentClientPort = tentativePort;<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>      ZooKeeperServer server = new ZooKeeperServer(dir, dir, tickTimeToUse);<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      // Setting {min,max}SessionTimeout defaults to be the same as in Zookeeper<a name="line.229"></a>
+<span class="sourceLineNo">230</span>      server.setMinSessionTimeout(configuration.getInt(<a name="line.230"></a>
+<span class="sourceLineNo">231</span>              "hbase.zookeeper.property.minSessionTimeout", -1));<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      server.setMaxSessionTimeout(configuration.getInt(<a name="line.232"></a>
+<span class="sourceLineNo">233</span>              "hbase.zookeeper.property.maxSessionTimeout", -1));<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      NIOServerCnxnFactory standaloneServerFactory;<a name="line.234"></a>
+<span class="sourceLineNo">235</span>      while (true) {<a name="line.235"></a>
+<span class="sourceLineNo">236</span>        try {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>          standaloneServerFactory = new NIOServerCnxnFactory();<a name="line.237"></a>
+<span class="sourceLineNo">238</span>          standaloneServerFactory.configure(<a name="line.238"></a>
+<span class="sourceLineNo">239</span>            new InetSocketAddress(currentClientPort),<a name="line.239"></a>
+<span class="sourceLineNo">240</span>            configuration.getInt(HConstants.ZOOKEEPER_MAX_CLIENT_CNXNS,<a name="line.240"></a>
+<span class="sourceLineNo">241</span>                    HConstants.DEFAULT_ZOOKEPER_MAX_CLIENT_CNXNS));<a name="line.241"></a>
+<span class="sourceLineNo">242</span>        } catch (BindException e) {<a name="line.242"></a>
+<span class="sourceLineNo">243</span>          LOG.debug("Failed binding ZK Server to client port: " +<a name="line.243"></a>
+<span class="sourceLineNo">244</span>              currentClientPort, e);<a name="line.244"></a>
+<span class="sourceLineNo">245</span>          // We're told to use some port but it's occupied, fail<a name="line.245"></a>
+<span class="sourceLineNo">246</span>          if (hasValidClientPortInList(i)) {<a name="line.246"></a>
+<span class="sourceLineNo">247</span>            return -1;<a name="line.247"></a>
+<span class="sourceLineNo">248</span>          }<a name="line.248"></a>
+<span class="sourceLineNo">249</span>          // This port is already in use, try to use another.<a name="line.249"></a>
+<span class="sourceLineNo">250</span>          tentativePort = selectClientPort(tentativePort);<a name="line.250"></a>
+<span class="sourceLineNo">251</span>          currentClientPort = tentativePort;<a name="line.251"></a>
+<span class="sourceLineNo">252</span>          continue;<a name="line.252"></a>
+<span class="sourceLineNo">253</span>        }<a name="line.253"></a>
+<span class="sourceLineNo">254</span>        break;<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>      // Start up this ZK server<a name="line.257"></a>
+<span class="sourceLineNo">258</span>      standaloneServerFactory.startup(server);<a name="line.258"></a>
+<span class="sourceLineNo">259</span>      // Runs a 'stat' against the servers.<a name="line.259"></a>
+<span class="sourceLineNo">260</span>      if (!waitForServerUp(currentClientPort, connectionTimeout)) {<a name="line.260"></a>
+<span class="sourceLineNo">261</span>        throw new IOException("Waiting for startup of standalone server");<a name="line.261"></a>
+<span class="sourceLineNo">262</span>      }<a name="line.262"></a>
+<span class="sourceLineNo">263</span><a name="line.263"></a>
+<span class="sourceLineNo">264</span>      // We have selected a port as a client port.  Update clientPortList if necessary.<a name="line.264"></a>
+<span class="sourceLineNo">265</span>      if (clientPortList.size() &lt;= i) { // it is not in the list, add the port<a name="line.265"></a>
+<span class="sourceLineNo">266</span>        clientPortList.add(currentClientPort);<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>      standaloneServerFactoryList.add(standaloneServerFactory);<a name="line.269"></a>
-<span class="sourceLineNo">270</span>      zooKeeperServers.add(server);<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    }<a name="line.271"></a>
+<span class="sourceLineNo">268</span>      else if (clientPortList.get(i) &lt;= 0) { // the list has invalid port, update with valid port<a name="line.268"></a>
+<span class="sourceLineNo">269</span>        clientPortList.remove(i);<a name="line.269"></a>
+<span class="sourceLineNo">270</span>        clientPortList.add(i, currentClientPort);<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>    // set the first one to be active ZK; Others are backups<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    activeZKServerIndex = 0;<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    started = true;<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    int clientPort = clientPortList.get(activeZKServerIndex);<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    LOG.info("Started MiniZooKeeperCluster and ran successful 'stat' " +<a name="line.277"></a>
-<span class="sourceLineNo">278</span>        "on client port=" + clientPort);<a name="line.278"></a>
-<span class="sourceLineNo">279</span>    return clientPort;<a name="line.279"></a>
-<span class="sourceLineNo">280</span>  }<a name="line.280"></a>
-<span class="sourceLineNo">281</span><a name="line.281"></a>
-<span class="sourceLineNo">282</span>  private void createDir(File dir) throws IOException {<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    try {<a name="line.283"></a>
-<span class="sourceLineNo">284</span>      if (!dir.exists()) {<a name="line.284"></a>
-<span class="sourceLineNo">285</span>        dir.mkdirs();<a name="line.285"></a>
-<span class="sourceLineNo">286</span>      }<a name="line.286"></a>
-<span class="sourceLineNo">287</span>    } catch (SecurityException e) {<a name="line.287"></a>
-<span class="sourceLineNo">288</span>      throw new IOException("creating dir: " + dir, e);<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    }<a name="line.289"></a>
-<span class="sourceLineNo">290</span>  }<a name="line.290"></a>
-<span class="sourceLineNo">291</span><a name="line.291"></a>
-<span class="sourceLineNo">292</span>  /**<a name="line.292"></a>
-<span class="sourceLineNo">293</span>   * @throws IOException<a name="line.293"></a>
-<span class="sourceLineNo">294</span>   */<a name="line.294"></a>
-<span class="sourceLineNo">295</span>  public void shutdown() throws IOException {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    // shut down all the zk servers<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    for (int i = 0; i &lt; standaloneServerFactoryList.size(); i++) {<a name="line.297"></a>
-<span class="sourceLineNo">298</span>      NIOServerCnxnFactory standaloneServerFactory =<a name="line.298"></a>
-<span class="sourceLineNo">299</span>        standaloneServerFactoryList.get(i);<a name="line.299"></a>
-<span class="sourceLineNo">300</span>      int clientPort = clientPortList.get(i);<a name="line.300"></a>
-<span class="sourceLineNo">301</span><a name="line.301"></a>
-<span class="sourceLineNo">302</span>      standaloneServerFactory.shutdown();<a name="line.302"></a>
-<span class="sourceLineNo">303</span>      if (!waitForServerDown(clientPort, connectionTimeout)) {<a name="line.303"></a>
-<span class="sourceLineNo">304</span>        throw new IOException("Waiting for shutdown of standalone server");<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>    standaloneServerFactoryList.clear();<a name="line.307"></a>
-<span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span>    for (ZooKeeperServer zkServer: zooKeeperServers) {<a name="line.309"></a>
-<span class="sourceLineNo">310</span>      //explicitly close ZKDatabase since ZookeeperServer does not close them<a name="line.310"></a>
-<span class="sourceLineNo">311</span>      zkServer.getZKDatabase().close();<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    }<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    zooKeeperServers.clear();<a name="line.313"></a>
-<span class="sourceLineNo">314</span><a name="line.314"></a>
-<span class="sourceLineNo">315</span>    // clear everything<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    if (started) {<a name="line.316"></a>
-<span class="sourceLineNo">317</span>      started = false;<a name="line.317"></a>
-<span class="sourceLineNo">318</span>      activeZKServerIndex = 0;<a name="line.318"></a>
-<span class="sourceLineNo">319</span>      clientPortList.clear();<a name="line.319"></a>
-<span class="sourceLineNo">320</span>      LOG.info("Shutdown MiniZK cluster with all ZK servers");<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><a name="line.323"></a>
-<span class="sourceLineNo">324</span>  /**@return clientPort return clientPort if there is another ZK backup can run<a name="line.324"></a>
-<span class="sourceLineNo">325</span>   *         when killing the current active; return -1, if there is no backups.<a name="line.325"></a>
-<span class="sourceLineNo">326</span>   * @throws IOException<a name="line.326"></a>
-<span class="sourceLineNo">327</span>   * @throws InterruptedException<a name="line.327"></a>
-<span class="sourceLineNo">328</span>   */<a name="line.328"></a>
-<span class="sourceLineNo">329</span>  public int killCurrentActiveZooKeeperServer() throws IOException,<a name="line.329"></a>
-<span class="sourceLineNo">330</span>                                        InterruptedException {<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    if (!started || activeZKServerIndex &lt; 0) {<a name="line.331"></a>
-<span class="sourceLineNo">332</span>      return -1;<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>    // Shutdown the current active one<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    NIOServerCnxnFactory standaloneServerFactory =<a name="line.336"></a>
-<span class="sourceLineNo">337</span>      standaloneServerFactoryList.get(activeZKServerIndex);<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    int clientPort = clientPortList.get(activeZKServerIndex);<a name="line.338"></a>
-<span class="sourceLineNo">339</span><a name="line.339"></a>
-<span class="sourceLineNo">340</span>    standaloneServerFactory.shutdown();<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    if (!waitForServerDown(clientPort, connectionTimeout)) {<a name="line.341"></a>
-<span class="sourceLineNo">342</span>      throw new IOException("Waiting for shutdown of standalone server");<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>    zooKeeperServers.get(activeZKServerIndex).getZKDatabase().close();<a name="line.345"></a>
-<span class="sourceLineNo">346</span><a name="line.346"></a>
-<span class="sourceLineNo">347</span>    // remove the current active zk server<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    standaloneServerFactoryList.remove(activeZKServerIndex);<a name="line.348"></a>
-<span class="sourceLineNo">349</span>    clientPortList.remove(activeZKServerIndex);<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    zooKeeperServers.remove(activeZKServerIndex);<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    LOG.info("Kill the current active ZK servers in the cluster " +<a name="line.351"></a>
-<span class="sourceLineNo">352</span>        "on client port: " + clientPort);<a name="line.352"></a>
-<span class="sourceLineNo">353</span><a name="line.353"></a>
-<span class="sourceLineNo">354</span>    if (standaloneServerFactoryList.isEmpty()) {<a name="line.354"></a>
-<span class="sourceLineNo">355</span>      // there is no backup servers;<a name="line.355"></a>
-<span class="sourceLineNo">356</span>      return -1;<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    }<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    clientPort = clientPortList.get(activeZKServerIndex);<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    LOG.info("Activate a backup zk server in the cluster " +<a name="line.359"></a>
-<span class="sourceLineNo">360</span>        "on client port: " + clientPort);<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    // return the next back zk server's port<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    return clientPort;<a name="line.362"></a>
-<span class="sourceLineNo">363</span>  }<a name="line.363"></a>
-<span class="sourceLineNo">364</span><a name="line.364"></a>
-<span class="sourceLineNo">365</span>  /**<a name="line.365"></a>
-<span class="sourceLineNo">366</span>   * Kill one back up ZK servers<a name="line.366"></a>
-<span class="sourceLineNo">367</span>   * @throws IOException<a name="line.367"></a>
-<span class="sourceLineNo">368</span>   * @throws InterruptedException<a name="line.368"></a>
-<span class="sourceLineNo">369</span>   */<a name="line.369"></a>
-<span class="sourceLineNo">370</span>  public void killOneBackupZooKeeperServer() throws IOException,<a name="line.370"></a>
-<span class="sourceLineNo">371</span>                                        InterruptedException {<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    if (!started || activeZKServerIndex &lt; 0 ||<a name="line.372"></a>
-<span class="sourceLineNo">373</span>        standaloneServerFactoryList.size() &lt;= 1) {<a name="line.373"></a>
-<span class="sourceLineNo">374</span>      return ;<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>    int backupZKServerIndex = activeZKServerIndex+1;<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    // Shutdown the current active one<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    NIOServerCnxnFactory standaloneServerFactory =<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      standaloneServerFactoryList.get(backupZKServerIndex);<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    int clientPort = clientPortList.get(backupZKServerIndex);<a name="line.381"></a>
-<span class="sourceLineNo">382</span><a name="line.382"></a>
-<span class="sourceLineNo">383</span>    standaloneServerFactory.shutdown();<a name="line.383"></a>
-<span class="sourceLineNo">384</span>    if (!waitForServerDown(clientPort, connectionTimeout)) {<a name="line.384"></a>
-<span class="sourceLineNo">385</span>      throw new IOException("Waiting for shutdown of standalone server");<a name="line.385"></a>
-<span class="sourceLineNo">386</span>    }<a name="line.386"></a>
-<span class="sourceLineNo">387</span><a name="line.387"></a>
-<span class="sourceLineNo">388</span>    zooKeeperServers.get(backupZKServerIndex).getZKDatabase().close();<a name="line.388"></a>
-<span class="sourceLineNo">389</span><a name="line.389"></a>
-<span class="sourceLineNo">390</span>    // remove this backup zk server<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    standaloneServerFactoryList.remove(backupZKServerIndex);<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    clientPortList.remove(backupZKServerIndex);<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    zooKeeperServers.remove(backupZKServerIndex);<a name="line.393"></a>
-<span class="sourceLineNo">394</span>    LOG.info("Kill one backup ZK servers in the cluster " +<a name="line.394"></a>
-<span class="sourceLineNo">395</span>        "on client port: " + clientPort);<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>  // XXX: From o.a.zk.t.ClientBase<a name="line.398"></a>
-<span class="sourceLineNo">399</span>  private static boolean waitForServerDown(int port, long timeout) throws IOException {<a name="line.399"></a>
-<span class="sourceLineNo">400</span>    long start = System.currentTimeMillis();<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    while (true) {<a name="line.401"></a>
-<span class="sourceLineNo">402</span>      try {<a name="line.402"></a>
-<span class="sourceLineNo">403</span>        Socket sock = new Socket("localhost", port);<a name="line.403"></a>
-<span class="sourceLineNo">404</span>        try {<a name="line.404"></a>
-<span class="sourceLineNo">405</span>          OutputStream outstream = sock.getOutputStream();<a name="line.405"></a>
-<span class="sourceLineNo">406</span>          outstream.write("stat".getBytes());<a name="line.406"></a>
-<span class="sourceLineNo">407</span>          outstream.flush();<a name="line.407"></a>
-<span class="sourceLineNo">408</span>        } finally {<a name="line.408"></a>
-<span class="sourceLineNo">409</span>          sock.close();<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>        return true;<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>      if (System.currentTimeMillis() &gt; start + timeout) {<a name="line.415"></a>
-<span class="sourceLineNo">416</span>        break;<a name="line.416"></a>
-<span class="sourceLineNo">417</span>      }<a name="line.417"></a>
-<span class="sourceLineNo">418</span>      try {<a name="line.418"></a>
-<span class="sourceLineNo">419</span>        Thread.sleep(250);<a name="line.419"></a>
-<span class="sourceLineNo">420</span>      } catch (InterruptedException e) {<a name="line.420"></a>
-<span class="sourceLineNo">421</span>        throw (InterruptedIOException)new InterruptedIOException().initCause(e);<a name="line.421"></a>
-<span class="sourceLineNo">422</span>      }<a name="line.422"></a>
-<span class="sourceLineNo">423</span>    }<a name="line.423"></a>
-<span class="sourceLineNo">424</span>    return false;<a name="line.424"></a>
-<span class="sourceLineNo">425</span>  }<a name="line.425"></a>
-<span class="sourceLineNo">426</span><a name="line.426"></a>
-<span class="sourceLineNo">427</span>  // XXX: From o.a.zk.t.ClientBase<a name="line.427"></a>
-<span class="sourceLineNo">428</span>  private static boolean waitForServerUp(int port, long timeout) throws IOException {<a name="line.428"></a>
-<span class="sourceLineNo">429</span>    long start = System.currentTimeMillis();<a name="line.429"></a>
-<span class="sourceLineNo">430</span>    while (true) {<a name="line.430"></a>
-<span class="sourceLineNo">431</span>      try {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>        Socket sock = new Socket("localhost", port);<a name="line.432"></a>
-<span class="sourceLineNo">433</span>        BufferedReader reader = null;<a name="line.433"></a>
-<span class="sourceLineNo">434</span>        try {<a name="line.434"></a>
-<span class="sourceLineNo">435</span>          OutputStream outstream = sock.getOutputStream();<a name="line.435"></a>
-<span class="sourceLineNo">436</span>          outstream.write("stat".getBytes());<a name="line.436"></a>
-<span class="sourceLineNo">437</span>          outstream.flush();<a name="line.437"></a>
-<span class="sourceLineNo">438</span><a name="line.438"></a>
-<span class="sourceLineNo">439</span>          Reader isr = new InputStreamReader(sock.getInputStream());<a name="line.439"></a>
-<span class="sourceLineNo">440</span>          reader = new BufferedReader(isr);<a name="line.440"></a>
-<span class="sourceLineNo">441</span>          String line = reader.readLine();<a name="line.441"></a>
-<span class="sourceLineNo">442</span>          if (line != null &amp;&amp; line.startsWith("Zookeeper version:")) {<a name="line.442"></a>
-<span class="sourceLineNo">443</span>            return true;<a name="line.443"></a>
-<span class="sourceLineNo">444</span>          }<a name="line.444"></a>
-<span class="sourceLineNo">445</span>        } finally {<a name="line.445"></a>
-<span class="sourceLineNo">446</span>          sock.close();<a name="line.446"></a>
-<span class="sourceLineNo">447</span>          if (reader != null) {<a name="line.447"></a>
-<span class="sourceLineNo">448</span>            reader.close();<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>      } catch (IOException e) {<a name="line.451"></a>
-<span class="sourceLineNo">452</span>        // ignore as this is expected<a name="line.452"></a>
-<span class="sourceLineNo">453</span>        LOG.info("server localhost:" + port + " not up " + e);<a name="line.453"></a>
-<span class="sourceLineNo">454</span>      }<a name="line.454"></a>
-<span class="sourceLineNo">455</span><a name="line.455"></a>
-<span class="sourceLineNo">456</span>      if (System.currentTimeMillis() &gt; start + timeout) {<a name="line.456"></a>
-<span class="sourceLineNo">457</span>        break;<a name="line.457"></a>
-<span class="sourceLineNo">458</span>      }<a name="line.458"></a>
-<span class="sourceLineNo">459</span>      try {<a name="line.459"></a>
-<span class="sourceLineNo">460</span>        Thread.sleep(250);<a name="line.460"></a>
-<span class="sourceLineNo">461</span>      } catch (InterruptedException e) {<a name="line.461"></a>
-<span class="sourceLineNo">462</span>        throw (InterruptedIOException)new InterruptedIOException().initCause(e);<a name="line.462"></a>
-<span class="sourceLineNo">463</span>      }<a name="line.463"></a>
-<span class="sourceLineNo">464</span>    }<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    return false;<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>  public int getClientPort() {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    return activeZKServerIndex &lt; 0 || activeZKServerIndex &gt;= clientPortList.size() ? -1<a name="line.469"></a>
-<span class="sourceLineNo">470</span>        : clientPortList.get(activeZKServerIndex);<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>  List&lt;ZooKeeperServer&gt; getZooKeeperServers() {<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    return zooKeeperServers;<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">273</span>      standaloneServerFactoryList.add(standaloneServerFactory);<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      zooKeeperServers.add(server);<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>    // set the first one to be active ZK; Others are backups<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    activeZKServerIndex = 0;<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    started = true;<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    int clientPort = clientPortList.get(activeZKServerIndex);<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    LOG.info("Started MiniZooKeeperCluster and ran successful 'stat' " +<a name="line.281"></a>
+<span class="sourceLineNo">282</span>        "on client port=" + clientPort);<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    return clientPort;<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>  private void createDir(File dir) throws IOException {<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    try {<a name="line.287"></a>
+<span class="sourceLineNo">288</span>      if (!dir.exists()) {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>        dir.mkdirs();<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      }<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    } catch (SecurityException e) {<a name="line.291"></a>
+<span class="sourceLineNo">292</span>      throw new IOException("creating dir: " + dir, e);<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>  /**<a name="line.296"></a>
+<span class="sourceLineNo">297</span>   * @throws IOException if waiting for the shutdown of a server fails<a name="line.297"></a>
+<span class="sourceLineNo">298</span>   */<a name="line.298"></a>
+<span class="sourceLineNo">299</span>  public void shutdown() throws IOException {<a name="line.299"></a>
+<span class="sourceLineNo">300</span>    // shut down all the zk servers<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    for (int i = 0; i &lt; standaloneServerFactoryList.size(); i++) {<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      NIOServerCnxnFactory standaloneServerFactory =<a name="line.302"></a>
+<span class="sourceLineNo">303</span>        standaloneServerFactoryList.get(i);<a name="line.303"></a>
+<span class="sourceLineNo">304</span>      int clientPort = clientPortList.get(i);<a name="line.304"></a>
+<span class="sourceLineNo">305</span><a name="line.305"></a>
+<span class="sourceLineNo">306</span>      standaloneServerFactory.shutdown();<a name="line.306"></a>
+<span class="sourceLineNo">307</span>      if (!waitForServerDown(clientPort, connectionTimeout)) {<a name="line.307"></a>
+<span class="sourceLineNo">308</span>        throw new IOException("Waiting for shutdown of standalone server");<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>    standaloneServerFactoryList.clear();<a name="line.311"></a>
+<span class="sourceLineNo">312</span><a name="line.312"></a>
+<span class="sourceLineNo">313</span>    for (ZooKeeperServer zkServer: zooKeeperServers) {<a name="line.313"></a>
+<span class="sourceLineNo">314</span>      //explicitly close ZKDatabase since ZookeeperServer does not close them<a name="line.314"></a>
+<span class="sourceLineNo">315</span>      zkServer.getZKDatabase().close();<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    }<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    zooKeeperServers.clear();<a name="line.317"></a>
+<span class="sourceLineNo">318</span><a name="line.318"></a>
+<span class="sourceLineNo">319</span>    // clear everything<a name="line.319"></a>
+<span class="sourceLineNo">320</span>    if (started) {<a name="line.320"></a>
+<span class="sourceLineNo">321</span>      started = false;<a name="line.321"></a>
+<span class="sourceLineNo">322</span>      activeZKServerIndex = 0;<a name="line.322"></a>
+<span class="sourceLineNo">323</span>      clientPortList.clear();<a name="line.323"></a>
+<span class="sourceLineNo">324</span>      LOG.info("Shutdown MiniZK cluster with all ZK servers");<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    }<a name="line.325"></a>
+<span class="sourceLineNo">326</span>  }<a name="line.326"></a>
+<span class="sourceLineNo">327</span><a name="line.327"></a>
+<span class="sourceLineNo">328</span>  /**<a name="line.328"></a>
+<span class="sourceLineNo">329</span>   * @return clientPort return clientPort if there is another ZK backup can run<a name="line.329"></a>
+<span class="sourceLineNo">330</span>   *         when killing the current active; return -1, if there is no backups.<a name="line.330"></a>
+<span class="sourceLineNo">331</span>   * @throws IOException if waiting for the shutdown of a server fails<a name="line.331"></a>
+<span class="sourceLineNo">332</span>   */<a name="line.332"></a>
+<span class="sourceLineNo">333</span>  public int killCurrentActiveZooKeeperServer() throws IOException, InterruptedException {<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    if (!started || activeZKServerIndex &lt; 0) {<a name="line.334"></a>
+<span class="sourceLineNo">335</span>      return -1;<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    }<a name="line.336"></a>
+<span class="sourceLineNo">337</span><a name="line.337"></a>
+<span class="sourceLineNo">338</span>    // Shutdown the current active one<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    NIOServerCnxnFactory standaloneServerFactory =<a name="line.339"></a>
+<span class="sourceLineNo">340</span>      standaloneServerFactoryList.get(activeZKServerIndex);<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    int clientPort = clientPortList.get(activeZKServerIndex);<a name="line.341"></a>
+<span class="sourceLineNo">342</span><a name="line.342"></a>
+<span class="sourceLineNo">343</span>    standaloneServerFactory.shutdown();<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    if (!waitForServerDown(clientPort, connectionTimeout)) {<a name="line.344"></a>
+<span class="sourceLineNo">345</span>      throw new IOException("Waiting for shutdown of standalone server");<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>    zooKeeperServers.get(activeZKServerIndex).getZKDatabase().close();<a name="line.348"></a>
+<span class="sourceLineNo">349</span><a name="line.349"></a>
+<span class="sourceLineNo">350</span>    // remove the current active zk server<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    standaloneServerFactoryList.remove(activeZKServerIndex);<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    clientPortList.remove(activeZKServerIndex);<a name="line.352"></a>
+<span class="sourceLineNo">353</span>    zooKeeperServers.remove(activeZKServerIndex);<a name="line.353"></a>
+<span class="sourceLineNo">354</span>    LOG.info("Kill the current active ZK servers in the cluster " +<a name="line.354"></a>
+<span class="sourceLineNo">355</span>        "on client port: " + clientPort);<a name="line.355"></a>
+<span class="sourceLineNo">356</span><a name="line.356"></a>
+<span class="sourceLineNo">357</span>    if (standaloneServerFactoryList.isEmpty()) {<a name="line.357"></a>
+<span class="sourceLineNo">358</span>      // there is no backup servers;<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      return -1;<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    }<a name="line.360"></a>
+<span class="sourceLineNo">361</span>    clientPort = clientPortList.get(activeZKServerIndex);<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    LOG.info("Activate a backup zk server in the cluster " +<a name="line.362"></a>
+<span class="sourceLineNo">363</span>        "on client port: " + clientPort);<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    // return the next back zk server's port<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    return clientPort;<a name="line.365"></a>
+<span class="sourceLineNo">366</span>  }<a name="line.366"></a>
+<span class="sourceLineNo">367</span><a name="line.367"></a>
+<span class="sourceLineNo">368</span>  /**<a name="line.368"></a>
+<span class="sourceLineNo">369</span>   * Kill one back up ZK servers.<a name="line.369"></a>
+<span class="sourceLineNo">370</span>   *<a name="line.370"></a>
+<span class="sourceLineNo">371</span>   * @throws IOException if waiting for the shutdown of a server fails<a name="line.371"></a>
+<span class="sourceLineNo">372</span>   */<a name="line.372"></a>
+<span class="sourceLineNo">373</span>  public void killOneBackupZooKeeperServer() throws IOException, InterruptedException {<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    if (!started || activeZKServerIndex &lt; 0 || standaloneServerFactoryList.size() &lt;= 1) {<a name="line.374"></a>
+<span class="sourceLineNo">375</span>      return ;<a name="line.375"></a>
+<span class="sourceLineNo">376</span>    }<a name="line.376"></a>
+<span class="sourceLineNo">377</span><a name="line.377"></a>
+<span class="sourceLineNo">378</span>    int backupZKServerIndex = activeZKServerIndex+1;<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    // Shutdown the current active one<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    NIOServerCnxnFactory standaloneServerFactory =<a name="line.380"></a>
+<span class="sourceLineNo">381</span>      standaloneServerFactoryList.get(backupZKServerIndex);<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    int clientPort = clientPortList.get(backupZKServerIndex);<a name="line.382"></a>
+<span class="sourceLineNo">383</span><a name="line.383"></a>
+<span class="sourceLineNo">384</span>    standaloneServerFactory.shutdown();<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    if (!waitForServerDown(clientPort, connectionTimeout)) {<a name="line.385"></a>
+<span class="sourceLineNo">386</span>      throw new IOException("Waiting for shutdown of standalone server");<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>    zooKeeperServers.get(backupZKServerIndex).getZKDatabase().close();<a name="line.389"></a>
+<span class="sourceLineNo">390</span><a name="line.390"></a>
+<span class="sourceLineNo">391</span>    // remove this backup zk server<a name="line.391"></a>
+<span class="sourceLineNo">392</span>    standaloneServerFactoryList.remove(backupZKServerIndex);<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    clientPortList.remove(backupZKServerIndex);<a name="line.393"></a>
+<span class="sourceLineNo">394</span>    zooKeeperServers.remove(backupZKServerIndex);<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    LOG.info("Kill one backup ZK servers in the cluster " +<a name="line.395"></a>
+<span class="sourceLineNo">396</span>        "on client port: " + clientPort);<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>  // XXX: From o.a.zk.t.ClientBase<a name="line.399"></a>
+<span class="sourceLineNo">400</span>  private static boolean waitForServerDown(int port, long timeout) throws IOException {<a name="line.400"></a>
+<span class="sourceLineNo">401</span>    long start = System.currentTimeMillis();<a name="line.401"></a>
+<span class="sourceLineNo">402</span>    while (true) {<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      try {<a name="line.403"></a>
+<span class="sourceLineNo">404</span>        Socket sock = new Socket("localhost", port);<a name="line.404"></a>
+<span class="sourceLineNo">405</span>        try {<a name="line.405"></a>
+<span class="sourceLineNo">406</span>          OutputStream outstream = sock.getOutputStream();<a name="line.406"></a>
+<span class="sourceLineNo">407</span>          outstream.write("stat".getBytes());<a name="line.407"></a>
+<span class="sourceLineNo">408</span>          outstream.flush();<a name="line.408"></a>
+<span class="sourceLineNo">409</span>        } finally {<a name="line.409"></a>
+<span class="sourceLineNo">410</span>          sock.close();<a name="line.410"></a>
+<span class="sourceLineNo">411</span>        }<a name="line.411"></a>
+<span class="sourceLineNo">412</span>      } catch (IOException e) {<a name="line.412"></a>
+<span class="sourceLineNo">413</span>        return true;<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>      if (System.currentTimeMillis() &gt; start + timeout) {<a name="line.416"></a>
+<span class="sourceLineNo">417</span>        break;<a name="line.417"></a>
+<span class="sourceLineNo">418</span>      }<a name="line.418"></a>
+<span class="sourceLineNo">419</span>      try {<a name="line.419"></a>
+<span class="sourceLineNo">420</span>        Thread.sleep(250);<a name="line.420"></a>
+<span class="sourceLineNo">421</span>      } catch (InterruptedException e) {<a name="line.421"></a>
+<span class="sourceLineNo">422</span>        throw (InterruptedIOException)new InterruptedIOException().initCause(e);<a name="line.422"></a>
+<span class="sourceLineNo">423</span>      }<a name="line.423"></a>
+<span class="sourceLineNo">424</span>    }<a name="line.424"></a>
+<span class="sourceLineNo">425</span>    return false;<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>  // XXX: From o.a.zk.t.ClientBase<a name="line.428"></a>
+<span class="sourceLineNo">429</span>  private static boolean waitForServerUp(int port, long timeout) throws IOException {<a name="line.429"></a>
+<span class="sourceLineNo">430</span>    long start = System.currentTimeMillis();<a name="line.430"></a>
+<span class="sourceLineNo">431</span>    while (true) {<a name="line.431"></a>
+<span class="sourceLineNo">432</span>      try {<a name="line.432"></a>
+<span class="sourceLineNo">433</span>        Socket sock = new Socket("localhost", port);<a name="line.433"></a>
+<span class="sourceLineNo">434</span>        BufferedReader reader = null;<a name="line.434"></a>
+<span class="sourceLineNo">435</span>        try {<a name="line.435"></a>
+<span class="sourceLineNo">436</span>          OutputStream outstream = sock.getOutputStream();<a name="line.436"></a>
+<span class="sourceLineNo">437</span>          outstream.write("stat".getBytes());<a name="line.437"></a>
+<span class="sourceLineNo">438</span>          outstream.flush();<a name="line.438"></a>
+<span class="sourceLineNo">439</span><a name="line.439"></a>
+<span class="sourceLineNo">440</span>          Reader isr = new InputStreamReader(sock.getInputStream());<a name="line.440"></a>
+<span class="sourceLineNo">441</span>          reader = new BufferedReader(isr);<a name="line.441"></a>
+<span class="sourceLineNo">442</span>          String line = reader.readLine();<a name="line.442"></a>
+<span class="sourceLineNo">443</span>          if (line != null &amp;&amp; line.startsWith("Zookeeper version:")) {<a name="line.443"></a>
+<span class="sourceLineNo">444</span>            return true;<a name="line.444"></a>
+<span class="sourceLineNo">445</span>          }<a name="line.445"></a>
+<span class="sourceLineNo">446</span>        } finally {<a name="line.446"></a>
+<span class="sourceLineNo">447</span>          sock.close();<a name="line.447"></a>
+<span class="sourceLineNo">448</span>          if (reader != null) {<a name="line.448"></a>
+<span class="sourceLineNo">449</span>            reader.close();<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>      } catch (IOException e) {<a name="line.452"></a>
+<span class="sourceLineNo">453</span>        // ignore as this is expected<a name="line.453"></a>
+<span class="sourceLineNo">454</span>        LOG.info("server localhost:" + port + " not up " + e);<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>      if (System.currentTimeMillis() &gt; start + timeout) {<a name="line.457"></a>
+<span class="sourceLineNo">458</span>        break;<a name="line.458"></a>
+<span class="sourceLineNo">459</span>      }<a name="line.459"></a>
+<span class="sourceLineNo">460</span>      try {<a name="line.460"></a>
+<span class="sourceLineNo">461</span>        Thread.sleep(250);<a name="line.461"></a>
+<span class="sourceLineNo">462</span>      } catch (InterruptedException e) {<a name="line.462"></a>
+<span class="sourceLineNo">463</span>        throw (InterruptedIOException)new InterruptedIOException().initCause(e);<a name="line.463"></a>
+<span class="sourceLineNo">464</span>      }<a name="line.464"></a>
+<span class="sourceLineNo">465</span>    }<a name="line.465"></a>
+<span class="sourceLineNo">466</span>    return false;<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>  public int getClientPort() {<a name="line.469"></a>
+<span class="sourceLineNo">470</span>    return activeZKServerIndex &lt; 0 || activeZKServerIndex &gt;= clientPortList.size() ? -1<a name="line.470"></a>
+<span class="sourceLineNo">471</span>        : clientPortList.get(activeZKServerIndex);<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>  List&lt;ZooKeeperServer&gt; getZooKeeperServers() {<a name="line.474"></a>
+<span class="sourceLineNo">475</span>    return zooKeeperServers;<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>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/book.html
----------------------------------------------------------------------
diff --git a/book.html b/book.html
index c624cdf..bcfa034 100644
--- a/book.html
+++ b/book.html
@@ -37002,7 +37002,7 @@ The server will return cellblocks compressed using this same compressor as long
 <div id="footer">
 <div id="footer-text">
 Version 3.0.0-SNAPSHOT<br>
-Last updated 2017-12-16 14:29:41 UTC
+Last updated 2017-12-17 14:29:54 UTC
 </div>
 </div>
 </body>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/bulk-loads.html
----------------------------------------------------------------------
diff --git a/bulk-loads.html b/bulk-loads.html
index 075a9c0..cf60ac4 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="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Bulk Loads in Apache HBase (TM)
@@ -311,7 +311,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 


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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKSplitLog.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKSplitLog.html b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKSplitLog.html
index 48f0349..184501f 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKSplitLog.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKSplitLog.html
@@ -38,96 +38,102 @@
 <span class="sourceLineNo">030</span>import org.apache.yetus.audience.InterfaceAudience;<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> * Common methods and attributes used by SplitLogManager and SplitLogWorker running distributed splitting of WAL logs.<a name="line.33"></a>
-<span class="sourceLineNo">034</span> */<a name="line.34"></a>
-<span class="sourceLineNo">035</span>@InterfaceAudience.Private<a name="line.35"></a>
-<span class="sourceLineNo">036</span>public class ZKSplitLog {<a name="line.36"></a>
-<span class="sourceLineNo">037</span>  private static final Log LOG = LogFactory.getLog(ZKSplitLog.class);<a name="line.37"></a>
-<span class="sourceLineNo">038</span><a name="line.38"></a>
-<span class="sourceLineNo">039</span>  /**<a name="line.39"></a>
-<span class="sourceLineNo">040</span>   * Gets the full path node name for the log file being split.<a name="line.40"></a>
-<span class="sourceLineNo">041</span>   * This method will url encode the filename.<a name="line.41"></a>
-<span class="sourceLineNo">042</span>   * @param zkw zk reference<a name="line.42"></a>
-<span class="sourceLineNo">043</span>   * @param filename log file name (only the basename)<a name="line.43"></a>
-<span class="sourceLineNo">044</span>   */<a name="line.44"></a>
-<span class="sourceLineNo">045</span>  public static String getEncodedNodeName(ZKWatcher zkw, String filename) {<a name="line.45"></a>
-<span class="sourceLineNo">046</span>    return ZNodePaths.joinZNode(zkw.znodePaths.splitLogZNode, encode(filename));<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 static String getFileName(String node) {<a name="line.49"></a>
-<span class="sourceLineNo">050</span>    String basename = node.substring(node.lastIndexOf('/') + 1);<a name="line.50"></a>
-<span class="sourceLineNo">051</span>    return decode(basename);<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>  static String encode(String s) {<a name="line.54"></a>
-<span class="sourceLineNo">055</span>    try {<a name="line.55"></a>
-<span class="sourceLineNo">056</span>      return URLEncoder.encode(s, "UTF-8");<a name="line.56"></a>
-<span class="sourceLineNo">057</span>    } catch (UnsupportedEncodingException e) {<a name="line.57"></a>
-<span class="sourceLineNo">058</span>      throw new RuntimeException("URLENCODER doesn't support UTF-8");<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><a name="line.61"></a>
-<span class="sourceLineNo">062</span>  static String decode(String s) {<a name="line.62"></a>
-<span class="sourceLineNo">063</span>    try {<a name="line.63"></a>
-<span class="sourceLineNo">064</span>      return URLDecoder.decode(s, "UTF-8");<a name="line.64"></a>
-<span class="sourceLineNo">065</span>    } catch (UnsupportedEncodingException e) {<a name="line.65"></a>
-<span class="sourceLineNo">066</span>      throw new RuntimeException("URLDecoder doesn't support UTF-8");<a name="line.66"></a>
-<span class="sourceLineNo">067</span>    }<a name="line.67"></a>
-<span class="sourceLineNo">068</span>  }<a name="line.68"></a>
-<span class="sourceLineNo">069</span><a name="line.69"></a>
-<span class="sourceLineNo">070</span>  public static String getRescanNode(ZKWatcher zkw) {<a name="line.70"></a>
-<span class="sourceLineNo">071</span>    return ZNodePaths.joinZNode(zkw.znodePaths.splitLogZNode, "RESCAN");<a name="line.71"></a>
+<span class="sourceLineNo">033</span> * Common methods and attributes used by SplitLogManager and SplitLogWorker running distributed<a name="line.33"></a>
+<span class="sourceLineNo">034</span> * splitting of WAL logs.<a name="line.34"></a>
+<span class="sourceLineNo">035</span> */<a name="line.35"></a>
+<span class="sourceLineNo">036</span>@InterfaceAudience.Private<a name="line.36"></a>
+<span class="sourceLineNo">037</span>public final class ZKSplitLog {<a name="line.37"></a>
+<span class="sourceLineNo">038</span>  private static final Log LOG = LogFactory.getLog(ZKSplitLog.class);<a name="line.38"></a>
+<span class="sourceLineNo">039</span><a name="line.39"></a>
+<span class="sourceLineNo">040</span>  private ZKSplitLog() {<a name="line.40"></a>
+<span class="sourceLineNo">041</span>  }<a name="line.41"></a>
+<span class="sourceLineNo">042</span><a name="line.42"></a>
+<span class="sourceLineNo">043</span>  /**<a name="line.43"></a>
+<span class="sourceLineNo">044</span>   * Gets the full path node name for the log file being split.<a name="line.44"></a>
+<span class="sourceLineNo">045</span>   * This method will url encode the filename.<a name="line.45"></a>
+<span class="sourceLineNo">046</span>   * @param zkw zk reference<a name="line.46"></a>
+<span class="sourceLineNo">047</span>   * @param filename log file name (only the basename)<a name="line.47"></a>
+<span class="sourceLineNo">048</span>   */<a name="line.48"></a>
+<span class="sourceLineNo">049</span>  public static String getEncodedNodeName(ZKWatcher zkw, String filename) {<a name="line.49"></a>
+<span class="sourceLineNo">050</span>    return ZNodePaths.joinZNode(zkw.znodePaths.splitLogZNode, encode(filename));<a name="line.50"></a>
+<span class="sourceLineNo">051</span>  }<a name="line.51"></a>
+<span class="sourceLineNo">052</span><a name="line.52"></a>
+<span class="sourceLineNo">053</span>  public static String getFileName(String node) {<a name="line.53"></a>
+<span class="sourceLineNo">054</span>    String basename = node.substring(node.lastIndexOf('/') + 1);<a name="line.54"></a>
+<span class="sourceLineNo">055</span>    return decode(basename);<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>  static String encode(String s) {<a name="line.58"></a>
+<span class="sourceLineNo">059</span>    try {<a name="line.59"></a>
+<span class="sourceLineNo">060</span>      return URLEncoder.encode(s, "UTF-8");<a name="line.60"></a>
+<span class="sourceLineNo">061</span>    } catch (UnsupportedEncodingException e) {<a name="line.61"></a>
+<span class="sourceLineNo">062</span>      throw new RuntimeException("URLENCODER doesn't support UTF-8");<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><a name="line.65"></a>
+<span class="sourceLineNo">066</span>  static String decode(String s) {<a name="line.66"></a>
+<span class="sourceLineNo">067</span>    try {<a name="line.67"></a>
+<span class="sourceLineNo">068</span>      return URLDecoder.decode(s, "UTF-8");<a name="line.68"></a>
+<span class="sourceLineNo">069</span>    } catch (UnsupportedEncodingException e) {<a name="line.69"></a>
+<span class="sourceLineNo">070</span>      throw new RuntimeException("URLDecoder doesn't support UTF-8");<a name="line.70"></a>
+<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><a name="line.73"></a>
-<span class="sourceLineNo">074</span>  /**<a name="line.74"></a>
-<span class="sourceLineNo">075</span>   * @param name the last part in path<a name="line.75"></a>
-<span class="sourceLineNo">076</span>   * @return whether the node name represents a rescan node<a name="line.76"></a>
-<span class="sourceLineNo">077</span>   */<a name="line.77"></a>
-<span class="sourceLineNo">078</span>  public static boolean isRescanNode(String name) {<a name="line.78"></a>
-<span class="sourceLineNo">079</span>    return name.startsWith("RESCAN");<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>   * @param zkw<a name="line.83"></a>
-<span class="sourceLineNo">084</span>   * @param path the absolute path, starts with '/'<a name="line.84"></a>
-<span class="sourceLineNo">085</span>   * @return whether the path represents a rescan node<a name="line.85"></a>
-<span class="sourceLineNo">086</span>   */<a name="line.86"></a>
-<span class="sourceLineNo">087</span>  public static boolean isRescanNode(ZKWatcher zkw, String path) {<a name="line.87"></a>
-<span class="sourceLineNo">088</span>    String prefix = getRescanNode(zkw);<a name="line.88"></a>
-<span class="sourceLineNo">089</span>    if (path.length() &lt;= prefix.length()) {<a name="line.89"></a>
-<span class="sourceLineNo">090</span>      return false;<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; prefix.length(); i++) {<a name="line.92"></a>
-<span class="sourceLineNo">093</span>      if (prefix.charAt(i) != path.charAt(i)) {<a name="line.93"></a>
-<span class="sourceLineNo">094</span>        return 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>    return true;<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 static Path getSplitLogDir(Path rootdir, String tmpname) {<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    return new Path(new Path(rootdir, HConstants.SPLIT_LOGDIR_NAME), tmpname);<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>  public static void markCorrupted(Path rootdir, String logFileName,<a name="line.104"></a>
-<span class="sourceLineNo">105</span>      FileSystem fs) {<a name="line.105"></a>
-<span class="sourceLineNo">106</span>    Path file = new Path(getSplitLogDir(rootdir, logFileName), "corrupt");<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    try {<a name="line.107"></a>
-<span class="sourceLineNo">108</span>      fs.createNewFile(file);<a name="line.108"></a>
-<span class="sourceLineNo">109</span>    } catch (IOException e) {<a name="line.109"></a>
-<span class="sourceLineNo">110</span>      LOG.warn("Could not flag a log file as corrupted. Failed to create " +<a name="line.110"></a>
-<span class="sourceLineNo">111</span>          file, e);<a name="line.111"></a>
-<span class="sourceLineNo">112</span>    }<a name="line.112"></a>
-<span class="sourceLineNo">113</span>  }<a name="line.113"></a>
-<span class="sourceLineNo">114</span><a name="line.114"></a>
-<span class="sourceLineNo">115</span>  public static boolean isCorrupted(Path rootdir, String logFileName,<a name="line.115"></a>
-<span class="sourceLineNo">116</span>      FileSystem fs) throws IOException {<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    Path file = new Path(getSplitLogDir(rootdir, logFileName), "corrupt");<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    boolean isCorrupt;<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    isCorrupt = fs.exists(file);<a name="line.119"></a>
-<span class="sourceLineNo">120</span>    return isCorrupt;<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">074</span>  public static String getRescanNode(ZKWatcher zkw) {<a name="line.74"></a>
+<span class="sourceLineNo">075</span>    return ZNodePaths.joinZNode(zkw.znodePaths.splitLogZNode, "RESCAN");<a name="line.75"></a>
+<span class="sourceLineNo">076</span>  }<a name="line.76"></a>
+<span class="sourceLineNo">077</span><a name="line.77"></a>
+<span class="sourceLineNo">078</span>  /**<a name="line.78"></a>
+<span class="sourceLineNo">079</span>   * @param name the last part in path<a name="line.79"></a>
+<span class="sourceLineNo">080</span>   * @return whether the node name represents a rescan node<a name="line.80"></a>
+<span class="sourceLineNo">081</span>   */<a name="line.81"></a>
+<span class="sourceLineNo">082</span>  public static boolean isRescanNode(String name) {<a name="line.82"></a>
+<span class="sourceLineNo">083</span>    return name.startsWith("RESCAN");<a name="line.83"></a>
+<span class="sourceLineNo">084</span>  }<a name="line.84"></a>
+<span class="sourceLineNo">085</span><a name="line.85"></a>
+<span class="sourceLineNo">086</span>  /**<a name="line.86"></a>
+<span class="sourceLineNo">087</span>   * Checks if the given path represents a rescan node.<a name="line.87"></a>
+<span class="sourceLineNo">088</span>   *<a name="line.88"></a>
+<span class="sourceLineNo">089</span>   * @param zkw reference to the {@link ZKWatcher} which also contains configuration and constants<a name="line.89"></a>
+<span class="sourceLineNo">090</span>   * @param path the absolute path, starts with '/'<a name="line.90"></a>
+<span class="sourceLineNo">091</span>   * @return whether the path represents a rescan node<a name="line.91"></a>
+<span class="sourceLineNo">092</span>   */<a name="line.92"></a>
+<span class="sourceLineNo">093</span>  public static boolean isRescanNode(ZKWatcher zkw, String path) {<a name="line.93"></a>
+<span class="sourceLineNo">094</span>    String prefix = getRescanNode(zkw);<a name="line.94"></a>
+<span class="sourceLineNo">095</span>    if (path.length() &lt;= prefix.length()) {<a name="line.95"></a>
+<span class="sourceLineNo">096</span>      return false;<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; prefix.length(); i++) {<a name="line.98"></a>
+<span class="sourceLineNo">099</span>      if (prefix.charAt(i) != path.charAt(i)) {<a name="line.99"></a>
+<span class="sourceLineNo">100</span>        return false;<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>    return true;<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>  public static Path getSplitLogDir(Path rootdir, String tmpname) {<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    return new Path(new Path(rootdir, HConstants.SPLIT_LOGDIR_NAME), tmpname);<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>  public static void markCorrupted(Path rootdir, String logFileName,<a name="line.110"></a>
+<span class="sourceLineNo">111</span>      FileSystem fs) {<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    Path file = new Path(getSplitLogDir(rootdir, logFileName), "corrupt");<a name="line.112"></a>
+<span class="sourceLineNo">113</span>    try {<a name="line.113"></a>
+<span class="sourceLineNo">114</span>      fs.createNewFile(file);<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    } catch (IOException e) {<a name="line.115"></a>
+<span class="sourceLineNo">116</span>      LOG.warn("Could not flag a log file as corrupted. Failed to create " +<a name="line.116"></a>
+<span class="sourceLineNo">117</span>          file, e);<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    }<a name="line.118"></a>
+<span class="sourceLineNo">119</span>  }<a name="line.119"></a>
+<span class="sourceLineNo">120</span><a name="line.120"></a>
+<span class="sourceLineNo">121</span>  public static boolean isCorrupted(Path rootdir, String logFileName,<a name="line.121"></a>
+<span class="sourceLineNo">122</span>      FileSystem fs) throws IOException {<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    Path file = new Path(getSplitLogDir(rootdir, logFileName), "corrupt");<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    boolean isCorrupt;<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    isCorrupt = fs.exists(file);<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    return isCorrupt;<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>
 
 
 


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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html
index a3bc449..a0dbad7 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html
@@ -107,535 +107,551 @@
 <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>  /**<a name="line.101"></a>
-<span class="sourceLineNo">102</span>   *<a name="line.102"></a>
-<span class="sourceLineNo">103</span>   * @param zkw<a name="line.103"></a>
-<span class="sourceLineNo">104</span>   * @param replicaId<a name="line.104"></a>
-<span class="sourceLineNo">105</span>   * @return meta table regions and their locations.<a name="line.105"></a>
-<span class="sourceLineNo">106</span>   */<a name="line.106"></a>
-<span class="sourceLineNo">107</span>  public List&lt;Pair&lt;RegionInfo, ServerName&gt;&gt; getMetaRegionsAndLocations(ZKWatcher zkw,<a name="line.107"></a>
-<span class="sourceLineNo">108</span>      int replicaId) {<a name="line.108"></a>
-<span class="sourceLineNo">109</span>    ServerName serverName = getMetaRegionLocation(zkw, replicaId);<a name="line.109"></a>
-<span class="sourceLineNo">110</span>    List&lt;Pair&lt;RegionInfo, ServerName&gt;&gt; list = new ArrayList&lt;&gt;(1);<a name="line.110"></a>
-<span class="sourceLineNo">111</span>    list.add(new Pair&lt;&gt;(RegionReplicaUtil.getRegionInfoForReplica(<a name="line.111"></a>
-<span class="sourceLineNo">112</span>        RegionInfoBuilder.FIRST_META_REGIONINFO, replicaId), serverName));<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    return list;<a name="line.113"></a>
-<span class="sourceLineNo">114</span>  }<a name="line.114"></a>
-<span class="sourceLineNo">115</span><a name="line.115"></a>
-<span class="sourceLineNo">116</span>  /**<a name="line.116"></a>
-<span class="sourceLineNo">117</span>   * @param zkw ZooKeeper watcher to be used<a name="line.117"></a>
-<span class="sourceLineNo">118</span>   * @return List of meta regions<a name="line.118"></a>
-<span class="sourceLineNo">119</span>   */<a name="line.119"></a>
-<span class="sourceLineNo">120</span>  public List&lt;RegionInfo&gt; getMetaRegions(ZKWatcher zkw) {<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    return getMetaRegions(zkw, RegionInfo.DEFAULT_REPLICA_ID);<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>  /**<a name="line.124"></a>
-<span class="sourceLineNo">125</span>   *<a name="line.125"></a>
-<span class="sourceLineNo">126</span>   * @param zkw<a name="line.126"></a>
-<span class="sourceLineNo">127</span>   * @param replicaId<a name="line.127"></a>
-<span class="sourceLineNo">128</span>   * @return List of meta regions<a name="line.128"></a>
-<span class="sourceLineNo">129</span>   */<a name="line.129"></a>
-<span class="sourceLineNo">130</span>  public List&lt;RegionInfo&gt; getMetaRegions(ZKWatcher zkw, int replicaId) {<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    List&lt;Pair&lt;RegionInfo, ServerName&gt;&gt; result;<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    result = getMetaRegionsAndLocations(zkw, replicaId);<a name="line.132"></a>
-<span class="sourceLineNo">133</span>    return getListOfRegionInfos(result);<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 List&lt;RegionInfo&gt; getListOfRegionInfos(<a name="line.136"></a>
-<span class="sourceLineNo">137</span>      final List&lt;Pair&lt;RegionInfo, ServerName&gt;&gt; pairs) {<a name="line.137"></a>
-<span class="sourceLineNo">138</span>    if (pairs == null || pairs.isEmpty()) return Collections.EMPTY_LIST;<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    List&lt;RegionInfo&gt; result = new ArrayList&lt;&gt;(pairs.size());<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    for (Pair&lt;RegionInfo, ServerName&gt; pair: pairs) {<a name="line.140"></a>
-<span class="sourceLineNo">141</span>      result.add(pair.getFirst());<a name="line.141"></a>
-<span class="sourceLineNo">142</span>    }<a name="line.142"></a>
-<span class="sourceLineNo">143</span>    return result;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>  }<a name="line.144"></a>
-<span class="sourceLineNo">145</span><a name="line.145"></a>
-<span class="sourceLineNo">146</span>  /**<a name="line.146"></a>
-<span class="sourceLineNo">147</span>   * Gets the meta region location, if available.  Does not block.<a name="line.147"></a>
-<span class="sourceLineNo">148</span>   * @param zkw zookeeper connection to use<a name="line.148"></a>
-<span class="sourceLineNo">149</span>   * @return server name or null if we failed to get the data.<a name="line.149"></a>
-<span class="sourceLineNo">150</span>   */<a name="line.150"></a>
-<span class="sourceLineNo">151</span>  public ServerName getMetaRegionLocation(final ZKWatcher zkw) {<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    try {<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      RegionState state = getMetaRegionState(zkw);<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      return state.isOpened() ? state.getServerName() : null;<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    } catch (KeeperException ke) {<a name="line.155"></a>
-<span class="sourceLineNo">156</span>      return null;<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    }<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>  /**<a name="line.160"></a>
-<span class="sourceLineNo">161</span>   * Gets the meta region location, if available.  Does not block.<a name="line.161"></a>
-<span class="sourceLineNo">162</span>   * @param zkw<a name="line.162"></a>
-<span class="sourceLineNo">163</span>   * @param replicaId<a name="line.163"></a>
-<span class="sourceLineNo">164</span>   * @return server name<a name="line.164"></a>
-<span class="sourceLineNo">165</span>   */<a name="line.165"></a>
-<span class="sourceLineNo">166</span>  public ServerName getMetaRegionLocation(final ZKWatcher zkw, int replicaId) {<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    try {<a name="line.167"></a>
-<span class="sourceLineNo">168</span>      RegionState state = getMetaRegionState(zkw, replicaId);<a name="line.168"></a>
-<span class="sourceLineNo">169</span>      return state.isOpened() ? state.getServerName() : null;<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    } catch (KeeperException ke) {<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      return null;<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    }<a name="line.172"></a>
-<span class="sourceLineNo">173</span>  }<a name="line.173"></a>
-<span class="sourceLineNo">174</span><a name="line.174"></a>
-<span class="sourceLineNo">175</span>  /**<a name="line.175"></a>
-<span class="sourceLineNo">176</span>   * Gets the meta region location, if available, and waits for up to the<a name="line.176"></a>
-<span class="sourceLineNo">177</span>   * specified timeout if not immediately available.<a name="line.177"></a>
-<span class="sourceLineNo">178</span>   * Given the zookeeper notification could be delayed, we will try to<a name="line.178"></a>
-<span class="sourceLineNo">179</span>   * get the latest data.<a name="line.179"></a>
-<span class="sourceLineNo">180</span>   * @param zkw<a name="line.180"></a>
-<span class="sourceLineNo">181</span>   * @param timeout maximum time to wait, in millis<a name="line.181"></a>
-<span class="sourceLineNo">182</span>   * @return server name for server hosting meta region formatted as per<a name="line.182"></a>
-<span class="sourceLineNo">183</span>   * {@link ServerName}, or null if none available<a name="line.183"></a>
-<span class="sourceLineNo">184</span>   * @throws InterruptedException if interrupted while waiting<a name="line.184"></a>
-<span class="sourceLineNo">185</span>   * @throws NotAllMetaRegionsOnlineException<a name="line.185"></a>
-<span class="sourceLineNo">186</span>   */<a name="line.186"></a>
-<span class="sourceLineNo">187</span>  public ServerName waitMetaRegionLocation(ZKWatcher zkw, long timeout)<a name="line.187"></a>
-<span class="sourceLineNo">188</span>  throws InterruptedException, NotAllMetaRegionsOnlineException {<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    return waitMetaRegionLocation(zkw, RegionInfo.DEFAULT_REPLICA_ID, timeout);<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>   * Gets the meta region location, if available, and waits for up to the<a name="line.193"></a>
-<span class="sourceLineNo">194</span>   * specified timeout if not immediately available.<a name="line.194"></a>
-<span class="sourceLineNo">195</span>   * Given the zookeeper notification could be delayed, we will try to<a name="line.195"></a>
-<span class="sourceLineNo">196</span>   * get the latest data.<a name="line.196"></a>
-<span class="sourceLineNo">197</span>   * @param zkw<a name="line.197"></a>
-<span class="sourceLineNo">198</span>   * @param replicaId<a name="line.198"></a>
-<span class="sourceLineNo">199</span>   * @param timeout maximum time to wait, in millis<a name="line.199"></a>
-<span class="sourceLineNo">200</span>   * @return server name for server hosting meta region formatted as per<a name="line.200"></a>
-<span class="sourceLineNo">201</span>   * {@link ServerName}, or null if none available<a name="line.201"></a>
-<span class="sourceLineNo">202</span>   * @throws InterruptedException<a name="line.202"></a>
-<span class="sourceLineNo">203</span>   * @throws NotAllMetaRegionsOnlineException<a name="line.203"></a>
-<span class="sourceLineNo">204</span>   */<a name="line.204"></a>
-<span class="sourceLineNo">205</span>  public ServerName waitMetaRegionLocation(ZKWatcher zkw, int replicaId, long timeout)<a name="line.205"></a>
-<span class="sourceLineNo">206</span>  throws InterruptedException, NotAllMetaRegionsOnlineException {<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    try {<a name="line.207"></a>
-<span class="sourceLineNo">208</span>      if (ZKUtil.checkExists(zkw, zkw.znodePaths.baseZNode) == -1) {<a name="line.208"></a>
-<span class="sourceLineNo">209</span>        String errorMsg = "Check the value configured in 'zookeeper.znode.parent'. "<a name="line.209"></a>
-<span class="sourceLineNo">210</span>            + "There could be a mismatch with the one configured in the master.";<a name="line.210"></a>
-<span class="sourceLineNo">211</span>        LOG.error(errorMsg);<a name="line.211"></a>
-<span class="sourceLineNo">212</span>        throw new IllegalArgumentException(errorMsg);<a name="line.212"></a>
-<span class="sourceLineNo">213</span>      }<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    } catch (KeeperException e) {<a name="line.214"></a>
-<span class="sourceLineNo">215</span>      throw new IllegalStateException("KeeperException while trying to check baseZNode:", e);<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    }<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    ServerName sn = blockUntilAvailable(zkw, replicaId, timeout);<a name="line.217"></a>
-<span class="sourceLineNo">218</span><a name="line.218"></a>
-<span class="sourceLineNo">219</span>    if (sn == null) {<a name="line.219"></a>
-<span class="sourceLineNo">220</span>      throw new NotAllMetaRegionsOnlineException("Timed out; " + timeout + "ms");<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>    return sn;<a name="line.223"></a>
-<span class="sourceLineNo">224</span>  }<a name="line.224"></a>
+<span class="sourceLineNo">102</span>   * Gets the meta regions and their locations for the given path and replica ID.<a name="line.102"></a>
+<span class="sourceLineNo">103</span>   *<a name="line.103"></a>
+<span class="sourceLineNo">104</span>   * @param zkw reference to the {@link ZKWatcher} which also contains configuration and operation<a name="line.104"></a>
+<span class="sourceLineNo">105</span>   * @param replicaId the ID of the replica<a name="line.105"></a>
+<span class="sourceLineNo">106</span>   * @return meta table regions and their locations.<a name="line.106"></a>
+<span class="sourceLineNo">107</span>   */<a name="line.107"></a>
+<span class="sourceLineNo">108</span>  public List&lt;Pair&lt;RegionInfo, ServerName&gt;&gt; getMetaRegionsAndLocations(ZKWatcher zkw,<a name="line.108"></a>
+<span class="sourceLineNo">109</span>      int replicaId) {<a name="line.109"></a>
+<span class="sourceLineNo">110</span>    ServerName serverName = getMetaRegionLocation(zkw, replicaId);<a name="line.110"></a>
+<span class="sourceLineNo">111</span>    List&lt;Pair&lt;RegionInfo, ServerName&gt;&gt; list = new ArrayList&lt;&gt;(1);<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    list.add(new Pair&lt;&gt;(RegionReplicaUtil.getRegionInfoForReplica(<a name="line.112"></a>
+<span class="sourceLineNo">113</span>        RegionInfoBuilder.FIRST_META_REGIONINFO, replicaId), serverName));<a name="line.113"></a>
+<span class="sourceLineNo">114</span>    return list;<a name="line.114"></a>
+<span class="sourceLineNo">115</span>  }<a name="line.115"></a>
+<span class="sourceLineNo">116</span><a name="line.116"></a>
+<span class="sourceLineNo">117</span>  /**<a name="line.117"></a>
+<span class="sourceLineNo">118</span>   * Gets the meta regions for the given path with the default replica ID.<a name="line.118"></a>
+<span class="sourceLineNo">119</span>   *<a name="line.119"></a>
+<span class="sourceLineNo">120</span>   * @param zkw ZooKeeper watcher to be used<a name="line.120"></a>
+<span class="sourceLineNo">121</span>   * @return List of meta regions<a name="line.121"></a>
+<span class="sourceLineNo">122</span>   */<a name="line.122"></a>
+<span class="sourceLineNo">123</span>  public List&lt;RegionInfo&gt; getMetaRegions(ZKWatcher zkw) {<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    return getMetaRegions(zkw, RegionInfo.DEFAULT_REPLICA_ID);<a name="line.124"></a>
+<span class="sourceLineNo">125</span>  }<a name="line.125"></a>
+<span class="sourceLineNo">126</span><a name="line.126"></a>
+<span class="sourceLineNo">127</span>  /**<a name="line.127"></a>
+<span class="sourceLineNo">128</span>   * Gets the meta regions for the given path and replica ID.<a name="line.128"></a>
+<span class="sourceLineNo">129</span>   *<a name="line.129"></a>
+<span class="sourceLineNo">130</span>   * @param zkw reference to the {@link ZKWatcher} which also contains configuration and operation<a name="line.130"></a>
+<span class="sourceLineNo">131</span>   * @param replicaId the ID of the replica<a name="line.131"></a>
+<span class="sourceLineNo">132</span>   * @return List of meta regions<a name="line.132"></a>
+<span class="sourceLineNo">133</span>   */<a name="line.133"></a>
+<span class="sourceLineNo">134</span>  public List&lt;RegionInfo&gt; getMetaRegions(ZKWatcher zkw, int replicaId) {<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    List&lt;Pair&lt;RegionInfo, ServerName&gt;&gt; result;<a name="line.135"></a>
+<span class="sourceLineNo">136</span>    result = getMetaRegionsAndLocations(zkw, replicaId);<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    return getListOfRegionInfos(result);<a name="line.137"></a>
+<span class="sourceLineNo">138</span>  }<a name="line.138"></a>
+<span class="sourceLineNo">139</span><a name="line.139"></a>
+<span class="sourceLineNo">140</span>  private List&lt;RegionInfo&gt; getListOfRegionInfos(final List&lt;Pair&lt;RegionInfo, ServerName&gt;&gt; pairs) {<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    if (pairs == null || pairs.isEmpty()) {<a name="line.141"></a>
+<span class="sourceLineNo">142</span>      return Collections.EMPTY_LIST;<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>    List&lt;RegionInfo&gt; result = new ArrayList&lt;&gt;(pairs.size());<a name="line.145"></a>
+<span class="sourceLineNo">146</span>    for (Pair&lt;RegionInfo, ServerName&gt; pair: pairs) {<a name="line.146"></a>
+<span class="sourceLineNo">147</span>      result.add(pair.getFirst());<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    }<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    return result;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>  }<a name="line.150"></a>
+<span class="sourceLineNo">151</span><a name="line.151"></a>
+<span class="sourceLineNo">152</span>  /**<a name="line.152"></a>
+<span class="sourceLineNo">153</span>   * Gets the meta region location, if available.  Does not block.<a name="line.153"></a>
+<span class="sourceLineNo">154</span>   * @param zkw zookeeper connection to use<a name="line.154"></a>
+<span class="sourceLineNo">155</span>   * @return server name or null if we failed to get the data.<a name="line.155"></a>
+<span class="sourceLineNo">156</span>   */<a name="line.156"></a>
+<span class="sourceLineNo">157</span>  public ServerName getMetaRegionLocation(final ZKWatcher zkw) {<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    try {<a name="line.158"></a>
+<span class="sourceLineNo">159</span>      RegionState state = getMetaRegionState(zkw);<a name="line.159"></a>
+<span class="sourceLineNo">160</span>      return state.isOpened() ? state.getServerName() : null;<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    } catch (KeeperException ke) {<a name="line.161"></a>
+<span class="sourceLineNo">162</span>      return null;<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    }<a name="line.163"></a>
+<span class="sourceLineNo">164</span>  }<a name="line.164"></a>
+<span class="sourceLineNo">165</span><a name="line.165"></a>
+<span class="sourceLineNo">166</span>  /**<a name="line.166"></a>
+<span class="sourceLineNo">167</span>   * Gets the meta region location, if available.  Does not block.<a name="line.167"></a>
+<span class="sourceLineNo">168</span>   * @param zkw reference to the {@link ZKWatcher} which also contains configuration and operation<a name="line.168"></a>
+<span class="sourceLineNo">169</span>   * @param replicaId the ID of the replica<a name="line.169"></a>
+<span class="sourceLineNo">170</span>   * @return server name<a name="line.170"></a>
+<span class="sourceLineNo">171</span>   */<a name="line.171"></a>
+<span class="sourceLineNo">172</span>  public ServerName getMetaRegionLocation(final ZKWatcher zkw, int replicaId) {<a name="line.172"></a>
+<span class="sourceLineNo">173</span>    try {<a name="line.173"></a>
+<span class="sourceLineNo">174</span>      RegionState state = getMetaRegionState(zkw, replicaId);<a name="line.174"></a>
+<span class="sourceLineNo">175</span>      return state.isOpened() ? state.getServerName() : null;<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    } catch (KeeperException ke) {<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      return null;<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><a name="line.180"></a>
+<span class="sourceLineNo">181</span>  /**<a name="line.181"></a>
+<span class="sourceLineNo">182</span>   * Gets the meta region location, if available, and waits for up to the<a name="line.182"></a>
+<span class="sourceLineNo">183</span>   * specified timeout if not immediately available.<a name="line.183"></a>
+<span class="sourceLineNo">184</span>   * Given the zookeeper notification could be delayed, we will try to<a name="line.184"></a>
+<span class="sourceLineNo">185</span>   * get the latest data.<a name="line.185"></a>
+<span class="sourceLineNo">186</span>   *<a name="line.186"></a>
+<span class="sourceLineNo">187</span>   * @param zkw reference to the {@link ZKWatcher} which also contains configuration and operation<a name="line.187"></a>
+<span class="sourceLineNo">188</span>   * @param timeout maximum time to wait, in millis<a name="line.188"></a>
+<span class="sourceLineNo">189</span>   * @return server name for server hosting meta region formatted as per<a name="line.189"></a>
+<span class="sourceLineNo">190</span>   * {@link ServerName}, or null if none available<a name="line.190"></a>
+<span class="sourceLineNo">191</span>   * @throws InterruptedException if interrupted while waiting<a name="line.191"></a>
+<span class="sourceLineNo">192</span>   * @throws NotAllMetaRegionsOnlineException if a meta or root region is not online<a name="line.192"></a>
+<span class="sourceLineNo">193</span>   */<a name="line.193"></a>
+<span class="sourceLineNo">194</span>  public ServerName waitMetaRegionLocation(ZKWatcher zkw, long timeout)<a name="line.194"></a>
+<span class="sourceLineNo">195</span>  throws InterruptedException, NotAllMetaRegionsOnlineException {<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    return waitMetaRegionLocation(zkw, RegionInfo.DEFAULT_REPLICA_ID, timeout);<a name="line.196"></a>
+<span class="sourceLineNo">197</span>  }<a name="line.197"></a>
+<span class="sourceLineNo">198</span><a name="line.198"></a>
+<span class="sourceLineNo">199</span>  /**<a name="line.199"></a>
+<span class="sourceLineNo">200</span>   * Gets the meta region location, if available, and waits for up to the specified timeout if not<a name="line.200"></a>
+<span class="sourceLineNo">201</span>   * immediately available. Given the zookeeper notification could be delayed, we will try to<a name="line.201"></a>
+<span class="sourceLineNo">202</span>   * get the latest data.<a name="line.202"></a>
+<span class="sourceLineNo">203</span>   *<a name="line.203"></a>
+<span class="sourceLineNo">204</span>   * @param zkw reference to the {@link ZKWatcher} which also contains configuration and operation<a name="line.204"></a>
+<span class="sourceLineNo">205</span>   * @param replicaId the ID of the replica<a name="line.205"></a>
+<span class="sourceLineNo">206</span>   * @param timeout maximum time to wait, in millis<a name="line.206"></a>
+<span class="sourceLineNo">207</span>   * @return server name for server hosting meta region formatted as per<a name="line.207"></a>
+<span class="sourceLineNo">208</span>   * {@link ServerName}, or null if none available<a name="line.208"></a>
+<span class="sourceLineNo">209</span>   * @throws InterruptedException if waiting for the socket operation fails<a name="line.209"></a>
+<span class="sourceLineNo">210</span>   * @throws NotAllMetaRegionsOnlineException if a meta or root region is not online<a name="line.210"></a>
+<span class="sourceLineNo">211</span>   */<a name="line.211"></a>
+<span class="sourceLineNo">212</span>  public ServerName waitMetaRegionLocation(ZKWatcher zkw, int replicaId, long timeout)<a name="line.212"></a>
+<span class="sourceLineNo">213</span>  throws InterruptedException, NotAllMetaRegionsOnlineException {<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    try {<a name="line.214"></a>
+<span class="sourceLineNo">215</span>      if (ZKUtil.checkExists(zkw, zkw.znodePaths.baseZNode) == -1) {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>        String errorMsg = "Check the value configured in 'zookeeper.znode.parent'. "<a name="line.216"></a>
+<span class="sourceLineNo">217</span>            + "There could be a mismatch with the one configured in the master.";<a name="line.217"></a>
+<span class="sourceLineNo">218</span>        LOG.error(errorMsg);<a name="line.218"></a>
+<span class="sourceLineNo">219</span>        throw new IllegalArgumentException(errorMsg);<a name="line.219"></a>
+<span class="sourceLineNo">220</span>      }<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    } catch (KeeperException e) {<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      throw new IllegalStateException("KeeperException while trying to check baseZNode:", e);<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    }<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    ServerName sn = blockUntilAvailable(zkw, replicaId, timeout);<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>   * Waits indefinitely for availability of &lt;code&gt;hbase:meta&lt;/code&gt;.  Used during<a name="line.227"></a>
-<span class="sourceLineNo">228</span>   * cluster startup.  Does not verify meta, just that something has been<a name="line.228"></a>
-<span class="sourceLineNo">229</span>   * set up in zk.<a name="line.229"></a>
-<span class="sourceLineNo">230</span>   * @see #waitMetaRegionLocation(ZKWatcher, long)<a name="line.230"></a>
-<span class="sourceLineNo">231</span>   * @throws InterruptedException if interrupted while waiting<a name="line.231"></a>
-<span class="sourceLineNo">232</span>   */<a name="line.232"></a>
-<span class="sourceLineNo">233</span>  public void waitMetaRegionLocation(ZKWatcher zkw) throws InterruptedException {<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    long startTime = System.currentTimeMillis();<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    while (!stopped) {<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      try {<a name="line.236"></a>
-<span class="sourceLineNo">237</span>        if (waitMetaRegionLocation(zkw, 100) != null) break;<a name="line.237"></a>
-<span class="sourceLineNo">238</span>        long sleepTime = System.currentTimeMillis() - startTime;<a name="line.238"></a>
-<span class="sourceLineNo">239</span>        // +1 in case sleepTime=0<a name="line.239"></a>
-<span class="sourceLineNo">240</span>        if ((sleepTime + 1) % 10000 == 0) {<a name="line.240"></a>
-<span class="sourceLineNo">241</span>          LOG.warn("Have been waiting for meta to be assigned for " + sleepTime + "ms");<a name="line.241"></a>
-<span class="sourceLineNo">242</span>        }<a name="line.242"></a>
-<span class="sourceLineNo">243</span>      } catch (NotAllMetaRegionsOnlineException e) {<a name="line.243"></a>
-<span class="sourceLineNo">244</span>        if (LOG.isTraceEnabled()) {<a name="line.244"></a>
-<span class="sourceLineNo">245</span>          LOG.trace("hbase:meta still not available, sleeping and retrying." +<a name="line.245"></a>
-<span class="sourceLineNo">246</span>            " Reason: " + e.getMessage());<a name="line.246"></a>
-<span class="sourceLineNo">247</span>        }<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      }<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    }<a name="line.249"></a>
-<span class="sourceLineNo">250</span>  }<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>   * Verify &lt;code&gt;hbase:meta&lt;/code&gt; is deployed and accessible.<a name="line.253"></a>
-<span class="sourceLineNo">254</span>   * @param hConnection<a name="line.254"></a>
-<span class="sourceLineNo">255</span>   * @param zkw<a name="line.255"></a>
-<span class="sourceLineNo">256</span>   * @param timeout How long to wait on zk for meta address (passed through to<a name="line.256"></a>
-<span class="sourceLineNo">257</span>   * the internal call to {@link #getMetaServerConnection}.<a name="line.257"></a>
-<span class="sourceLineNo">258</span>   * @return True if the &lt;code&gt;hbase:meta&lt;/code&gt; location is healthy.<a name="line.258"></a>
-<span class="sourceLineNo">259</span>   * @throws java.io.IOException<a name="line.259"></a>
-<span class="sourceLineNo">260</span>   * @throws InterruptedException<a name="line.260"></a>
-<span class="sourceLineNo">261</span>   */<a name="line.261"></a>
-<span class="sourceLineNo">262</span>  public boolean verifyMetaRegionLocation(ClusterConnection hConnection,<a name="line.262"></a>
-<span class="sourceLineNo">263</span>                                          ZKWatcher zkw, final long timeout)<a name="line.263"></a>
-<span class="sourceLineNo">264</span>  throws InterruptedException, IOException {<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    return verifyMetaRegionLocation(hConnection, zkw, timeout, RegionInfo.DEFAULT_REPLICA_ID);<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>   * Verify &lt;code&gt;hbase:meta&lt;/code&gt; is deployed and accessible.<a name="line.269"></a>
-<span class="sourceLineNo">270</span>   * @param connection<a name="line.270"></a>
-<span class="sourceLineNo">271</span>   * @param zkw<a name="line.271"></a>
-<span class="sourceLineNo">272</span>   * @param timeout How long to wait on zk for meta address (passed through to<a name="line.272"></a>
-<span class="sourceLineNo">273</span>   * @param replicaId<a name="line.273"></a>
-<span class="sourceLineNo">274</span>   * @return True if the &lt;code&gt;hbase:meta&lt;/code&gt; location is healthy.<a name="line.274"></a>
-<span class="sourceLineNo">275</span>   * @throws InterruptedException<a name="line.275"></a>
-<span class="sourceLineNo">276</span>   * @throws IOException<a name="line.276"></a>
-<span class="sourceLineNo">277</span>   */<a name="line.277"></a>
-<span class="sourceLineNo">278</span>  public boolean verifyMetaRegionLocation(ClusterConnection connection,<a name="line.278"></a>
-<span class="sourceLineNo">279</span>                                          ZKWatcher zkw, final long timeout, int replicaId)<a name="line.279"></a>
-<span class="sourceLineNo">280</span>  throws InterruptedException, IOException {<a name="line.280"></a>
-<span class="sourceLineNo">281</span>    AdminProtos.AdminService.BlockingInterface service = null;<a name="line.281"></a>
-<span class="sourceLineNo">282</span>    try {<a name="line.282"></a>
-<span class="sourceLineNo">283</span>      service = getMetaServerConnection(connection, zkw, timeout, replicaId);<a name="line.283"></a>
-<span class="sourceLineNo">284</span>    } catch (NotAllMetaRegionsOnlineException e) {<a name="line.284"></a>
-<span class="sourceLineNo">285</span>      // Pass<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    } catch (ServerNotRunningYetException e) {<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      // Pass -- remote server is not up so can't be carrying root<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    } catch (UnknownHostException e) {<a name="line.288"></a>
-<span class="sourceLineNo">289</span>      // Pass -- server name doesn't resolve so it can't be assigned anything.<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    } catch (RegionServerStoppedException e) {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>      // Pass -- server name sends us to a server that is dying or already dead.<a name="line.291"></a>
-<span class="sourceLineNo">292</span>    }<a name="line.292"></a>
-<span class="sourceLineNo">293</span>    return (service != null) &amp;&amp; verifyRegionLocation(connection, service,<a name="line.293"></a>
-<span class="sourceLineNo">294</span>            getMetaRegionLocation(zkw, replicaId), RegionReplicaUtil.getRegionInfoForReplica(<a name="line.294"></a>
-<span class="sourceLineNo">295</span>                RegionInfoBuilder.FIRST_META_REGIONINFO, replicaId).getRegionName());<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>   * Verify we can connect to &lt;code&gt;hostingServer&lt;/code&gt; and that its carrying<a name="line.299"></a>
-<span class="sourceLineNo">300</span>   * &lt;code&gt;regionName&lt;/code&gt;.<a name="line.300"></a>
-<span class="sourceLineNo">301</span>   * @param hostingServer Interface to the server hosting &lt;code&gt;regionName&lt;/code&gt;<a name="line.301"></a>
-<span class="sourceLineNo">302</span>   * @param address The servername that goes with the &lt;code&gt;metaServer&lt;/code&gt;<a name="line.302"></a>
-<span class="sourceLineNo">303</span>   * Interface.  Used logging.<a name="line.303"></a>
-<span class="sourceLineNo">304</span>   * @param regionName The regionname we are interested in.<a name="line.304"></a>
-<span class="sourceLineNo">305</span>   * @return True if we were able to verify the region located at other side of<a name="line.305"></a>
-<span class="sourceLineNo">306</span>   * the Interface.<a name="line.306"></a>
-<span class="sourceLineNo">307</span>   * @throws IOException<a name="line.307"></a>
-<span class="sourceLineNo">308</span>   */<a name="line.308"></a>
-<span class="sourceLineNo">309</span>  // TODO: We should be able to get the ServerName from the AdminProtocol<a name="line.309"></a>
-<span class="sourceLineNo">310</span>  // rather than have to pass it in.  Its made awkward by the fact that the<a name="line.310"></a>
-<span class="sourceLineNo">311</span>  // HRI is likely a proxy against remote server so the getServerName needs<a name="line.311"></a>
-<span class="sourceLineNo">312</span>  // to be fixed to go to a local method or to a cache before we can do this.<a name="line.312"></a>
-<span class="sourceLineNo">313</span>  private boolean verifyRegionLocation(final ClusterConnection connection,<a name="line.313"></a>
-<span class="sourceLineNo">314</span>      AdminService.BlockingInterface hostingServer, final ServerName address,<a name="line.314"></a>
-<span class="sourceLineNo">315</span>      final byte [] regionName)<a name="line.315"></a>
-<span class="sourceLineNo">316</span>  throws IOException {<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    if (hostingServer == null) {<a name="line.317"></a>
-<span class="sourceLineNo">318</span>      LOG.info("Passed hostingServer is null");<a name="line.318"></a>
-<span class="sourceLineNo">319</span>      return false;<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    }<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    Throwable t;<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    HBaseRpcController controller = connection.getRpcControllerFactory().newController();<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    try {<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      // Try and get regioninfo from the hosting server.<a name="line.324"></a>
-<span class="sourceLineNo">325</span>      return ProtobufUtil.getRegionInfo(controller, hostingServer, regionName) != null;<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    } catch (ConnectException e) {<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      t = e;<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    } catch (RetriesExhaustedException e) {<a name="line.328"></a>
-<span class="sourceLineNo">329</span>      t = e;<a name="line.329"></a>
-<span class="sourceLineNo">330</span>    } catch (RemoteException e) {<a name="line.330"></a>
-<span class="sourceLineNo">331</span>      IOException ioe = e.unwrapRemoteException();<a name="line.331"></a>
-<span class="sourceLineNo">332</span>      t = ioe;<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    } catch (IOException e) {<a name="line.333"></a>
-<span class="sourceLineNo">334</span>      Throwable cause = e.getCause();<a name="line.334"></a>
-<span class="sourceLineNo">335</span>      if (cause != null &amp;&amp; cause instanceof EOFException) {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>        t = cause;<a name="line.336"></a>
-<span class="sourceLineNo">337</span>      } else if (cause != null &amp;&amp; cause.getMessage() != null<a name="line.337"></a>
-<span class="sourceLineNo">338</span>          &amp;&amp; cause.getMessage().contains("Connection reset")) {<a name="line.338"></a>
-<span class="sourceLineNo">339</span>        t = cause;<a name="line.339"></a>
-<span class="sourceLineNo">340</span>      } else {<a name="line.340"></a>
-<span class="sourceLineNo">341</span>        t = e;<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>    LOG.info("Failed verification of " + Bytes.toStringBinary(regionName) +<a name="line.344"></a>
-<span class="sourceLineNo">345</span>      " at address=" + address + ", exception=" + t.getMessage());<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    return false;<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>   * Gets a connection to the server hosting meta, as reported by ZooKeeper,<a name="line.350"></a>
-<span class="sourceLineNo">351</span>   * waiting up to the specified timeout for availability.<a name="line.351"></a>
-<span class="sourceLineNo">352</span>   * &lt;p&gt;WARNING: Does not retry.  Use an {@link org.apache.hadoop.hbase.client.HTable} instead.<a name="line.352"></a>
-<span class="sourceLineNo">353</span>   * @param connection<a name="line.353"></a>
-<span class="sourceLineNo">354</span>   * @param zkw<a name="line.354"></a>
-<span class="sourceLineNo">355</span>   * @param timeout How long to wait on meta location<a name="line.355"></a>
-<span class="sourceLineNo">356</span>   * @param replicaId<a name="line.356"></a>
-<span class="sourceLineNo">357</span>   * @return connection to server hosting meta<a name="line.357"></a>
-<span class="sourceLineNo">358</span>   * @throws InterruptedException<a name="line.358"></a>
-<span class="sourceLineNo">359</span>   * @throws NotAllMetaRegionsOnlineException if timed out waiting<a name="line.359"></a>
-<span class="sourceLineNo">360</span>   * @throws IOException<a name="line.360"></a>
-<span class="sourceLineNo">361</span>   */<a name="line.361"></a>
-<span class="sourceLineNo">362</span>  private AdminService.BlockingInterface getMetaServerConnection(ClusterConnection connection,<a name="line.362"></a>
-<span class="sourceLineNo">363</span>                                                                 ZKWatcher zkw, long timeout, int replicaId)<a name="line.363"></a>
-<span class="sourceLineNo">364</span>  throws InterruptedException, NotAllMetaRegionsOnlineException, IOException {<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    return getCachedConnection(connection, waitMetaRegionLocation(zkw, replicaId, timeout));<a name="line.365"></a>
-<span class="sourceLineNo">366</span>  }<a name="line.366"></a>
-<span class="sourceLineNo">367</span><a name="line.367"></a>
-<span class="sourceLineNo">368</span>  /**<a name="line.368"></a>
-<span class="sourceLineNo">369</span>   * @param sn ServerName to get a connection against.<a name="line.369"></a>
-<span class="sourceLineNo">370</span>   * @return The AdminProtocol we got when we connected to &lt;code&gt;sn&lt;/code&gt;<a name="line.370"></a>
-<span class="sourceLineNo">371</span>   * May have come from cache, may not be good, may have been setup by this<a name="line.371"></a>
-<span class="sourceLineNo">372</span>   * invocation, or may be null.<a name="line.372"></a>
-<span class="sourceLineNo">373</span>   * @throws IOException<a name="line.373"></a>
-<span class="sourceLineNo">374</span>   */<a name="line.374"></a>
-<span class="sourceLineNo">375</span>  private static AdminService.BlockingInterface getCachedConnection(ClusterConnection connection,<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    ServerName sn)<a name="line.376"></a>
-<span class="sourceLineNo">377</span>  throws IOException {<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    if (sn == null) {<a name="line.378"></a>
-<span class="sourceLineNo">379</span>      return null;<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    }<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    AdminService.BlockingInterface service = null;<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    try {<a name="line.382"></a>
-<span class="sourceLineNo">383</span>      service = connection.getAdmin(sn);<a name="line.383"></a>
-<span class="sourceLineNo">384</span>    } catch (RetriesExhaustedException e) {<a name="line.384"></a>
-<span class="sourceLineNo">385</span>      if (e.getCause() != null &amp;&amp; e.getCause() instanceof ConnectException) {<a name="line.385"></a>
-<span class="sourceLineNo">386</span>        // Catch this; presume it means the cached connection has gone bad.<a name="line.386"></a>
-<span class="sourceLineNo">387</span>      } else {<a name="line.387"></a>
-<span class="sourceLineNo">388</span>        throw e;<a name="line.388"></a>
-<span class="sourceLineNo">389</span>      }<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    } catch (SocketTimeoutException e) {<a name="line.390"></a>
-<span class="sourceLineNo">391</span>      LOG.debug("Timed out connecting to " + sn);<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    } catch (NoRouteToHostException e) {<a name="line.392"></a>
-<span class="sourceLineNo">393</span>      LOG.debug("Connecting to " + sn, e);<a name="line.393"></a>
-<span class="sourceLineNo">394</span>    } catch (SocketException e) {<a name="line.394"></a>
-<span class="sourceLineNo">395</span>      LOG.debug("Exception connecting to " + sn);<a name="line.395"></a>
-<span class="sourceLineNo">396</span>    } catch (UnknownHostException e) {<a name="line.396"></a>
-<span class="sourceLineNo">397</span>      LOG.debug("Unknown host exception connecting to  " + sn);<a name="line.397"></a>
-<span class="sourceLineNo">398</span>    } catch (FailedServerException e) {<a name="line.398"></a>
-<span class="sourceLineNo">399</span>      if (LOG.isDebugEnabled()) {<a name="line.399"></a>
-<span class="sourceLineNo">400</span>        LOG.debug("Server " + sn + " is in failed server list.");<a name="line.400"></a>
-<span class="sourceLineNo">401</span>      }<a name="line.401"></a>
-<span class="sourceLineNo">402</span>    } catch (IOException ioe) {<a name="line.402"></a>
-<span class="sourceLineNo">403</span>      Throwable cause = ioe.getCause();<a name="line.403"></a>
-<span class="sourceLineNo">404</span>      if (ioe instanceof ConnectException) {<a name="line.404"></a>
-<span class="sourceLineNo">405</span>        // Catch. Connect refused.<a name="line.405"></a>
-<span class="sourceLineNo">406</span>      } else if (cause != null &amp;&amp; cause instanceof EOFException) {<a name="line.406"></a>
-<span class="sourceLineNo">407</span>        // Catch. Other end disconnected us.<a name="line.407"></a>
-<span class="sourceLineNo">408</span>      } else if (cause != null &amp;&amp; cause.getMessage() != null &amp;&amp;<a name="line.408"></a>
-<span class="sourceLineNo">409</span>        cause.getMessage().toLowerCase(Locale.ROOT).contains("connection reset")) {<a name="line.409"></a>
-<span class="sourceLineNo">410</span>        // Catch. Connection reset.<a name="line.410"></a>
-<span class="sourceLineNo">411</span>      } else {<a name="line.411"></a>
-<span class="sourceLineNo">412</span>        throw ioe;<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>    }<a name="line.415"></a>
-<span class="sourceLineNo">416</span>    return service;<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>   * Sets the location of &lt;code&gt;hbase:meta&lt;/code&gt; in ZooKeeper to the<a name="line.420"></a>
-<span class="sourceLineNo">421</span>   * specified server address.<a name="line.421"></a>
-<span class="sourceLineNo">422</span>   * @param zookeeper zookeeper reference<a name="line.422"></a>
-<span class="sourceLineNo">423</span>   * @param serverName The server hosting &lt;code&gt;hbase:meta&lt;/code&gt;<a name="line.423"></a>
-<span class="sourceLineNo">424</span>   * @param state The region transition state<a name="line.424"></a>
-<span class="sourceLineNo">425</span>   * @throws KeeperException unexpected zookeeper exception<a name="line.425"></a>
-<span class="sourceLineNo">426</span>   */<a name="line.426"></a>
-<span class="sourceLineNo">427</span>  public static void setMetaLocation(ZKWatcher zookeeper,<a name="line.427"></a>
-<span class="sourceLineNo">428</span>      ServerName serverName, RegionState.State state) throws KeeperException {<a name="line.428"></a>
-<span class="sourceLineNo">429</span>    setMetaLocation(zookeeper, serverName, RegionInfo.DEFAULT_REPLICA_ID, state);<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>  /**<a name="line.432"></a>
-<span class="sourceLineNo">433</span>   * Sets the location of &lt;code&gt;hbase:meta&lt;/code&gt; in ZooKeeper to the<a name="line.433"></a>
-<span class="sourceLineNo">434</span>   * specified server address.<a name="line.434"></a>
-<span class="sourceLineNo">435</span>   * @param zookeeper<a name="line.435"></a>
-<span class="sourceLineNo">436</span>   * @param serverName<a name="line.436"></a>
-<span class="sourceLineNo">437</span>   * @param replicaId<a name="line.437"></a>
-<span class="sourceLineNo">438</span>   * @param state<a name="line.438"></a>
-<span class="sourceLineNo">439</span>   * @throws KeeperException<a name="line.439"></a>
-<span class="sourceLineNo">440</span>   */<a name="line.440"></a>
-<span class="sourceLineNo">441</span>  public static void setMetaLocation(ZKWatcher zookeeper,<a name="line.441"></a>
-<span class="sourceLineNo">442</span>      ServerName serverName, int replicaId, RegionState.State state) throws KeeperException {<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    if (serverName == null) {<a name="line.443"></a>
-<span class="sourceLineNo">444</span>      LOG.warn("Tried to set null ServerName in hbase:meta; skipping -- ServerName required");<a name="line.444"></a>
-<span class="sourceLineNo">445</span>      return;<a name="line.445"></a>
-<span class="sourceLineNo">446</span>    }<a name="line.446"></a>
-<span class="sourceLineNo">447</span>    LOG.info("Setting hbase:meta (replicaId=" + replicaId + ") location in ZooKeeper as " +<a name="line.447"></a>
-<span class="sourceLineNo">448</span>      serverName);<a name="line.448"></a>
-<span class="sourceLineNo">449</span>    // Make the MetaRegionServer pb and then get its bytes and save this as<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    // the znode content.<a name="line.450"></a>
-<span class="sourceLineNo">451</span>    MetaRegionServer pbrsr = MetaRegionServer.newBuilder()<a name="line.451"></a>
-<span class="sourceLineNo">452</span>      .setServer(ProtobufUtil.toServerName(serverName))<a name="line.452"></a>
-<span class="sourceLineNo">453</span>      .setRpcVersion(HConstants.RPC_CURRENT_VERSION)<a name="line.453"></a>
-<span class="sourceLineNo">454</span>      .setState(state.convert()).build();<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    byte[] data = ProtobufUtil.prependPBMagic(pbrsr.toByteArray());<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    try {<a name="line.456"></a>
-<span class="sourceLineNo">457</span>      ZKUtil.setData(zookeeper,<a name="line.457"></a>
-<span class="sourceLineNo">458</span>          zookeeper.znodePaths.getZNodeForReplica(replicaId), data);<a name="line.458"></a>
-<span class="sourceLineNo">459</span>    } catch(KeeperException.NoNodeException nne) {<a name="line.459"></a>
-<span class="sourceLineNo">460</span>      if (replicaId == RegionInfo.DEFAULT_REPLICA_ID) {<a name="line.460"></a>
-<span class="sourceLineNo">461</span>        LOG.debug("META region location doesn't exist, create it");<a name="line.461"></a>
-<span class="sourceLineNo">462</span>      } else {<a name="line.462"></a>
-<span class="sourceLineNo">463</span>        LOG.debug("META region location doesn't exist for replicaId=" + replicaId +<a name="line.463"></a>
-<span class="sourceLineNo">464</span>            ", create it");<a name="line.464"></a>
-<span class="sourceLineNo">465</span>      }<a name="line.465"></a>
-<span class="sourceLineNo">466</span>      ZKUtil.createAndWatch(zookeeper, zookeeper.znodePaths.getZNodeForReplica(replicaId), data);<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>   * Load the meta region state from the meta server ZNode.<a name="line.471"></a>
-<span class="sourceLineNo">472</span>   */<a name="line.472"></a>
-<span class="sourceLineNo">473</span>  public static RegionState getMetaRegionState(ZKWatcher zkw) throws KeeperException {<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    return getMetaRegionState(zkw, RegionInfo.DEFAULT_REPLICA_ID);<a name="line.474"></a>
-<span class="sourceLineNo">475</span>  }<a name="line.475"></a>
-<span class="sourceLineNo">476</span><a name="line.476"></a>
-<span class="sourceLineNo">477</span>  /**<a name="line.477"></a>
-<span class="sourceLineNo">478</span>   * Load the meta region state from the meta server ZNode.<a name="line.478"></a>
-<span class="sourceLineNo">479</span>   * @param zkw<a name="line.479"></a>
-<span class="sourceLineNo">480</span>   * @param replicaId<a name="line.480"></a>
-<span class="sourceLineNo">481</span>   * @return regionstate<a name="line.481"></a>
-<span class="sourceLineNo">482</span>   * @throws KeeperException<a name="line.482"></a>
-<span class="sourceLineNo">483</span>   */<a name="line.483"></a>
-<span class="sourceLineNo">484</span>  public static RegionState getMetaRegionState(ZKWatcher zkw, int replicaId)<a name="line.484"></a>
-<span class="sourceLineNo">485</span>      throws KeeperException {<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    RegionState.State state = RegionState.State.OPEN;<a name="line.486"></a>
-<span class="sourceLineNo">487</span>    ServerName serverName = null;<a name="line.487"></a>
-<span class="sourceLineNo">488</span>    try {<a name="line.488"></a>
-<span class="sourceLineNo">489</span>      byte[] data = ZKUtil.getData(zkw, zkw.znodePaths.getZNodeForReplica(replicaId));<a name="line.489"></a>
-<span class="sourceLineNo">490</span>      if (data != null &amp;&amp; data.length &gt; 0 &amp;&amp; ProtobufUtil.isPBMagicPrefix(data)) {<a name="line.490"></a>
-<span class="sourceLineNo">491</span>        try {<a name="line.491"></a>
-<span class="sourceLineNo">492</span>          int prefixLen = ProtobufUtil.lengthOfPBMagic();<a name="line.492"></a>
-<span class="sourceLineNo">493</span>          ZooKeeperProtos.MetaRegionServer rl =<a name="line.493"></a>
-<span class="sourceLineNo">494</span>            ZooKeeperProtos.MetaRegionServer.PARSER.parseFrom<a name="line.494"></a>
-<span class="sourceLineNo">495</span>              (data, prefixLen, data.length - prefixLen);<a name="line.495"></a>
-<span class="sourceLineNo">496</span>          if (rl.hasState()) {<a name="line.496"></a>
-<span class="sourceLineNo">497</span>            state = RegionState.State.convert(rl.getState());<a name="line.497"></a>
-<span class="sourceLineNo">498</span>          }<a name="line.498"></a>
-<span class="sourceLineNo">499</span>          HBaseProtos.ServerName sn = rl.getServer();<a name="line.499"></a>
-<span class="sourceLineNo">500</span>          serverName = ServerName.valueOf(<a name="line.500"></a>
-<span class="sourceLineNo">501</span>            sn.getHostName(), sn.getPort(), sn.getStartCode());<a name="line.501"></a>
-<span class="sourceLineNo">502</span>        } catch (InvalidProtocolBufferException e) {<a name="line.502"></a>
-<span class="sourceLineNo">503</span>          throw new DeserializationException("Unable to parse meta region location");<a name="line.503"></a>
-<span class="sourceLineNo">504</span>        }<a name="line.504"></a>
-<span class="sourceLineNo">505</span>      } else {<a name="line.505"></a>
-<span class="sourceLineNo">506</span>        // old style of meta region location?<a name="line.506"></a>
-<span class="sourceLineNo">507</span>        serverName = ProtobufUtil.parseServerNameFrom(data);<a name="line.507"></a>
-<span class="sourceLineNo">508</span>      }<a name="line.508"></a>
-<span class="sourceLineNo">509</span>    } catch (DeserializationException e) {<a name="line.509"></a>
-<span class="sourceLineNo">510</span>      throw ZKUtil.convert(e);<a name="line.510"></a>
-<span class="sourceLineNo">511</span>    } catch (InterruptedException e) {<a name="line.511"></a>
-<span class="sourceLineNo">512</span>      Thread.currentThread().interrupt();<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    }<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    if (serverName == null) {<a name="line.514"></a>
-<span class="sourceLineNo">515</span>      state = RegionState.State.OFFLINE;<a name="line.515"></a>
-<span class="sourceLineNo">516</span>    }<a name="line.516"></a>
-<span class="sourceLineNo">517</span>    return new RegionState(<a name="line.517"></a>
-<span class="sourceLineNo">518</span>        RegionReplicaUtil.getRegionInfoForReplica(<a name="line.518"></a>
-<span class="sourceLineNo">519</span>            RegionInfoBuilder.FIRST_META_REGIONINFO, replicaId),<a name="line.519"></a>
-<span class="sourceLineNo">520</span>        state, serverName);<a name="line.520"></a>
-<span class="sourceLineNo">521</span>  }<a name="line.521"></a>
-<span class="sourceLineNo">522</span><a name="line.522"></a>
-<span class="sourceLineNo">523</span>  /**<a name="line.523"></a>
-<span class="sourceLineNo">524</span>   * Deletes the location of &lt;code&gt;hbase:meta&lt;/code&gt; in ZooKeeper.<a name="line.524"></a>
-<span class="sourceLineNo">525</span>   * @param zookeeper zookeeper reference<a name="line.525"></a>
-<span class="sourceLineNo">526</span>   * @throws KeeperException unexpected zookeeper exception<a name="line.526"></a>
-<span class="sourceLineNo">527</span>   */<a name="line.527"></a>
-<span class="sourceLineNo">528</span>  public void deleteMetaLocation(ZKWatcher zookeeper)<a name="line.528"></a>
-<span class="sourceLineNo">529</span>  throws KeeperException {<a name="line.529"></a>
-<span class="sourceLineNo">530</span>    deleteMetaLocation(zookeeper, RegionInfo.DEFAULT_REPLICA_ID);<a name="line.530"></a>
-<span class="sourceLineNo">531</span>  }<a name="line.531"></a>
-<span class="sourceLineNo">532</span><a name="line.532"></a>
-<span class="sourceLineNo">533</span>  public void deleteMetaLocation(ZKWatcher zookeeper, int replicaId)<a name="line.533"></a>
-<span class="sourceLineNo">534</span>  throws KeeperException {<a name="line.534"></a>
-<span class="sourceLineNo">535</span>    if (replicaId == RegionInfo.DEFAULT_REPLICA_ID) {<a name="line.535"></a>
-<span class="sourceLineNo">536</span>      LOG.info("Deleting hbase:meta region location in ZooKeeper");<a name="line.536"></a>
-<span class="sourceLineNo">537</span>    } else {<a name="line.537"></a>
-<span class="sourceLineNo">538</span>      LOG.info("Deleting hbase:meta for " + replicaId + " region location in ZooKeeper");<a name="line.538"></a>
-<span class="sourceLineNo">539</span>    }<a name="line.539"></a>
-<span class="sourceLineNo">540</span>    try {<a name="line.540"></a>
-<span class="sourceLineNo">541</span>      // Just delete the node.  Don't need any watches.<a name="line.541"></a>
-<span class="sourceLineNo">542</span>      ZKUtil.deleteNode(zookeeper, zookeeper.znodePaths.getZNodeForReplica(replicaId));<a name="line.542"></a>
-<span class="sourceLineNo">543</span>    } catch(KeeperException.NoNodeException nne) {<a name="line.543"></a>
-<span class="sourceLineNo">544</span>      // Has already been deleted<a name="line.544"></a>
-<span class="sourceLineNo">545</span>    }<a name="line.545"></a>
-<span class="sourceLineNo">546</span>  }<a name="line.546"></a>
-<span class="sourceLineNo">547</span>  /**<a name="line.547"></a>
-<span class="sourceLineNo">548</span>   * Wait until the primary meta region is available. Get the secondary<a name="line.548"></a>
-<span class="sourceLineNo">549</span>   * locations as well but don't block for those.<a name="line.549"></a>
-<span class="sourceLineNo">550</span>   * @param zkw<a name="line.550"></a>
-<span class="sourceLineNo">551</span>   * @param timeout<a name="line.551"></a>
-<span class="sourceLineNo">552</span>   * @param conf<a name="line.552"></a>
-<span class="sourceLineNo">553</span>   * @return ServerName or null if we timed out.<a name="line.553"></a>
-<span class="sourceLineNo">554</span>   * @throws InterruptedException<a name="line.554"></a>
-<span class="sourceLineNo">555</span>   */<a name="line.555"></a>
-<span class="sourceLineNo">556</span>  public List&lt;ServerName&gt; blockUntilAvailable(final ZKWatcher zkw,<a name="line.556"></a>
-<span class="sourceLineNo">557</span>      final long timeout, Configuration conf)<a name="line.557"></a>
-<span class="sourceLineNo">558</span>          throws InterruptedException {<a name="line.558"></a>
-<span class="sourceLineNo">559</span>    int numReplicasConfigured = 1;<a name="line.559"></a>
-<span class="sourceLineNo">560</span><a name="line.560"></a>
-<span class="sourceLineNo">561</span>    List&lt;ServerName&gt; servers = new ArrayList&lt;&gt;();<a name="line.561"></a>
-<span class="sourceLineNo">562</span>    // Make the blocking call first so that we do the wait to know<a name="line.562"></a>
-<span class="sourceLineNo">563</span>    // the znodes are all in place or timeout.<a name="line.563"></a>
-<span class="sourceLineNo">564</span>    ServerName server = blockUntilAvailable(zkw, timeout);<a name="line.564"></a>
-<span class="sourceLineNo">565</span>    if (server == null) return null;<a name="line.565"></a>
-<span class="sourceLineNo">566</span>    servers.add(server);<a name="line.566"></a>
+<span class="sourceLineNo">226</span>    if (sn == null) {<a name="line.226"></a>
+<span class="sourceLineNo">227</span>      throw new NotAllMetaRegionsOnlineException("Timed out; " + timeout + "ms");<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>    return sn;<a name="line.230"></a>
+<span class="sourceLineNo">231</span>  }<a name="line.231"></a>
+<span class="sourceLineNo">232</span><a name="line.232"></a>
+<span class="sourceLineNo">233</span>  /**<a name="line.233"></a>
+<span class="sourceLineNo">234</span>   * Waits indefinitely for availability of &lt;code&gt;hbase:meta&lt;/code&gt;.  Used during<a name="line.234"></a>
+<span class="sourceLineNo">235</span>   * cluster startup.  Does not verify meta, just that something has been<a name="line.235"></a>
+<span class="sourceLineNo">236</span>   * set up in zk.<a name="line.236"></a>
+<span class="sourceLineNo">237</span>   * @see #waitMetaRegionLocation(ZKWatcher, long)<a name="line.237"></a>
+<span class="sourceLineNo">238</span>   * @throws InterruptedException if interrupted while waiting<a name="line.238"></a>
+<span class="sourceLineNo">239</span>   */<a name="line.239"></a>
+<span class="sourceLineNo">240</span>  public void waitMetaRegionLocation(ZKWatcher zkw) throws InterruptedException {<a name="line.240"></a>
+<span class="sourceLineNo">241</span>    long startTime = System.currentTimeMillis();<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    while (!stopped) {<a name="line.242"></a>
+<span class="sourceLineNo">243</span>      try {<a name="line.243"></a>
+<span class="sourceLineNo">244</span>        if (waitMetaRegionLocation(zkw, 100) != null) {<a name="line.244"></a>
+<span class="sourceLineNo">245</span>          break;<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>        long sleepTime = System.currentTimeMillis() - startTime;<a name="line.248"></a>
+<span class="sourceLineNo">249</span>        // +1 in case sleepTime=0<a name="line.249"></a>
+<span class="sourceLineNo">250</span>        if ((sleepTime + 1) % 10000 == 0) {<a name="line.250"></a>
+<span class="sourceLineNo">251</span>          LOG.warn("Have been waiting for meta to be assigned for " + sleepTime + "ms");<a name="line.251"></a>
+<span class="sourceLineNo">252</span>        }<a name="line.252"></a>
+<span class="sourceLineNo">253</span>      } catch (NotAllMetaRegionsOnlineException e) {<a name="line.253"></a>
+<span class="sourceLineNo">254</span>        if (LOG.isTraceEnabled()) {<a name="line.254"></a>
+<span class="sourceLineNo">255</span>          LOG.trace("hbase:meta still not available, sleeping and retrying." +<a name="line.255"></a>
+<span class="sourceLineNo">256</span>            " Reason: " + e.getMessage());<a name="line.256"></a>
+<span class="sourceLineNo">257</span>        }<a name="line.257"></a>
+<span class="sourceLineNo">258</span>      }<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    }<a name="line.259"></a>
+<span class="sourceLineNo">260</span>  }<a name="line.260"></a>
+<span class="sourceLineNo">261</span><a name="line.261"></a>
+<span class="sourceLineNo">262</span>  /**<a name="line.262"></a>
+<span class="sourceLineNo">263</span>   * Verify &lt;code&gt;hbase:meta&lt;/code&gt; is deployed and accessible.<a name="line.263"></a>
+<span class="sourceLineNo">264</span>   *<a name="line.264"></a>
+<span class="sourceLineNo">265</span>   * @param hConnection the connection to use<a name="line.265"></a>
+<span class="sourceLineNo">266</span>   * @param zkw reference to the {@link ZKWatcher} which also contains configuration and operation<a name="line.266"></a>
+<span class="sourceLineNo">267</span>   * @param timeout How long to wait on zk for meta address (passed through to<a name="line.267"></a>
+<span class="sourceLineNo">268</span>   *                the internal call to {@link #getMetaServerConnection}.<a name="line.268"></a>
+<span class="sourceLineNo">269</span>   * @return True if the &lt;code&gt;hbase:meta&lt;/code&gt; location is healthy.<a name="line.269"></a>
+<span class="sourceLineNo">270</span>   * @throws IOException if the number of retries for getting the connection is exceeded<a name="line.270"></a>
+<span class="sourceLineNo">271</span>   * @throws InterruptedException if waiting for the socket operation fails<a name="line.271"></a>
+<span class="sourceLineNo">272</span>   */<a name="line.272"></a>
+<span class="sourceLineNo">273</span>  public boolean verifyMetaRegionLocation(ClusterConnection hConnection, ZKWatcher zkw,<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      final long timeout) throws InterruptedException, IOException {<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    return verifyMetaRegionLocation(hConnection, zkw, timeout, RegionInfo.DEFAULT_REPLICA_ID);<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>   * Verify &lt;code&gt;hbase:meta&lt;/code&gt; is deployed and accessible.<a name="line.279"></a>
+<span class="sourceLineNo">280</span>   *<a name="line.280"></a>
+<span class="sourceLineNo">281</span>   * @param connection the connection to use<a name="line.281"></a>
+<span class="sourceLineNo">282</span>   * @param zkw reference to the {@link ZKWatcher} which also contains configuration and operation<a name="line.282"></a>
+<span class="sourceLineNo">283</span>   * @param timeout How long to wait on zk for meta address (passed through to<a name="line.283"></a>
+<span class="sourceLineNo">284</span>   * @param replicaId the ID of the replica<a name="line.284"></a>
+<span class="sourceLineNo">285</span>   * @return True if the &lt;code&gt;hbase:meta&lt;/code&gt; location is healthy.<a name="line.285"></a>
+<span class="sourceLineNo">286</span>   * @throws InterruptedException if waiting for the socket operation fails<a name="line.286"></a>
+<span class="sourceLineNo">287</span>   * @throws IOException if the number of retries for getting the connection is exceeded<a name="line.287"></a>
+<span class="sourceLineNo">288</span>   */<a name="line.288"></a>
+<span class="sourceLineNo">289</span>  public boolean verifyMetaRegionLocation(ClusterConnection connection, ZKWatcher zkw,<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      final long timeout, int replicaId) throws InterruptedException, IOException {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    AdminProtos.AdminService.BlockingInterface service = null;<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    try {<a name="line.292"></a>
+<span class="sourceLineNo">293</span>      service = getMetaServerConnection(connection, zkw, timeout, replicaId);<a name="line.293"></a>
+<span class="sourceLineNo">294</span>    } catch (NotAllMetaRegionsOnlineException e) {<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      // Pass<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    } catch (ServerNotRunningYetException e) {<a name="line.296"></a>
+<span class="sourceLineNo">297</span>      // Pass -- remote server is not up so can't be carrying root<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    } catch (UnknownHostException e) {<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      // Pass -- server name doesn't resolve so it can't be assigned anything.<a name="line.299"></a>
+<span class="sourceLineNo">300</span>    } catch (RegionServerStoppedException e) {<a name="line.300"></a>
+<span class="sourceLineNo">301</span>      // Pass -- server name sends us to a server that is dying or already dead.<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    }<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    return (service != null) &amp;&amp; verifyRegionLocation(connection, service,<a name="line.303"></a>
+<span class="sourceLineNo">304</span>            getMetaRegionLocation(zkw, replicaId), RegionReplicaUtil.getRegionInfoForReplica(<a name="line.304"></a>
+<span class="sourceLineNo">305</span>                RegionInfoBuilder.FIRST_META_REGIONINFO, replicaId).getRegionName());<a name="line.305"></a>
+<span class="sourceLineNo">306</span>  }<a name="line.306"></a>
+<span class="sourceLineNo">307</span><a name="line.307"></a>
+<span class="sourceLineNo">308</span>  /**<a name="line.308"></a>
+<span class="sourceLineNo">309</span>   * Verify we can connect to &lt;code&gt;hostingServer&lt;/code&gt; and that its carrying<a name="line.309"></a>
+<span class="sourceLineNo">310</span>   * &lt;code&gt;regionName&lt;/code&gt;.<a name="line.310"></a>
+<span class="sourceLineNo">311</span>   * @param hostingServer Interface to the server hosting &lt;code&gt;regionName&lt;/code&gt;<a name="line.311"></a>
+<span class="sourceLineNo">312</span>   * @param address The servername that goes with the &lt;code&gt;metaServer&lt;/code&gt; interface.<a name="line.312"></a>
+<span class="sourceLineNo">313</span>   *                Used logging.<a name="line.313"></a>
+<span class="sourceLineNo">314</span>   * @param regionName The regionname we are interested in.<a name="line.314"></a>
+<span class="sourceLineNo">315</span>   * @return True if we were able to verify the region located at other side of the interface.<a name="line.315"></a>
+<span class="sourceLineNo">316</span>   */<a name="line.316"></a>
+<span class="sourceLineNo">317</span>  // TODO: We should be able to get the ServerName from the AdminProtocol<a name="line.317"></a>
+<span class="sourceLineNo">318</span>  // rather than have to pass it in.  Its made awkward by the fact that the<a name="line.318"></a>
+<span class="sourceLineNo">319</span>  // HRI is likely a proxy against remote server so the getServerName needs<a name="line.319"></a>
+<span class="sourceLineNo">320</span>  // to be fixed to go to a local method or to a cache before we can do this.<a name="line.320"></a>
+<span class="sourceLineNo">321</span>  private boolean verifyRegionLocation(final ClusterConnection connection,<a name="line.321"></a>
+<span class="sourceLineNo">322</span>      AdminService.BlockingInterface hostingServer, final ServerName address,<a name="line.322"></a>
+<span class="sourceLineNo">323</span>      final byte [] regionName) {<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    if (hostingServer == null) {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      LOG.info("Passed hostingServer is null");<a name="line.325"></a>
+<span class="sourceLineNo">326</span>      return false;<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    }<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    Throwable t;<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    HBaseRpcController controller = connection.getRpcControllerFactory().newController();<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    try {<a name="line.330"></a>
+<span class="sourceLineNo">331</span>      // Try and get regioninfo from the hosting server.<a name="line.331"></a>
+<span class="sourceLineNo">332</span>      return ProtobufUtil.getRegionInfo(controller, hostingServer, regionName) != null;<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    } catch (ConnectException e) {<a name="line.333"></a>
+<span class="sourceLineNo">334</span>      t = e;<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    } catch (RetriesExhaustedException e) {<a name="line.335"></a>
+<span class="sourceLineNo">336</span>      t = e;<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    } catch (RemoteException e) {<a name="line.337"></a>
+<span class="sourceLineNo">338</span>      IOException ioe = e.unwrapRemoteException();<a name="line.338"></a>
+<span class="sourceLineNo">339</span>      t = ioe;<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    } catch (IOException e) {<a name="line.340"></a>
+<span class="sourceLineNo">341</span>      Throwable cause = e.getCause();<a name="line.341"></a>
+<span class="sourceLineNo">342</span>      if (cause != null &amp;&amp; cause instanceof EOFException) {<a name="line.342"></a>
+<span class="sourceLineNo">343</span>        t = cause;<a name="line.343"></a>
+<span class="sourceLineNo">344</span>      } else if (cause != null &amp;&amp; cause.getMessage() != null<a name="line.344"></a>
+<span class="sourceLineNo">345</span>          &amp;&amp; cause.getMessage().contains("Connection reset")) {<a name="line.345"></a>
+<span class="sourceLineNo">346</span>        t = cause;<a name="line.346"></a>
+<span class="sourceLineNo">347</span>      } else {<a name="line.347"></a>
+<span class="sourceLineNo">348</span>        t = e;<a name="line.348"></a>
+<span class="sourceLineNo">349</span>      }<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    }<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    LOG.info("Failed verification of " + Bytes.toStringBinary(regionName) +<a name="line.351"></a>
+<span class="sourceLineNo">352</span>      " at address=" + address + ", exception=" + t.getMessage());<a name="line.352"></a>
+<span class="sourceLineNo">353</span>    return false;<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>   * Gets a connection to the server hosting meta, as reported by ZooKeeper, waiting up to the<a name="line.357"></a>
+<span class="sourceLineNo">358</span>   * specified timeout for availability.<a name="line.358"></a>
+<span class="sourceLineNo">359</span>   *<a name="line.359"></a>
+<span class="sourceLineNo">360</span>   * &lt;p&gt;WARNING: Does not retry.  Use an {@link org.apache.hadoop.hbase.client.HTable} instead.<a name="line.360"></a>
+<span class="sourceLineNo">361</span>   *<a name="line.361"></a>
+<span class="sourceLineNo">362</span>   * @param connection the connection to use<a name="line.362"></a>
+<span class="sourceLineNo">363</span>   * @param zkw reference to the {@link ZKWatcher} which also contains configuration and operation<a name="line.363"></a>
+<span class="sourceLineNo">364</span>   * @param timeout How long to wait on meta location<a name="line.364"></a>
+<span class="sourceLineNo">365</span>   * @param replicaId the ID of the replica<a name="line.365"></a>
+<span class="sourceLineNo">366</span>   * @return connection to server hosting meta<a name="line.366"></a>
+<span class="sourceLineNo">367</span>   * @throws InterruptedException if waiting for the socket operation fails<a name="line.367"></a>
+<span class="sourceLineNo">368</span>   * @throws IOException if the number of retries for getting the connection is exceeded<a name="line.368"></a>
+<span class="sourceLineNo">369</span>   */<a name="line.369"></a>
+<span class="sourceLineNo">370</span>  private AdminService.BlockingInterface getMetaServerConnection(ClusterConnection connection,<a name="line.370"></a>
+<span class="sourceLineNo">371</span>      ZKWatcher zkw, long timeout, int replicaId) throws InterruptedException, IOException {<a name="line.371"></a>
+<span class="sourceLineNo">372</span>    return getCachedConnection(connection, waitMetaRegionLocation(zkw, replicaId, timeout));<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>   * @param sn ServerName to get a connection against.<a name="line.376"></a>
+<span class="sourceLineNo">377</span>   * @return The AdminProtocol we got when we connected to &lt;code&gt;sn&lt;/code&gt;<a name="line.377"></a>
+<span class="sourceLineNo">378</span>   *         May have come from cache, may not be good, may have been setup by this invocation, or<a name="line.378"></a>
+<span class="sourceLineNo">379</span>   *         may be null.<a name="line.379"></a>
+<span class="sourceLineNo">380</span>   * @throws IOException if the number of retries for getting the connection is exceeded<a name="line.380"></a>
+<span class="sourceLineNo">381</span>   */<a name="line.381"></a>
+<span class="sourceLineNo">382</span>  private static AdminService.BlockingInterface getCachedConnection(ClusterConnection connection,<a name="line.382"></a>
+<span class="sourceLineNo">383</span>      ServerName sn) throws IOException {<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    if (sn == null) {<a name="line.384"></a>
+<span class="sourceLineNo">385</span>      return null;<a name="line.385"></a>
+<span class="sourceLineNo">386</span>    }<a name="line.386"></a>
+<span class="sourceLineNo">387</span>    AdminService.BlockingInterface service = null;<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    try {<a name="line.388"></a>
+<span class="sourceLineNo">389</span>      service = connection.getAdmin(sn);<a name="line.389"></a>
+<span class="sourceLineNo">390</span>    } catch (RetriesExhaustedException e) {<a name="line.390"></a>
+<span class="sourceLineNo">391</span>      if (e.getCause() != null &amp;&amp; e.getCause() instanceof ConnectException) {<a name="line.391"></a>
+<span class="sourceLineNo">392</span>        // Catch this; presume it means the cached connection has gone bad.<a name="line.392"></a>
+<span class="sourceLineNo">393</span>      } else {<a name="line.393"></a>
+<span class="sourceLineNo">394</span>        throw e;<a name="line.394"></a>
+<span class="sourceLineNo">395</span>      }<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    } catch (SocketTimeoutException e) {<a name="line.396"></a>
+<span class="sourceLineNo">397</span>      LOG.debug("Timed out connecting to " + sn);<a name="line.397"></a>
+<span class="sourceLineNo">398</span>    } catch (NoRouteToHostException e) {<a name="line.398"></a>
+<span class="sourceLineNo">399</span>      LOG.debug("Connecting to " + sn, e);<a name="line.399"></a>
+<span class="sourceLineNo">400</span>    } catch (SocketException e) {<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      LOG.debug("Exception connecting to " + sn);<a name="line.401"></a>
+<span class="sourceLineNo">402</span>    } catch (UnknownHostException e) {<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      LOG.debug("Unknown host exception connecting to  " + sn);<a name="line.403"></a>
+<span class="sourceLineNo">404</span>    } catch (FailedServerException e) {<a name="line.404"></a>
+<span class="sourceLineNo">405</span>      if (LOG.isDebugEnabled()) {<a name="line.405"></a>
+<span class="sourceLineNo">406</span>        LOG.debug("Server " + sn + " is in failed server list.");<a name="line.406"></a>
+<span class="sourceLineNo">407</span>      }<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    } catch (IOException ioe) {<a name="line.408"></a>
+<span class="sourceLineNo">409</span>      Throwable cause = ioe.getCause();<a name="line.409"></a>
+<span class="sourceLineNo">410</span>      if (ioe instanceof ConnectException) {<a name="line.410"></a>
+<span class="sourceLineNo">411</span>        // Catch. Connect refused.<a name="line.411"></a>
+<span class="sourceLineNo">412</span>      } else if (cause != null &amp;&amp; cause instanceof EOFException) {<a name="line.412"></a>
+<span class="sourceLineNo">413</span>        // Catch. Other end disconnected us.<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      } else if (cause != null &amp;&amp; cause.getMessage() != null &amp;&amp;<a name="line.414"></a>
+<span class="sourceLineNo">415</span>        cause.getMessage().toLowerCase(Locale.ROOT).contains("connection reset")) {<a name="line.415"></a>
+<span class="sourceLineNo">416</span>        // Catch. Connection reset.<a name="line.416"></a>
+<span class="sourceLineNo">417</span>      } else {<a name="line.417"></a>
+<span class="sourceLineNo">418</span>        throw ioe;<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>    }<a name="line.421"></a>
+<span class="sourceLineNo">422</span>    return service;<a name="line.422"></a>
+<span class="sourceLineNo">423</span>  }<a name="line.423"></a>
+<span class="sourceLineNo">424</span><a name="line.424"></a>
+<span class="sourceLineNo">425</span>  /**<a name="line.425"></a>
+<span class="sourceLineNo">426</span>   * Sets the location of &lt;code&gt;hbase:meta&lt;/code&gt; in ZooKeeper to the<a name="line.426"></a>
+<span class="sourceLineNo">427</span>   * specified server address.<a name="line.427"></a>
+<span class="sourceLineNo">428</span>   * @param zookeeper zookeeper reference<a name="line.428"></a>
+<span class="sourceLineNo">429</span>   * @param serverName The server hosting &lt;code&gt;hbase:meta&lt;/code&gt;<a name="line.429"></a>
+<span class="sourceLineNo">430</span>   * @param state The region transition state<a name="line.430"></a>
+<span class="sourceLineNo">431</span>   * @throws KeeperException unexpected zookeeper exception<a name="line.431"></a>
+<span class="sourceLineNo">432</span>   */<a name="line.432"></a>
+<span class="sourceLineNo">433</span>  public static void setMetaLocation(ZKWatcher zookeeper,<a name="line.433"></a>
+<span class="sourceLineNo">434</span>      ServerName serverName, RegionState.State state) throws KeeperException {<a name="line.434"></a>
+<span class="sourceLineNo">435</span>    setMetaLocation(zookeeper, serverName, RegionInfo.DEFAULT_REPLICA_ID, state);<a name="line.435"></a>
+<span class="sourceLineNo">436</span>  }<a name="line.436"></a>
+<span class="sourceLineNo">437</span><a name="line.437"></a>
+<span class="sourceLineNo">438</span>  /**<a name="line.438"></a>
+<span class="sourceLineNo">439</span>   * Sets the location of &lt;code&gt;hbase:meta&lt;/code&gt; in ZooKeeper to the specified server address.<a name="line.439"></a>
+<span class="sourceLineNo">440</span>   * @param zookeeper reference to the {@link ZKWatcher} which also contains configuration and<a name="line.440"></a>
+<span class="sourceLineNo">441</span>   *                  operation<a name="line.441"></a>
+<span class="sourceLineNo">442</span>   * @param serverName the name of the server<a name="line.442"></a>
+<span class="sourceLineNo">443</span>   * @param replicaId the ID of the replica<a name="line.443"></a>
+<span class="sourceLineNo">444</span>   * @param state the state of the region<a name="line.444"></a>
+<span class="sourceLineNo">445</span>   * @throws KeeperException if a ZooKeeper operation fails<a name="line.445"></a>
+<span class="sourceLineNo">446</span>   */<a name="line.446"></a>
+<span class="sourceLineNo">447</span>  public static void setMetaLocation(ZKWatcher zookeeper, ServerName serverName, int replicaId,<a name="line.447"></a>
+<span class="sourceLineNo">448</span>      RegionState.State state) throws KeeperException {<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    if (serverName == null) {<a name="line.449"></a>
+<span class="sourceLineNo">450</span>      LOG.warn("Tried to set null ServerName in hbase:meta; skipping -- ServerName required");<a name="line.450"></a>
+<span class="sourceLineNo">451</span>      return;<a name="line.451"></a>
+<span class="sourceLineNo">452</span>    }<a name="line.452"></a>
+<span class="sourceLineNo">453</span>    LOG.info("Setting hbase:meta (replicaId=" + replicaId + ") location in ZooKeeper as " +<a name="line.453"></a>
+<span class="sourceLineNo">454</span>      serverName);<a name="line.454"></a>
+<span class="sourceLineNo">455</span>    // Make the MetaRegionServer pb and then get its bytes and save this as<a name="line.455"></a>
+<span class="sourceLineNo">456</span>    // the znode content.<a name="line.456"></a>
+<span class="sourceLineNo">457</span>    MetaRegionServer pbrsr = MetaRegionServer.newBuilder()<a name="line.457"></a>
+<span class="sourceLineNo">458</span>      .setServer(ProtobufUtil.toServerName(serverName))<a name="line.458"></a>
+<span class="sourceLineNo">459</span>      .setRpcVersion(HConstants.RPC_CURRENT_VERSION)<a name="line.459"></a>
+<span class="sourceLineNo">460</span>      .setState(state.convert()).build();<a name="line.460"></a>
+<span class="sourceLineNo">461</span>    byte[] data = ProtobufUtil.prependPBMagic(pbrsr.toByteArray());<a name="line.461"></a>
+<span class="sourceLineNo">462</span>    try {<a name="line.462"></a>
+<span class="sourceLineNo">463</span>      ZKUtil.setData(zookeeper,<a name="line.463"></a>
+<span class="sourceLineNo">464</span>          zookeeper.znodePaths.getZNodeForReplica(replicaId), data);<a name="line.464"></a>
+<span class="sourceLineNo">465</span>    } catch(KeeperException.NoNodeException nne) {<a name="line.465"></a>
+<span class="sourceLineNo">466</span>      if (replicaId == RegionInfo.DEFAULT_REPLICA_ID) {<a name="line.466"></a>
+<span class="sourceLineNo">467</span>        LOG.debug("META region location doesn't exist, create it");<a name="line.467"></a>
+<span class="sourceLineNo">468</span>      } else {<a name="line.468"></a>
+<span class="sourceLineNo">469</span>        LOG.debug("META region location doesn't exist for replicaId=" + replicaId +<a name="line.469"></a>
+<span class="sourceLineNo">470</span>            ", create it");<a name="line.470"></a>
+<span class="sourceLineNo">471</span>      }<a name="line.471"></a>
+<span class="sourceLineNo">472</span>      ZKUtil.createAndWatch(zookeeper, zookeeper.znodePaths.getZNodeForReplica(replicaId), data);<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>
+<span class="sourceLineNo">477</span>   * Load the meta region state from the meta server ZNode.<a name="line.477"></a>
+<span class="sourceLineNo">478</span>   */<a name="line.478"></a>
+<span class="sourceLineNo">479</span>  public static RegionState getMetaRegionState(ZKWatcher zkw) throws KeeperException {<a name="line.479"></a>
+<span class="sourceLineNo">480</span>    return getMetaRegionState(zkw, RegionInfo.DEFAULT_REPLICA_ID);<a name="line.480"></a>
+<span class="sourceLineNo">481</span>  }<a name="line.481"></a>
+<span class="sourceLineNo">482</span><a name="line.482"></a>
+<span class="sourceLineNo">483</span>  /**<a name="line.483"></a>
+<span class="sourceLineNo">484</span>   * Load the meta region state from the meta server ZNode.<a name="line.484"></a>
+<span class="sourceLineNo">485</span>   *<a name="line.485"></a>
+<span class="sourceLineNo">486</span>   * @param zkw reference to the {@link ZKWatcher} which also contains configuration and operation<a name="line.486"></a>
+<span class="sourceLineNo">487</span>   * @param replicaId the ID of the replica<a name="line.487"></a>
+<span class="sourceLineNo">488</span>   * @return regionstate<a name="line.488"></a>
+<span class="sourceLineNo">489</span>   * @throws KeeperException if a ZooKeeper operation fails<a name="line.489"></a>
+<span class="sourceLineNo">490</span>   */<a name="line.490"></a>
+<span class="sourceLineNo">491</span>  public static RegionState getMetaRegionState(ZKWatcher zkw, int replicaId)<a name="line.491"></a>
+<span class="sourceLineNo">492</span>          throws KeeperException {<a name="line.492"></a>
+<span class="sourceLineNo">493</span>    RegionState.State state = RegionState.State.OPEN;<a name="line.493"></a>
+<span class="sourceLineNo">494</span>    ServerName serverName = null;<a name="line.494"></a>
+<span class="sourceLineNo">495</span>    try {<a name="line.495"></a>
+<span class="sourceLineNo">496</span>      byte[] data = ZKUtil.getData(zkw, zkw.znodePaths.getZNodeForReplica(replicaId));<a name="line.496"></a>
+<span class="sourceLineNo">497</span>      if (data != null &amp;&amp; data.length &gt; 0 &amp;&amp; ProtobufUtil.isPBMagicPrefix(data)) {<a name="line.497"></a>
+<span class="sourceLineNo">498</span>        try {<a name="line.498"></a>
+<span class="sourceLineNo">499</span>          int prefixLen = ProtobufUtil.lengthOfPBMagic();<a name="line.499"></a>
+<span class="sourceLineNo">500</span>          ZooKeeperProtos.MetaRegionServer rl =<a name="line.500"></a>
+<span class="sourceLineNo">501</span>            ZooKeeperProtos.MetaRegionServer.PARSER.parseFrom(data, prefixLen,<a name="line.501"></a>
+<span class="sourceLineNo">502</span>                    data.length - prefixLen);<a name="line.502"></a>
+<span class="sourceLineNo">503</span>          if (rl.hasState()) {<a nam

<TRUNCATED>

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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.CreateAndFailSilent.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.CreateAndFailSilent.html b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.CreateAndFailSilent.html
index 81f531b..04be024 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.CreateAndFailSilent.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.CreateAndFailSilent.html
@@ -53,2036 +53,2078 @@
 <span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.AuthUtil;<a name="line.45"></a>
 <span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.46"></a>
 <span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.HConstants;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.security.Superusers;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.shaded.com.google.protobuf.InvalidProtocolBufferException;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil.ZKUtilOp.CreateAndFailSilent;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil.ZKUtilOp.DeleteNodeFailSilent;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil.ZKUtilOp.SetData;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.security.SecurityUtil;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.security.UserGroupInformation;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.security.authentication.util.KerberosUtil;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.zookeeper.AsyncCallback;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.zookeeper.CreateMode;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.zookeeper.KeeperException;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.zookeeper.KeeperException.NoNodeException;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.zookeeper.Op;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.zookeeper.Watcher;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.zookeeper.ZooDefs.Ids;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.zookeeper.ZooDefs.Perms;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.zookeeper.ZooKeeper;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.zookeeper.client.ZooKeeperSaslClient;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.zookeeper.data.ACL;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.zookeeper.data.Id;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.zookeeper.data.Stat;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.zookeeper.proto.CreateRequest;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.zookeeper.proto.DeleteRequest;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.zookeeper.proto.SetDataRequest;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.zookeeper.server.ZooKeeperSaslServer;<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> * Internal HBase utility class for ZooKeeper.<a name="line.81"></a>
-<span class="sourceLineNo">082</span> *<a name="line.82"></a>
-<span class="sourceLineNo">083</span> * &lt;p&gt;Contains only static methods and constants.<a name="line.83"></a>
-<span class="sourceLineNo">084</span> *<a name="line.84"></a>
-<span class="sourceLineNo">085</span> * &lt;p&gt;Methods all throw {@link KeeperException} if there is an unexpected<a name="line.85"></a>
-<span class="sourceLineNo">086</span> * zookeeper exception, so callers of these methods must handle appropriately.<a name="line.86"></a>
-<span class="sourceLineNo">087</span> * If ZK is required for the operation, the server will need to be aborted.<a name="line.87"></a>
-<span class="sourceLineNo">088</span> */<a name="line.88"></a>
-<span class="sourceLineNo">089</span>@InterfaceAudience.Private<a name="line.89"></a>
-<span class="sourceLineNo">090</span>public class ZKUtil {<a name="line.90"></a>
-<span class="sourceLineNo">091</span>  private static final Log LOG = LogFactory.getLog(ZKUtil.class);<a name="line.91"></a>
-<span class="sourceLineNo">092</span><a name="line.92"></a>
-<span class="sourceLineNo">093</span>  private static int zkDumpConnectionTimeOut;<a name="line.93"></a>
-<span class="sourceLineNo">094</span><a name="line.94"></a>
-<span class="sourceLineNo">095</span>  /**<a name="line.95"></a>
-<span class="sourceLineNo">096</span>   * Creates a new connection to ZooKeeper, pulling settings and ensemble config<a name="line.96"></a>
-<span class="sourceLineNo">097</span>   * from the specified configuration object using methods from {@link ZKConfig}.<a name="line.97"></a>
-<span class="sourceLineNo">098</span>   *<a name="line.98"></a>
-<span class="sourceLineNo">099</span>   * Sets the connection status monitoring watcher to the specified watcher.<a name="line.99"></a>
-<span class="sourceLineNo">100</span>   *<a name="line.100"></a>
-<span class="sourceLineNo">101</span>   * @param conf configuration to pull ensemble and other settings from<a name="line.101"></a>
-<span class="sourceLineNo">102</span>   * @param watcher watcher to monitor connection changes<a name="line.102"></a>
-<span class="sourceLineNo">103</span>   * @return connection to zookeeper<a name="line.103"></a>
-<span class="sourceLineNo">104</span>   * @throws IOException if unable to connect to zk or config problem<a name="line.104"></a>
-<span class="sourceLineNo">105</span>   */<a name="line.105"></a>
-<span class="sourceLineNo">106</span>  public static RecoverableZooKeeper connect(Configuration conf, Watcher watcher)<a name="line.106"></a>
-<span class="sourceLineNo">107</span>  throws IOException {<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    String ensemble = ZKConfig.getZKQuorumServersString(conf);<a name="line.108"></a>
-<span class="sourceLineNo">109</span>    return connect(conf, ensemble, watcher);<a name="line.109"></a>
-<span class="sourceLineNo">110</span>  }<a name="line.110"></a>
-<span class="sourceLineNo">111</span><a name="line.111"></a>
-<span class="sourceLineNo">112</span>  public static RecoverableZooKeeper connect(Configuration conf, String ensemble,<a name="line.112"></a>
-<span class="sourceLineNo">113</span>      Watcher watcher)<a name="line.113"></a>
-<span class="sourceLineNo">114</span>  throws IOException {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    return connect(conf, ensemble, watcher, null);<a name="line.115"></a>
-<span class="sourceLineNo">116</span>  }<a name="line.116"></a>
-<span class="sourceLineNo">117</span><a name="line.117"></a>
-<span class="sourceLineNo">118</span>  public static RecoverableZooKeeper connect(Configuration conf, String ensemble,<a name="line.118"></a>
-<span class="sourceLineNo">119</span>      Watcher watcher, final String identifier)<a name="line.119"></a>
-<span class="sourceLineNo">120</span>  throws IOException {<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    if(ensemble == null) {<a name="line.121"></a>
-<span class="sourceLineNo">122</span>      throw new IOException("Unable to determine ZooKeeper ensemble");<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    }<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    int timeout = conf.getInt(HConstants.ZK_SESSION_TIMEOUT,<a name="line.124"></a>
-<span class="sourceLineNo">125</span>        HConstants.DEFAULT_ZK_SESSION_TIMEOUT);<a name="line.125"></a>
-<span class="sourceLineNo">126</span>    if (LOG.isTraceEnabled()) {<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      LOG.trace(identifier + " opening connection to ZooKeeper ensemble=" + ensemble);<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    }<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    int retry = conf.getInt("zookeeper.recovery.retry", 3);<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    int retryIntervalMillis =<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      conf.getInt("zookeeper.recovery.retry.intervalmill", 1000);<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    int maxSleepTime = conf.getInt("zookeeper.recovery.retry.maxsleeptime", 60000);<a name="line.132"></a>
-<span class="sourceLineNo">133</span>    zkDumpConnectionTimeOut = conf.getInt("zookeeper.dump.connection.timeout",<a name="line.133"></a>
-<span class="sourceLineNo">134</span>        1000);<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    return new RecoverableZooKeeper(ensemble, timeout, watcher,<a name="line.135"></a>
-<span class="sourceLineNo">136</span>        retry, retryIntervalMillis, maxSleepTime, identifier);<a name="line.136"></a>
-<span class="sourceLineNo">137</span>  }<a name="line.137"></a>
-<span class="sourceLineNo">138</span><a name="line.138"></a>
-<span class="sourceLineNo">139</span>  /**<a name="line.139"></a>
-<span class="sourceLineNo">140</span>   * Log in the current zookeeper server process using the given configuration<a name="line.140"></a>
-<span class="sourceLineNo">141</span>   * keys for the credential file and login principal.<a name="line.141"></a>
-<span class="sourceLineNo">142</span>   *<a name="line.142"></a>
-<span class="sourceLineNo">143</span>   * &lt;p&gt;&lt;strong&gt;This is only applicable when running on secure hbase&lt;/strong&gt;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>   * On regular HBase (without security features), this will safely be ignored.<a name="line.144"></a>
-<span class="sourceLineNo">145</span>   * &lt;/p&gt;<a name="line.145"></a>
+<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.security.Superusers;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil.ZKUtilOp.CreateAndFailSilent;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil.ZKUtilOp.DeleteNodeFailSilent;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil.ZKUtilOp.SetData;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.security.SecurityUtil;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.security.UserGroupInformation;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.security.authentication.util.KerberosUtil;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.zookeeper.AsyncCallback;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.zookeeper.CreateMode;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.zookeeper.KeeperException;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.zookeeper.KeeperException.NoNodeException;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.zookeeper.Op;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.zookeeper.Watcher;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.zookeeper.ZooDefs.Ids;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.zookeeper.ZooDefs.Perms;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.zookeeper.ZooKeeper;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.zookeeper.client.ZooKeeperSaslClient;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.zookeeper.data.ACL;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.zookeeper.data.Id;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.zookeeper.data.Stat;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.zookeeper.proto.CreateRequest;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.zookeeper.proto.DeleteRequest;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.zookeeper.proto.SetDataRequest;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.zookeeper.server.ZooKeeperSaslServer;<a name="line.75"></a>
+<span class="sourceLineNo">076</span><a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.shaded.com.google.protobuf.InvalidProtocolBufferException;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos;<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> * Internal HBase utility class for ZooKeeper.<a name="line.82"></a>
+<span class="sourceLineNo">083</span> *<a name="line.83"></a>
+<span class="sourceLineNo">084</span> * &lt;p&gt;Contains only static methods and constants.<a name="line.84"></a>
+<span class="sourceLineNo">085</span> *<a name="line.85"></a>
+<span class="sourceLineNo">086</span> * &lt;p&gt;Methods all throw {@link KeeperException} if there is an unexpected<a name="line.86"></a>
+<span class="sourceLineNo">087</span> * zookeeper exception, so callers of these methods must handle appropriately.<a name="line.87"></a>
+<span class="sourceLineNo">088</span> * If ZK is required for the operation, the server will need to be aborted.<a name="line.88"></a>
+<span class="sourceLineNo">089</span> */<a name="line.89"></a>
+<span class="sourceLineNo">090</span>@InterfaceAudience.Private<a name="line.90"></a>
+<span class="sourceLineNo">091</span>public final class ZKUtil {<a name="line.91"></a>
+<span class="sourceLineNo">092</span>  private static final Log LOG = LogFactory.getLog(ZKUtil.class);<a name="line.92"></a>
+<span class="sourceLineNo">093</span><a name="line.93"></a>
+<span class="sourceLineNo">094</span>  private static int zkDumpConnectionTimeOut;<a name="line.94"></a>
+<span class="sourceLineNo">095</span><a name="line.95"></a>
+<span class="sourceLineNo">096</span>  private ZKUtil() {<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>   * Creates a new connection to ZooKeeper, pulling settings and ensemble config<a name="line.100"></a>
+<span class="sourceLineNo">101</span>   * from the specified configuration object using methods from {@link ZKConfig}.<a name="line.101"></a>
+<span class="sourceLineNo">102</span>   *<a name="line.102"></a>
+<span class="sourceLineNo">103</span>   * Sets the connection status monitoring watcher to the specified watcher.<a name="line.103"></a>
+<span class="sourceLineNo">104</span>   *<a name="line.104"></a>
+<span class="sourceLineNo">105</span>   * @param conf configuration to pull ensemble and other settings from<a name="line.105"></a>
+<span class="sourceLineNo">106</span>   * @param watcher watcher to monitor connection changes<a name="line.106"></a>
+<span class="sourceLineNo">107</span>   * @return connection to zookeeper<a name="line.107"></a>
+<span class="sourceLineNo">108</span>   * @throws IOException if unable to connect to zk or config problem<a name="line.108"></a>
+<span class="sourceLineNo">109</span>   */<a name="line.109"></a>
+<span class="sourceLineNo">110</span>  public static RecoverableZooKeeper connect(Configuration conf, Watcher watcher)<a name="line.110"></a>
+<span class="sourceLineNo">111</span>  throws IOException {<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    String ensemble = ZKConfig.getZKQuorumServersString(conf);<a name="line.112"></a>
+<span class="sourceLineNo">113</span>    return connect(conf, ensemble, watcher);<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>  public static RecoverableZooKeeper connect(Configuration conf, String ensemble,<a name="line.116"></a>
+<span class="sourceLineNo">117</span>      Watcher watcher)<a name="line.117"></a>
+<span class="sourceLineNo">118</span>  throws IOException {<a name="line.118"></a>
+<span class="sourceLineNo">119</span>    return connect(conf, ensemble, watcher, null);<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>  public static RecoverableZooKeeper connect(Configuration conf, String ensemble,<a name="line.122"></a>
+<span class="sourceLineNo">123</span>      Watcher watcher, final String identifier)<a name="line.123"></a>
+<span class="sourceLineNo">124</span>  throws IOException {<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    if(ensemble == null) {<a name="line.125"></a>
+<span class="sourceLineNo">126</span>      throw new IOException("Unable to determine ZooKeeper ensemble");<a name="line.126"></a>
+<span class="sourceLineNo">127</span>    }<a name="line.127"></a>
+<span class="sourceLineNo">128</span>    int timeout = conf.getInt(HConstants.ZK_SESSION_TIMEOUT,<a name="line.128"></a>
+<span class="sourceLineNo">129</span>        HConstants.DEFAULT_ZK_SESSION_TIMEOUT);<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    if (LOG.isTraceEnabled()) {<a name="line.130"></a>
+<span class="sourceLineNo">131</span>      LOG.trace(identifier + " opening connection to ZooKeeper ensemble=" + ensemble);<a name="line.131"></a>
+<span class="sourceLineNo">132</span>    }<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    int retry = conf.getInt("zookeeper.recovery.retry", 3);<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    int retryIntervalMillis =<a name="line.134"></a>
+<span class="sourceLineNo">135</span>      conf.getInt("zookeeper.recovery.retry.intervalmill", 1000);<a name="line.135"></a>
+<span class="sourceLineNo">136</span>    int maxSleepTime = conf.getInt("zookeeper.recovery.retry.maxsleeptime", 60000);<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    zkDumpConnectionTimeOut = conf.getInt("zookeeper.dump.connection.timeout",<a name="line.137"></a>
+<span class="sourceLineNo">138</span>        1000);<a name="line.138"></a>
+<span class="sourceLineNo">139</span>    return new RecoverableZooKeeper(ensemble, timeout, watcher,<a name="line.139"></a>
+<span class="sourceLineNo">140</span>        retry, retryIntervalMillis, maxSleepTime, identifier);<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>   * Log in the current zookeeper server process using the given configuration<a name="line.144"></a>
+<span class="sourceLineNo">145</span>   * keys for the credential file and login principal.<a name="line.145"></a>
 <span class="sourceLineNo">146</span>   *<a name="line.146"></a>
-<span class="sourceLineNo">147</span>   * @param conf The configuration data to use<a name="line.147"></a>
-<span class="sourceLineNo">148</span>   * @param keytabFileKey Property key used to configure the path to the credential file<a name="line.148"></a>
-<span class="sourceLineNo">149</span>   * @param userNameKey Property key used to configure the login principal<a name="line.149"></a>
-<span class="sourceLineNo">150</span>   * @param hostname Current hostname to use in any credentials<a name="line.150"></a>
-<span class="sourceLineNo">151</span>   * @throws IOException underlying exception from SecurityUtil.login() call<a name="line.151"></a>
-<span class="sourceLineNo">152</span>   */<a name="line.152"></a>
-<span class="sourceLineNo">153</span>  public static void loginServer(Configuration conf, String keytabFileKey,<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      String userNameKey, String hostname) throws IOException {<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    login(conf, keytabFileKey, userNameKey, hostname,<a name="line.155"></a>
-<span class="sourceLineNo">156</span>          ZooKeeperSaslServer.LOGIN_CONTEXT_NAME_KEY,<a name="line.156"></a>
-<span class="sourceLineNo">157</span>          JaasConfiguration.SERVER_KEYTAB_KERBEROS_CONFIG_NAME);<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>  /**<a name="line.160"></a>
-<span class="sourceLineNo">161</span>   * Log in the current zookeeper client using the given configuration<a name="line.161"></a>
-<span class="sourceLineNo">162</span>   * keys for the credential file and login principal.<a name="line.162"></a>
-<span class="sourceLineNo">163</span>   *<a name="line.163"></a>
-<span class="sourceLineNo">164</span>   * &lt;p&gt;&lt;strong&gt;This is only applicable when running on secure hbase&lt;/strong&gt;<a name="line.164"></a>
-<span class="sourceLineNo">165</span>   * On regular HBase (without security features), this will safely be ignored.<a name="line.165"></a>
-<span class="sourceLineNo">166</span>   * &lt;/p&gt;<a name="line.166"></a>
+<span class="sourceLineNo">147</span>   * &lt;p&gt;&lt;strong&gt;This is only applicable when running on secure hbase&lt;/strong&gt;<a name="line.147"></a>
+<span class="sourceLineNo">148</span>   * On regular HBase (without security features), this will safely be ignored.<a name="line.148"></a>
+<span class="sourceLineNo">149</span>   * &lt;/p&gt;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>   *<a name="line.150"></a>
+<span class="sourceLineNo">151</span>   * @param conf The configuration data to use<a name="line.151"></a>
+<span class="sourceLineNo">152</span>   * @param keytabFileKey Property key used to configure the path to the credential file<a name="line.152"></a>
+<span class="sourceLineNo">153</span>   * @param userNameKey Property key used to configure the login principal<a name="line.153"></a>
+<span class="sourceLineNo">154</span>   * @param hostname Current hostname to use in any credentials<a name="line.154"></a>
+<span class="sourceLineNo">155</span>   * @throws IOException underlying exception from SecurityUtil.login() call<a name="line.155"></a>
+<span class="sourceLineNo">156</span>   */<a name="line.156"></a>
+<span class="sourceLineNo">157</span>  public static void loginServer(Configuration conf, String keytabFileKey,<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      String userNameKey, String hostname) throws IOException {<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    login(conf, keytabFileKey, userNameKey, hostname,<a name="line.159"></a>
+<span class="sourceLineNo">160</span>          ZooKeeperSaslServer.LOGIN_CONTEXT_NAME_KEY,<a name="line.160"></a>
+<span class="sourceLineNo">161</span>          JaasConfiguration.SERVER_KEYTAB_KERBEROS_CONFIG_NAME);<a name="line.161"></a>
+<span class="sourceLineNo">162</span>  }<a name="line.162"></a>
+<span class="sourceLineNo">163</span><a name="line.163"></a>
+<span class="sourceLineNo">164</span>  /**<a name="line.164"></a>
+<span class="sourceLineNo">165</span>   * Log in the current zookeeper client using the given configuration<a name="line.165"></a>
+<span class="sourceLineNo">166</span>   * keys for the credential file and login principal.<a name="line.166"></a>
 <span class="sourceLineNo">167</span>   *<a name="line.167"></a>
-<span class="sourceLineNo">168</span>   * @param conf The configuration data to use<a name="line.168"></a>
-<span class="sourceLineNo">169</span>   * @param keytabFileKey Property key used to configure the path to the credential file<a name="line.169"></a>
-<span class="sourceLineNo">170</span>   * @param userNameKey Property key used to configure the login principal<a name="line.170"></a>
-<span class="sourceLineNo">171</span>   * @param hostname Current hostname to use in any credentials<a name="line.171"></a>
-<span class="sourceLineNo">172</span>   * @throws IOException underlying exception from SecurityUtil.login() call<a name="line.172"></a>
-<span class="sourceLineNo">173</span>   */<a name="line.173"></a>
-<span class="sourceLineNo">174</span>  public static void loginClient(Configuration conf, String keytabFileKey,<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      String userNameKey, String hostname) throws IOException {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    login(conf, keytabFileKey, userNameKey, hostname,<a name="line.176"></a>
-<span class="sourceLineNo">177</span>          ZooKeeperSaslClient.LOGIN_CONTEXT_NAME_KEY,<a name="line.177"></a>
-<span class="sourceLineNo">178</span>          JaasConfiguration.CLIENT_KEYTAB_KERBEROS_CONFIG_NAME);<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>   * Log in the current process using the given configuration keys for the<a name="line.182"></a>
-<span class="sourceLineNo">183</span>   * credential file and login principal.<a name="line.183"></a>
-<span class="sourceLineNo">184</span>   *<a name="line.184"></a>
-<span class="sourceLineNo">185</span>   * &lt;p&gt;&lt;strong&gt;This is only applicable when running on secure hbase&lt;/strong&gt;<a name="line.185"></a>
-<span class="sourceLineNo">186</span>   * On regular HBase (without security features), this will safely be ignored.<a name="line.186"></a>
-<span class="sourceLineNo">187</span>   * &lt;/p&gt;<a name="line.187"></a>
+<span class="sourceLineNo">168</span>   * &lt;p&gt;&lt;strong&gt;This is only applicable when running on secure hbase&lt;/strong&gt;<a name="line.168"></a>
+<span class="sourceLineNo">169</span>   * On regular HBase (without security features), this will safely be ignored.<a name="line.169"></a>
+<span class="sourceLineNo">170</span>   * &lt;/p&gt;<a name="line.170"></a>
+<span class="sourceLineNo">171</span>   *<a name="line.171"></a>
+<span class="sourceLineNo">172</span>   * @param conf The configuration data to use<a name="line.172"></a>
+<span class="sourceLineNo">173</span>   * @param keytabFileKey Property key used to configure the path to the credential file<a name="line.173"></a>
+<span class="sourceLineNo">174</span>   * @param userNameKey Property key used to configure the login principal<a name="line.174"></a>
+<span class="sourceLineNo">175</span>   * @param hostname Current hostname to use in any credentials<a name="line.175"></a>
+<span class="sourceLineNo">176</span>   * @throws IOException underlying exception from SecurityUtil.login() call<a name="line.176"></a>
+<span class="sourceLineNo">177</span>   */<a name="line.177"></a>
+<span class="sourceLineNo">178</span>  public static void loginClient(Configuration conf, String keytabFileKey,<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      String userNameKey, String hostname) throws IOException {<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    login(conf, keytabFileKey, userNameKey, hostname,<a name="line.180"></a>
+<span class="sourceLineNo">181</span>          ZooKeeperSaslClient.LOGIN_CONTEXT_NAME_KEY,<a name="line.181"></a>
+<span class="sourceLineNo">182</span>          JaasConfiguration.CLIENT_KEYTAB_KERBEROS_CONFIG_NAME);<a name="line.182"></a>
+<span class="sourceLineNo">183</span>  }<a name="line.183"></a>
+<span class="sourceLineNo">184</span><a name="line.184"></a>
+<span class="sourceLineNo">185</span>  /**<a name="line.185"></a>
+<span class="sourceLineNo">186</span>   * Log in the current process using the given configuration keys for the<a name="line.186"></a>
+<span class="sourceLineNo">187</span>   * credential file and login principal.<a name="line.187"></a>
 <span class="sourceLineNo">188</span>   *<a name="line.188"></a>
-<span class="sourceLineNo">189</span>   * @param conf The configuration data to use<a name="line.189"></a>
-<span class="sourceLineNo">190</span>   * @param keytabFileKey Property key used to configure the path to the credential file<a name="line.190"></a>
-<span class="sourceLineNo">191</span>   * @param userNameKey Property key used to configure the login principal<a name="line.191"></a>
-<span class="sourceLineNo">192</span>   * @param hostname Current hostname to use in any credentials<a name="line.192"></a>
-<span class="sourceLineNo">193</span>   * @param loginContextProperty property name to expose the entry name<a name="line.193"></a>
-<span class="sourceLineNo">194</span>   * @param loginContextName jaas entry name<a name="line.194"></a>
-<span class="sourceLineNo">195</span>   * @throws IOException underlying exception from SecurityUtil.login() call<a name="line.195"></a>
-<span class="sourceLineNo">196</span>   */<a name="line.196"></a>
-<span class="sourceLineNo">197</span>  private static void login(Configuration conf, String keytabFileKey,<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      String userNameKey, String hostname,<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      String loginContextProperty, String loginContextName)<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      throws IOException {<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    if (!isSecureZooKeeper(conf))<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>    // User has specified a jaas.conf, keep this one as the good one.<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    // HBASE_OPTS="-Djava.security.auth.login.config=jaas.conf"<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    if (System.getProperty("java.security.auth.login.config") != null)<a name="line.206"></a>
-<span class="sourceLineNo">207</span>      return;<a name="line.207"></a>
+<span class="sourceLineNo">189</span>   * &lt;p&gt;&lt;strong&gt;This is only applicable when running on secure hbase&lt;/strong&gt;<a name="line.189"></a>
+<span class="sourceLineNo">190</span>   * On regular HBase (without security features), this will safely be ignored.<a name="line.190"></a>
+<span class="sourceLineNo">191</span>   * &lt;/p&gt;<a name="line.191"></a>
+<span class="sourceLineNo">192</span>   *<a name="line.192"></a>
+<span class="sourceLineNo">193</span>   * @param conf The configuration data to use<a name="line.193"></a>
+<span class="sourceLineNo">194</span>   * @param keytabFileKey Property key used to configure the path to the credential file<a name="line.194"></a>
+<span class="sourceLineNo">195</span>   * @param userNameKey Property key used to configure the login principal<a name="line.195"></a>
+<span class="sourceLineNo">196</span>   * @param hostname Current hostname to use in any credentials<a name="line.196"></a>
+<span class="sourceLineNo">197</span>   * @param loginContextProperty property name to expose the entry name<a name="line.197"></a>
+<span class="sourceLineNo">198</span>   * @param loginContextName jaas entry name<a name="line.198"></a>
+<span class="sourceLineNo">199</span>   * @throws IOException underlying exception from SecurityUtil.login() call<a name="line.199"></a>
+<span class="sourceLineNo">200</span>   */<a name="line.200"></a>
+<span class="sourceLineNo">201</span>  private static void login(Configuration conf, String keytabFileKey,<a name="line.201"></a>
+<span class="sourceLineNo">202</span>      String userNameKey, String hostname,<a name="line.202"></a>
+<span class="sourceLineNo">203</span>      String loginContextProperty, String loginContextName)<a name="line.203"></a>
+<span class="sourceLineNo">204</span>      throws IOException {<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    if (!isSecureZooKeeper(conf)) {<a name="line.205"></a>
+<span class="sourceLineNo">206</span>      return;<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    }<a name="line.207"></a>
 <span class="sourceLineNo">208</span><a name="line.208"></a>
-<span class="sourceLineNo">209</span>    // No keytab specified, no auth<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    String keytabFilename = conf.get(keytabFileKey);<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    if (keytabFilename == null) {<a name="line.211"></a>
-<span class="sourceLineNo">212</span>      LOG.warn("no keytab specified for: " + keytabFileKey);<a name="line.212"></a>
-<span class="sourceLineNo">213</span>      return;<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    }<a name="line.214"></a>
-<span class="sourceLineNo">215</span><a name="line.215"></a>
-<span class="sourceLineNo">216</span>    String principalConfig = conf.get(userNameKey, System.getProperty("user.name"));<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    String principalName = SecurityUtil.getServerPrincipal(principalConfig, hostname);<a name="line.217"></a>
-<span class="sourceLineNo">218</span><a name="line.218"></a>
-<span class="sourceLineNo">219</span>    // Initialize the "jaas.conf" for keyTab/principal,<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    // If keyTab is not specified use the Ticket Cache.<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    // and set the zookeeper login context name.<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    JaasConfiguration jaasConf = new JaasConfiguration(loginContextName,<a name="line.222"></a>
-<span class="sourceLineNo">223</span>        principalName, keytabFilename);<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    javax.security.auth.login.Configuration.setConfiguration(jaasConf);<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    System.setProperty(loginContextProperty, loginContextName);<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>  /**<a name="line.228"></a>
-<span class="sourceLineNo">229</span>   * A JAAS configuration that defines the login modules that we want to use for login.<a name="line.229"></a>
-<span class="sourceLineNo">230</span>   */<a name="line.230"></a>
-<span class="sourceLineNo">231</span>  private static class JaasConfiguration extends javax.security.auth.login.Configuration {<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    private static final String SERVER_KEYTAB_KERBEROS_CONFIG_NAME =<a name="line.232"></a>
-<span class="sourceLineNo">233</span>      "zookeeper-server-keytab-kerberos";<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    private static final String CLIENT_KEYTAB_KERBEROS_CONFIG_NAME =<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      "zookeeper-client-keytab-kerberos";<a name="line.235"></a>
-<span class="sourceLineNo">236</span><a name="line.236"></a>
-<span class="sourceLineNo">237</span>    private static final Map&lt;String, String&gt; BASIC_JAAS_OPTIONS = new HashMap&lt;&gt;();<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    static {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>      String jaasEnvVar = System.getenv("HBASE_JAAS_DEBUG");<a name="line.239"></a>
-<span class="sourceLineNo">240</span>      if (jaasEnvVar != null &amp;&amp; "true".equalsIgnoreCase(jaasEnvVar)) {<a name="line.240"></a>
-<span class="sourceLineNo">241</span>        BASIC_JAAS_OPTIONS.put("debug", "true");<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      }<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    }<a name="line.243"></a>
-<span class="sourceLineNo">244</span><a name="line.244"></a>
-<span class="sourceLineNo">245</span>    private static final Map&lt;String,String&gt; KEYTAB_KERBEROS_OPTIONS = new HashMap&lt;&gt;();<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    static {<a name="line.246"></a>
-<span class="sourceLineNo">247</span>      KEYTAB_KERBEROS_OPTIONS.put("doNotPrompt", "true");<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      KEYTAB_KERBEROS_OPTIONS.put("storeKey", "true");<a name="line.248"></a>
-<span class="sourceLineNo">249</span>      KEYTAB_KERBEROS_OPTIONS.put("refreshKrb5Config", "true");<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      KEYTAB_KERBEROS_OPTIONS.putAll(BASIC_JAAS_OPTIONS);<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>    private static final AppConfigurationEntry KEYTAB_KERBEROS_LOGIN =<a name="line.253"></a>
-<span class="sourceLineNo">254</span>      new AppConfigurationEntry(KerberosUtil.getKrb5LoginModuleName(),<a name="line.254"></a>
-<span class="sourceLineNo">255</span>                                LoginModuleControlFlag.REQUIRED,<a name="line.255"></a>
-<span class="sourceLineNo">256</span>                                KEYTAB_KERBEROS_OPTIONS);<a name="line.256"></a>
-<span class="sourceLineNo">257</span><a name="line.257"></a>
-<span class="sourceLineNo">258</span>    private static final AppConfigurationEntry[] KEYTAB_KERBEROS_CONF =<a name="line.258"></a>
-<span class="sourceLineNo">259</span>      new AppConfigurationEntry[]{KEYTAB_KERBEROS_LOGIN};<a name="line.259"></a>
-<span class="sourceLineNo">260</span><a name="line.260"></a>
-<span class="sourceLineNo">261</span>    private javax.security.auth.login.Configuration baseConfig;<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    private final String loginContextName;<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    private final boolean useTicketCache;<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    private final String keytabFile;<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    private final String principal;<a name="line.265"></a>
+<span class="sourceLineNo">209</span>    // User has specified a jaas.conf, keep this one as the good one.<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    // HBASE_OPTS="-Djava.security.auth.login.config=jaas.conf"<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    if (System.getProperty("java.security.auth.login.config") != null) {<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      return;<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>    // No keytab specified, no auth<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    String keytabFilename = conf.get(keytabFileKey);<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    if (keytabFilename == null) {<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      LOG.warn("no keytab specified for: " + keytabFileKey);<a name="line.218"></a>
+<span class="sourceLineNo">219</span>      return;<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    }<a name="line.220"></a>
+<span class="sourceLineNo">221</span><a name="line.221"></a>
+<span class="sourceLineNo">222</span>    String principalConfig = conf.get(userNameKey, System.getProperty("user.name"));<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    String principalName = SecurityUtil.getServerPrincipal(principalConfig, hostname);<a name="line.223"></a>
+<span class="sourceLineNo">224</span><a name="line.224"></a>
+<span class="sourceLineNo">225</span>    // Initialize the "jaas.conf" for keyTab/principal,<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    // If keyTab is not specified use the Ticket Cache.<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    // and set the zookeeper login context name.<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    JaasConfiguration jaasConf = new JaasConfiguration(loginContextName,<a name="line.228"></a>
+<span class="sourceLineNo">229</span>        principalName, keytabFilename);<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    javax.security.auth.login.Configuration.setConfiguration(jaasConf);<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    System.setProperty(loginContextProperty, loginContextName);<a name="line.231"></a>
+<span class="sourceLineNo">232</span>  }<a name="line.232"></a>
+<span class="sourceLineNo">233</span><a name="line.233"></a>
+<span class="sourceLineNo">234</span>  /**<a name="line.234"></a>
+<span class="sourceLineNo">235</span>   * A JAAS configuration that defines the login modules that we want to use for login.<a name="line.235"></a>
+<span class="sourceLineNo">236</span>   */<a name="line.236"></a>
+<span class="sourceLineNo">237</span>  private static class JaasConfiguration extends javax.security.auth.login.Configuration {<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    private static final String SERVER_KEYTAB_KERBEROS_CONFIG_NAME =<a name="line.238"></a>
+<span class="sourceLineNo">239</span>      "zookeeper-server-keytab-kerberos";<a name="line.239"></a>
+<span class="sourceLineNo">240</span>    private static final String CLIENT_KEYTAB_KERBEROS_CONFIG_NAME =<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      "zookeeper-client-keytab-kerberos";<a name="line.241"></a>
+<span class="sourceLineNo">242</span><a name="line.242"></a>
+<span class="sourceLineNo">243</span>    private static final Map&lt;String, String&gt; BASIC_JAAS_OPTIONS = new HashMap&lt;&gt;();<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    static {<a name="line.244"></a>
+<span class="sourceLineNo">245</span>      String jaasEnvVar = System.getenv("HBASE_JAAS_DEBUG");<a name="line.245"></a>
+<span class="sourceLineNo">246</span>      if (jaasEnvVar != null &amp;&amp; "true".equalsIgnoreCase(jaasEnvVar)) {<a name="line.246"></a>
+<span class="sourceLineNo">247</span>        BASIC_JAAS_OPTIONS.put("debug", "true");<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>    private static final Map&lt;String,String&gt; KEYTAB_KERBEROS_OPTIONS = new HashMap&lt;&gt;();<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    static {<a name="line.252"></a>
+<span class="sourceLineNo">253</span>      KEYTAB_KERBEROS_OPTIONS.put("doNotPrompt", "true");<a name="line.253"></a>
+<span class="sourceLineNo">254</span>      KEYTAB_KERBEROS_OPTIONS.put("storeKey", "true");<a name="line.254"></a>
+<span class="sourceLineNo">255</span>      KEYTAB_KERBEROS_OPTIONS.put("refreshKrb5Config", "true");<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      KEYTAB_KERBEROS_OPTIONS.putAll(BASIC_JAAS_OPTIONS);<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    }<a name="line.257"></a>
+<span class="sourceLineNo">258</span><a name="line.258"></a>
+<span class="sourceLineNo">259</span>    private static final AppConfigurationEntry KEYTAB_KERBEROS_LOGIN =<a name="line.259"></a>
+<span class="sourceLineNo">260</span>      new AppConfigurationEntry(KerberosUtil.getKrb5LoginModuleName(),<a name="line.260"></a>
+<span class="sourceLineNo">261</span>                                LoginModuleControlFlag.REQUIRED,<a name="line.261"></a>
+<span class="sourceLineNo">262</span>                                KEYTAB_KERBEROS_OPTIONS);<a name="line.262"></a>
+<span class="sourceLineNo">263</span><a name="line.263"></a>
+<span class="sourceLineNo">264</span>    private static final AppConfigurationEntry[] KEYTAB_KERBEROS_CONF =<a name="line.264"></a>
+<span class="sourceLineNo">265</span>      new AppConfigurationEntry[]{KEYTAB_KERBEROS_LOGIN};<a name="line.265"></a>
 <span class="sourceLineNo">266</span><a name="line.266"></a>
-<span class="sourceLineNo">267</span>    public JaasConfiguration(String loginContextName, String principal, String keytabFile) {<a name="line.267"></a>
-<span class="sourceLineNo">268</span>      this(loginContextName, principal, keytabFile, keytabFile == null || keytabFile.length() == 0);<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>    private JaasConfiguration(String loginContextName, String principal,<a name="line.271"></a>
-<span class="sourceLineNo">272</span>                             String keytabFile, boolean useTicketCache) {<a name="line.272"></a>
-<span class="sourceLineNo">273</span>      try {<a name="line.273"></a>
-<span class="sourceLineNo">274</span>        this.baseConfig = javax.security.auth.login.Configuration.getConfiguration();<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      } catch (SecurityException e) {<a name="line.275"></a>
-<span class="sourceLineNo">276</span>        this.baseConfig = null;<a name="line.276"></a>
-<span class="sourceLineNo">277</span>      }<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      this.loginContextName = loginContextName;<a name="line.278"></a>
-<span class="sourceLineNo">279</span>      this.useTicketCache = useTicketCache;<a name="line.279"></a>
-<span class="sourceLineNo">280</span>      this.keytabFile = keytabFile;<a name="line.280"></a>
-<span class="sourceLineNo">281</span>      this.principal = principal;<a name="line.281"></a>
-<span class="sourceLineNo">282</span>      LOG.info("JaasConfiguration loginContextName=" + loginContextName +<a name="line.282"></a>
-<span class="sourceLineNo">283</span>               " principal=" + principal + " useTicketCache=" + useTicketCache +<a name="line.283"></a>
-<span class="sourceLineNo">284</span>               " keytabFile=" + keytabFile);<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>    @Override<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    public AppConfigurationEntry[] getAppConfigurationEntry(String appName) {<a name="line.288"></a>
-<span class="sourceLineNo">289</span>      if (loginContextName.equals(appName)) {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        if (!useTicketCache) {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>          KEYTAB_KERBEROS_OPTIONS.put("keyTab", keytabFile);<a name="line.291"></a>
-<span class="sourceLineNo">292</span>          KEYTAB_KERBEROS_OPTIONS.put("useKeyTab", "true");<a name="line.292"></a>
-<span class="sourceLineNo">293</span>        }<a name="line.293"></a>
-<span class="sourceLineNo">294</span>        KEYTAB_KERBEROS_OPTIONS.put("principal", principal);<a name="line.294"></a>
-<span class="sourceLineNo">295</span>        KEYTAB_KERBEROS_OPTIONS.put("useTicketCache", useTicketCache ? "true" : "false");<a name="line.295"></a>
-<span class="sourceLineNo">296</span>        return KEYTAB_KERBEROS_CONF;<a name="line.296"></a>
-<span class="sourceLineNo">297</span>      }<a name="line.297"></a>
-<span class="sourceLineNo">298</span>      if (baseConfig != null) return baseConfig.getAppConfigurationEntry(appName);<a name="line.298"></a>
-<span class="sourceLineNo">299</span>      return(null);<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    }<a name="line.300"></a>
-<span class="sourceLineNo">301</span>  }<a name="line.301"></a>
-<span class="sourceLineNo">302</span><a name="line.302"></a>
-<span class="sourceLineNo">303</span>  //<a name="line.303"></a>
-<span class="sourceLineNo">304</span>  // Helper methods<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>   * Returns the full path of the immediate parent of the specified node.<a name="line.307"></a>
-<span class="sourceLineNo">308</span>   * @param node path to get parent of<a name="line.308"></a>
-<span class="sourceLineNo">309</span>   * @return parent of path, null if passed the root node or an invalid node<a name="line.309"></a>
-<span class="sourceLineNo">310</span>   */<a name="line.310"></a>
-<span class="sourceLineNo">311</span>  public static String getParent(String node) {<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    int idx = node.lastIndexOf(ZNodePaths.ZNODE_PATH_SEPARATOR);<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    return idx &lt;= 0 ? null : node.substring(0, idx);<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">267</span>    private javax.security.auth.login.Configuration baseConfig;<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    private final String loginContextName;<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    private final boolean useTicketCache;<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    private final String keytabFile;<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    private final String principal;<a name="line.271"></a>
+<span class="sourceLineNo">272</span><a name="line.272"></a>
+<span class="sourceLineNo">273</span>    public JaasConfiguration(String loginContextName, String principal, String keytabFile) {<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      this(loginContextName, principal, keytabFile, keytabFile == null || keytabFile.length() == 0);<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>    private JaasConfiguration(String loginContextName, String principal,<a name="line.277"></a>
+<span class="sourceLineNo">278</span>                             String keytabFile, boolean useTicketCache) {<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      try {<a name="line.279"></a>
+<span class="sourceLineNo">280</span>        this.baseConfig = javax.security.auth.login.Configuration.getConfiguration();<a name="line.280"></a>
+<span class="sourceLineNo">281</span>      } catch (SecurityException e) {<a name="line.281"></a>
+<span class="sourceLineNo">282</span>        this.baseConfig = null;<a name="line.282"></a>
+<span class="sourceLineNo">283</span>      }<a name="line.283"></a>
+<span class="sourceLineNo">284</span>      this.loginContextName = loginContextName;<a name="line.284"></a>
+<span class="sourceLineNo">285</span>      this.useTicketCache = useTicketCache;<a name="line.285"></a>
+<span class="sourceLineNo">286</span>      this.keytabFile = keytabFile;<a name="line.286"></a>
+<span class="sourceLineNo">287</span>      this.principal = principal;<a name="line.287"></a>
+<span class="sourceLineNo">288</span>      LOG.info("JaasConfiguration loginContextName=" + loginContextName +<a name="line.288"></a>
+<span class="sourceLineNo">289</span>               " principal=" + principal + " useTicketCache=" + useTicketCache +<a name="line.289"></a>
+<span class="sourceLineNo">290</span>               " keytabFile=" + keytabFile);<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    }<a name="line.291"></a>
+<span class="sourceLineNo">292</span><a name="line.292"></a>
+<span class="sourceLineNo">293</span>    @Override<a name="line.293"></a>
+<span class="sourceLineNo">294</span>    public AppConfigurationEntry[] getAppConfigurationEntry(String appName) {<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      if (loginContextName.equals(appName)) {<a name="line.295"></a>
+<span class="sourceLineNo">296</span>        if (!useTicketCache) {<a name="line.296"></a>
+<span class="sourceLineNo">297</span>          KEYTAB_KERBEROS_OPTIONS.put("keyTab", keytabFile);<a name="line.297"></a>
+<span class="sourceLineNo">298</span>          KEYTAB_KERBEROS_OPTIONS.put("useKeyTab", "true");<a name="line.298"></a>
+<span class="sourceLineNo">299</span>        }<a name="line.299"></a>
+<span class="sourceLineNo">300</span>        KEYTAB_KERBEROS_OPTIONS.put("principal", principal);<a name="line.300"></a>
+<span class="sourceLineNo">301</span>        KEYTAB_KERBEROS_OPTIONS.put("useTicketCache", useTicketCache ? "true" : "false");<a name="line.301"></a>
+<span class="sourceLineNo">302</span>        return KEYTAB_KERBEROS_CONF;<a name="line.302"></a>
+<span class="sourceLineNo">303</span>      }<a name="line.303"></a>
+<span class="sourceLineNo">304</span><a name="line.304"></a>
+<span class="sourceLineNo">305</span>      if (baseConfig != null) {<a name="line.305"></a>
+<span class="sourceLineNo">306</span>        return baseConfig.getAppConfigurationEntry(appName);<a name="line.306"></a>
+<span class="sourceLineNo">307</span>      }<a name="line.307"></a>
+<span class="sourceLineNo">308</span><a name="line.308"></a>
+<span class="sourceLineNo">309</span>      return(null);<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><a name="line.312"></a>
+<span class="sourceLineNo">313</span>  //<a name="line.313"></a>
+<span class="sourceLineNo">314</span>  // Helper methods<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>   * Get the name of the current node from the specified fully-qualified path.<a name="line.317"></a>
-<span class="sourceLineNo">318</span>   * @param path fully-qualified path<a name="line.318"></a>
-<span class="sourceLineNo">319</span>   * @return name of the current node<a name="line.319"></a>
+<span class="sourceLineNo">317</span>   * Returns the full path of the immediate parent of the specified node.<a name="line.317"></a>
+<span class="sourceLineNo">318</span>   * @param node path to get parent of<a name="line.318"></a>
+<span class="sourceLineNo">319</span>   * @return parent of path, null if passed the root node or an invalid node<a name="line.319"></a>
 <span class="sourceLineNo">320</span>   */<a name="line.320"></a>
-<span class="sourceLineNo">321</span>  public static String getNodeName(String path) {<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    return path.substring(path.lastIndexOf("/")+1);<a name="line.322"></a>
-<span class="sourceLineNo">323</span>  }<a name="line.323"></a>
-<span class="sourceLineNo">324</span><a name="line.324"></a>
-<span class="sourceLineNo">325</span>  //<a name="line.325"></a>
-<span class="sourceLineNo">326</span>  // Existence checks and watches<a name="line.326"></a>
-<span class="sourceLineNo">327</span>  //<a name="line.327"></a>
-<span class="sourceLineNo">328</span><a name="line.328"></a>
-<span class="sourceLineNo">329</span>  /**<a name="line.329"></a>
-<span class="sourceLineNo">330</span>   * Watch the specified znode for delete/create/change events.  The watcher is<a name="line.330"></a>
-<span class="sourceLineNo">331</span>   * set whether or not the node exists.  If the node already exists, the method<a name="line.331"></a>
-<span class="sourceLineNo">332</span>   * returns true.  If the node does not exist, the method returns false.<a name="line.332"></a>
-<span class="sourceLineNo">333</span>   *<a name="line.333"></a>
-<span class="sourceLineNo">334</span>   * @param zkw zk reference<a name="line.334"></a>
-<span class="sourceLineNo">335</span>   * @param znode path of node to watch<a name="line.335"></a>
-<span class="sourceLineNo">336</span>   * @return true if znode exists, false if does not exist or error<a name="line.336"></a>
-<span class="sourceLineNo">337</span>   * @throws KeeperException if unexpected zookeeper exception<a name="line.337"></a>
-<span class="sourceLineNo">338</span>   */<a name="line.338"></a>
-<span class="sourceLineNo">339</span>  public static boolean watchAndCheckExists(ZKWatcher zkw, String znode)<a name="line.339"></a>
-<span class="sourceLineNo">340</span>  throws KeeperException {<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    try {<a name="line.341"></a>
-<span class="sourceLineNo">342</span>      Stat s = zkw.getRecoverableZooKeeper().exists(znode, zkw);<a name="line.342"></a>
-<span class="sourceLineNo">343</span>      boolean exists = s != null ? true : false;<a name="line.343"></a>
-<span class="sourceLineNo">344</span>      if (exists) {<a name="line.344"></a>
-<span class="sourceLineNo">345</span>        LOG.debug(zkw.prefix("Set watcher on existing znode=" + znode));<a name="line.345"></a>
-<span class="sourceLineNo">346</span>      } else {<a name="line.346"></a>
-<span class="sourceLineNo">347</span>        LOG.debug(zkw.prefix("Set watcher on znode that does not yet exist, " + znode));<a name="line.347"></a>
-<span class="sourceLineNo">348</span>      }<a name="line.348"></a>
-<span class="sourceLineNo">349</span>      return exists;<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    } catch (KeeperException e) {<a name="line.350"></a>
-<span class="sourceLineNo">351</span>      LOG.warn(zkw.prefix("Unable to set watcher on znode " + znode), e);<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      zkw.keeperException(e);<a name="line.352"></a>
-<span class="sourceLineNo">353</span>      return false;<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    } catch (InterruptedException e) {<a name="line.354"></a>
-<span class="sourceLineNo">355</span>      LOG.warn(zkw.prefix("Unable to set watcher on znode " + znode), e);<a name="line.355"></a>
-<span class="sourceLineNo">356</span>      zkw.interruptedException(e);<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      return false;<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    }<a name="line.358"></a>
-<span class="sourceLineNo">359</span>  }<a name="line.359"></a>
-<span class="sourceLineNo">360</span><a name="line.360"></a>
-<span class="sourceLineNo">361</span>  /**<a name="line.361"></a>
-<span class="sourceLineNo">362</span>   * Watch the specified znode, but only if exists. Useful when watching<a name="line.362"></a>
-<span class="sourceLineNo">363</span>   * for deletions. Uses .getData() (and handles NoNodeException) instead<a name="line.363"></a>
-<span class="sourceLineNo">364</span>   * of .exists() to accomplish this, as .getData() will only set a watch if<a name="line.364"></a>
-<span class="sourceLineNo">365</span>   * the znode exists.<a name="line.365"></a>
-<span class="sourceLineNo">366</span>   * @param zkw zk reference<a name="line.366"></a>
-<span class="sourceLineNo">367</span>   * @param znode path of node to watch<a name="line.367"></a>
-<span class="sourceLineNo">368</span>   * @return true if the watch is set, false if node does not exists<a name="line.368"></a>
-<span class="sourceLineNo">369</span>   * @throws KeeperException if unexpected zookeeper exception<a name="line.369"></a>
-<span class="sourceLineNo">370</span>   */<a name="line.370"></a>
-<span class="sourceLineNo">371</span>  public static boolean setWatchIfNodeExists(ZKWatcher zkw, String znode)<a name="line.371"></a>
-<span class="sourceLineNo">372</span>      throws KeeperException {<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    try {<a name="line.373"></a>
-<span class="sourceLineNo">374</span>      zkw.getRecoverableZooKeeper().getData(znode, true, null);<a name="line.374"></a>
-<span class="sourceLineNo">375</span>      return true;<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    } catch (NoNodeException e) {<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      return false;<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    } catch (InterruptedException e) {<a name="line.378"></a>
-<span class="sourceLineNo">379</span>      LOG.warn(zkw.prefix("Unable to set watcher on znode " + znode), e);<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      zkw.interruptedException(e);<a name="line.380"></a>
-<span class="sourceLineNo">381</span>      return false;<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>   * Check if the specified node exists.  Sets no watches.<a name="line.386"></a>
-<span class="sourceLineNo">387</span>   *<a name="line.387"></a>
-<span class="sourceLineNo">388</span>   * @param zkw zk reference<a name="line.388"></a>
-<span class="sourceLineNo">389</span>   * @param znode path of node to watch<a name="line.389"></a>
-<span class="sourceLineNo">390</span>   * @return version of the node if it exists, -1 if does not exist<a name="line.390"></a>
-<span class="sourceLineNo">391</span>   * @throws KeeperException if unexpected zookeeper exception<a name="line.391"></a>
-<span class="sourceLineNo">392</span>   */<a name="line.392"></a>
-<span class="sourceLineNo">393</span>  public static int checkExists(ZKWatcher zkw, String znode)<a name="line.393"></a>
-<span class="sourceLineNo">394</span>  throws KeeperException {<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    try {<a name="line.395"></a>
-<span class="sourceLineNo">396</span>      Stat s = zkw.getRecoverableZooKeeper().exists(znode, null);<a name="line.396"></a>
-<span class="sourceLineNo">397</span>      return s != null ? s.getVersion() : -1;<a name="line.397"></a>
-<span class="sourceLineNo">398</span>    } catch (KeeperException e) {<a name="line.398"></a>
-<span class="sourceLineNo">399</span>      LOG.warn(zkw.prefix("Unable to set watcher on znode (" + znode + ")"), e);<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      zkw.keeperException(e);<a name="line.400"></a>
-<span class="sourceLineNo">401</span>      return -1;<a name="line.401"></a>
-<span class="sourceLineNo">402</span>    } catch (InterruptedException e) {<a name="line.402"></a>
-<span class="sourceLineNo">403</span>      LOG.warn(zkw.prefix("Unable to set watcher on znode (" + znode + ")"), e);<a name="line.403"></a>
-<span class="sourceLineNo">404</span>      zkw.interruptedException(e);<a name="line.404"></a>
-<span class="sourceLineNo">405</span>      return -1;<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    }<a name="line.406"></a>
-<span class="sourceLineNo">407</span>  }<a name="line.407"></a>
-<span class="sourceLineNo">408</span><a name="line.408"></a>
-<span class="sourceLineNo">409</span>  //<a name="line.409"></a>
-<span class="sourceLineNo">410</span>  // Znode listings<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>   * Lists the children znodes of the specified znode.  Also sets a watch on<a name="line.414"></a>
-<span class="sourceLineNo">415</span>   * the specified znode which will capture a NodeDeleted event on the specified<a name="line.415"></a>
-<span class="sourceLineNo">416</span>   * znode as well as NodeChildrenChanged if any children of the specified znode<a name="line.416"></a>
-<span class="sourceLineNo">417</span>   * are created or deleted.<a name="line.417"></a>
-<span class="sourceLineNo">418</span>   *<a name="line.418"></a>
-<span class="sourceLineNo">419</span>   * Returns null if the specified node does not exist.  Otherwise returns a<a name="line.419"></a>
-<span class="sourceLineNo">420</span>   * list of children of the specified node.  If the node exists but it has no<a name="line.420"></a>
-<span class="sourceLineNo">421</span>   * children, an empty list will be returned.<a name="line.421"></a>
-<span class="sourceLineNo">422</span>   *<a name="line.422"></a>
-<span class="sourceLineNo">423</span>   * @param zkw zk reference<a name="line.423"></a>
-<span class="sourceLineNo">424</span>   * @param znode path of node to list and watch children of<a name="line.424"></a>
-<span class="sourceLineNo">425</span>   * @return list of children of the specified node, an empty list if the node<a name="line.425"></a>
-<span class="sourceLineNo">426</span>   *          exists but has no children, and null if the node does not exist<a name="line.426"></a>
-<span class="sourceLineNo">427</span>   * @throws KeeperException if unexpected zookeeper exception<a name="line.427"></a>
-<span class="sourceLineNo">428</span>   */<a name="line.428"></a>
-<span class="sourceLineNo">429</span>  public static List&lt;String&gt; listChildrenAndWatchForNewChildren(<a name="line.429"></a>
-<span class="sourceLineNo">430</span>          ZKWatcher zkw, String znode)<a name="line.430"></a>
-<span class="sourceLineNo">431</span>  throws KeeperException {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>    try {<a name="line.432"></a>
-<span class="sourceLineNo">433</span>      List&lt;String&gt; children = zkw.getRecoverableZooKeeper().getChildren(znode, zkw);<a name="line.433"></a>
-<span class="sourceLineNo">434</span>      return children;<a name="line.434"></a>
-<span class="sourceLineNo">435</span>    } catch(KeeperException.NoNodeException ke) {<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      LOG.debug(zkw.prefix("Unable to list children of znode " + znode + " " +<a name="line.436"></a>
-<span class="sourceLineNo">437</span>          "because node does not exist (not an error)"));<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      return null;<a name="line.438"></a>
-<span class="sourceLineNo">439</span>    } catch (KeeperException e) {<a name="line.439"></a>
-<span class="sourceLineNo">440</span>      LOG.warn(zkw.prefix("Unable to list children of znode " + znode + " "), e);<a name="line.440"></a>
-<span class="sourceLineNo">441</span>      zkw.keeperException(e);<a name="line.441"></a>
-<span class="sourceLineNo">442</span>      return null;<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    } catch (InterruptedException e) {<a name="line.443"></a>
-<span class="sourceLineNo">444</span>      LOG.warn(zkw.prefix("Unable to list children of znode " + znode + " "), e);<a name="line.444"></a>
-<span class="sourceLineNo">445</span>      zkw.interruptedException(e);<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      return null;<a name="line.446"></a>
-<span class="sourceLineNo">447</span>    }<a name="line.447"></a>
-<span class="sourceLineNo">448</span>  }<a name="line.448"></a>
-<span class="sourceLineNo">449</span><a name="line.449"></a>
-<span class="sourceLineNo">450</span>  /**<a name="line.450"></a>
-<span class="sourceLineNo">451</span>   * List all the children of the specified znode, setting a watch for children<a name="line.451"></a>
-<span class="sourceLineNo">452</span>   * changes and also setting a watch on every individual child in order to get<a name="line.452"></a>
-<span class="sourceLineNo">453</span>   * the NodeCreated and NodeDeleted events.<a name="line.453"></a>
-<span class="sourceLineNo">454</span>   * @param zkw zookeeper reference<a name="line.454"></a>
-<span class="sourceLineNo">455</span>   * @param znode node to get children of and watch<a name="line.455"></a>
-<span class="sourceLineNo">456</span>   * @return list of znode names, null if the node doesn't exist<a name="line.456"></a>
-<span class="sourceLineNo">457</span>   * @throws KeeperException<a name="line.457"></a>
-<span class="sourceLineNo">458</span>   */<a name="line.458"></a>
-<span class="sourceLineNo">459</span>  public static List&lt;String&gt; listChildrenAndWatchThem(ZKWatcher zkw,<a name="line.459"></a>
-<span class="sourceLineNo">460</span>      String znode) throws KeeperException {<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    List&lt;String&gt; children = listChildrenAndWatchForNewChildren(zkw, znode);<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    if (children == null) {<a name="line.462"></a>
-<span class="sourceLineNo">463</span>      return null;<a name="line.463"></a>
-<span class="sourceLineNo">464</span>    }<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    for (String child : children) {<a name="line.465"></a>
-<span class="sourceLineNo">466</span>      watchAndCheckExists(zkw, ZNodePaths.joinZNode(znode, child));<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    }<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    return children;<a name="line.468"></a>
-<span class="sourceLineNo">469</span>  }<a name="line.469"></a>
-<span class="sourceLineNo">470</span><a name="line.470"></a>
-<span class="sourceLineNo">471</span>  /**<a name="line.471"></a>
-<span class="sourceLineNo">472</span>   * Lists the children of the specified znode without setting any watches.<a name="line.472"></a>
-<span class="sourceLineNo">473</span>   *<a name="line.473"></a>
-<span class="sourceLineNo">474</span>   * Sets no watches at all, this method is best effort.<a name="line.474"></a>
-<span class="sourceLineNo">475</span>   *<a name="line.475"></a>
-<span class="sourceLineNo">476</span>   * Returns an empty list if the node has no children.  Returns null if the<a name="line.476"></a>
-<span class="sourceLineNo">477</span>   * parent node itself does not exist.<a name="line.477"></a>
-<span class="sourceLineNo">478</span>   *<a name="line.478"></a>
-<span class="sourceLineNo">479</span>   * @param zkw zookeeper reference<a name="line.479"></a>
-<span class="sourceLineNo">480</span>   * @param znode node to get children<a name="line.480"></a>
-<span class="sourceLineNo">481</span>   * @return list of data of children of specified znode, empty if no children,<a name="line.481"></a>
-<span class="sourceLineNo">482</span>   *         null if parent does not exist<a name="line.482"></a>
-<span class="sourceLineNo">483</span>   * @throws KeeperException if unexpected zookeeper exception<a name="line.483"></a>
-<span class="sourceLineNo">484</span>   */<a name="line.484"></a>
-<span class="sourceLineNo">485</span>  public static List&lt;String&gt; listChildrenNoWatch(ZKWatcher zkw, String znode)<a name="line.485"></a>
-<span class="sourceLineNo">486</span>  throws KeeperException {<a name="line.486"></a>
-<span class="sourceLineNo">487</span>    List&lt;String&gt; children = null;<a name="line.487"></a>
-<span class="sourceLineNo">488</span>    try {<a name="line.488"></a>
-<span class="sourceLineNo">489</span>      // List the children without watching<a name="line.489"></a>
-<span class="sourceLineNo">490</span>      children = zkw.getRecoverableZooKeeper().getChildren(znode, null);<a name="line.490"></a>
-<span class="sourceLineNo">491</span>    } catch(KeeperException.NoNodeException nne) {<a name="line.491"></a>
-<span class="sourceLineNo">492</span>      return null;<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    } catch(InterruptedException ie) {<a name="line.493"></a>
-<span class="sourceLineNo">494</span>      zkw.interruptedException(ie);<a name="line.494"></a>
-<span class="sourceLineNo">495</span>    }<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    return children;<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>   * Simple class to hold a node path and node data.<a name="line.500"></a>
-<span class="sourceLineNo">501</span>   * @deprecated Unused<a name="line.501"></a>
-<span class="sourceLineNo">502</span>   */<a name="line.502"></a>
-<span class="sourceLineNo">503</span>  @Deprecated<a name="line.503"></a>
-<span class="sourceLineNo">504</span>  public static class NodeAndData {<a name="line.504"></a>
-<span class="sourceLineNo">505</span>    private String node;<a name="line.505"></a>
-<span class="sourceLineNo">506</span>    private byte [] data;<a name="line.506"></a>
-<span class="sourceLineNo">507</span>    public NodeAndData(String node, byte [] data) {<a name="line.507"></a>
-<span class="sourceLineNo">508</span>      this.node = node;<a name="line.508"></a>
-<span class="sourceLineNo">509</span>      this.data = data;<a name="line.509"></a>
-<span class="sourceLineNo">510</span>    }<a name="line.510"></a>
-<span class="sourceLineNo">511</span>    public String getNode() {<a name="line.511"></a>
-<span class="sourceLineNo">512</span>      return node;<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    }<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    public byte [] getData() {<a name="line.514"></a>
-<span class="sourceLineNo">515</span>      return data;<a name="line.515"></a>
-<span class="sourceLineNo">516</span>    }<a name="line.516"></a>
-<span class="sourceLineNo">517</span>    @Override<a name="line.517"></a>
-<span class="sourceLineNo">518</span>    public String toString() {<a name="line.518"></a>
-<span class="sourceLineNo">519</span>      return node;<a name="line.519"></a>
+<span class="sourceLineNo">321</span>  public static String getParent(String node) {<a name="line.321"></a>
+<span class="sourceLineNo">322</span>    int idx = node.lastIndexOf(ZNodePaths.ZNODE_PATH_SEPARATOR);<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    return idx &lt;= 0 ? null : node.substring(0, idx);<a name="line.323"></a>
+<span class="sourceLineNo">324</span>  }<a name="line.324"></a>
+<span class="sourceLineNo">325</span><a name="line.325"></a>
+<span class="sourceLineNo">326</span>  /**<a name="line.326"></a>
+<span class="sourceLineNo">327</span>   * Get the name of the current node from the specified fully-qualified path.<a name="line.327"></a>
+<span class="sourceLineNo">328</span>   * @param path fully-qualified path<a name="line.328"></a>
+<span class="sourceLineNo">329</span>   * @return name of the current node<a name="line.329"></a>
+<span class="sourceLineNo">330</span>   */<a name="line.330"></a>
+<span class="sourceLineNo">331</span>  public static String getNodeName(String path) {<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    return path.substring(path.lastIndexOf("/")+1);<a name="line.332"></a>
+<span class="sourceLineNo">333</span>  }<a name="line.333"></a>
+<span class="sourceLineNo">334</span><a name="line.334"></a>
+<span class="sourceLineNo">335</span>  //<a name="line.335"></a>
+<span class="sourceLineNo">336</span>  // Existence checks and watches<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>   * Watch the specified znode for delete/create/change events.  The watcher is<a name="line.340"></a>
+<span class="sourceLineNo">341</span>   * set whether or not the node exists.  If the node already exists, the method<a name="line.341"></a>
+<span class="sourceLineNo">342</span>   * returns true.  If the node does not exist, the method returns false.<a name="line.342"></a>
+<span class="sourceLineNo">343</span>   *<a name="line.343"></a>
+<span class="sourceLineNo">344</span>   * @param zkw zk reference<a name="line.344"></a>
+<span class="sourceLineNo">345</span>   * @param znode path of node to watch<a name="line.345"></a>
+<span class="sourceLineNo">346</span>   * @return true if znode exists, false if does not exist or error<a name="line.346"></a>
+<span class="sourceLineNo">347</span>   * @throws KeeperException if unexpected zookeeper exception<a name="line.347"></a>
+<span class="sourceLineNo">348</span>   */<a name="line.348"></a>
+<span class="sourceLineNo">349</span>  public static boolean watchAndCheckExists(ZKWatcher zkw, String znode)<a name="line.349"></a>
+<span class="sourceLineNo">350</span>  throws KeeperException {<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    try {<a name="line.351"></a>
+<span class="sourceLineNo">352</span>      Stat s = zkw.getRecoverableZooKeeper().exists(znode, zkw);<a name="line.352"></a>
+<span class="sourceLineNo">353</span>      boolean exists = s != null ? true : false;<a name="line.353"></a>
+<span class="sourceLineNo">354</span>      if (exists) {<a name="line.354"></a>
+<span class="sourceLineNo">355</span>        LOG.debug(zkw.prefix("Set watcher on existing znode=" + znode));<a name="line.355"></a>
+<span class="sourceLineNo">356</span>      } else {<a name="line.356"></a>
+<span class="sourceLineNo">357</span>        LOG.debug(zkw.prefix("Set watcher on znode that does not yet exist, " + znode));<a name="line.357"></a>
+<span class="sourceLineNo">358</span>      }<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      return exists;<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    } catch (KeeperException e) {<a name="line.360"></a>
+<span class="sourceLineNo">361</span>      LOG.warn(zkw.prefix("Unable to set watcher on znode " + znode), e);<a name="line.361"></a>
+<span class="sourceLineNo">362</span>      zkw.keeperException(e);<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      return false;<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    } catch (InterruptedException e) {<a name="line.364"></a>
+<span class="sourceLineNo">365</span>      LOG.warn(zkw.prefix("Unable to set watcher on znode " + znode), e);<a name="line.365"></a>
+<span class="sourceLineNo">366</span>      zkw.interruptedException(e);<a name="line.366"></a>
+<span class="sourceLineNo">367</span>      return false;<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>  /**<a name="line.371"></a>
+<span class="sourceLineNo">372</span>   * Watch the specified znode, but only if exists. Useful when watching<a name="line.372"></a>
+<span class="sourceLineNo">373</span>   * for deletions. Uses .getData() (and handles NoNodeException) instead<a name="line.373"></a>
+<span class="sourceLineNo">374</span>   * of .exists() to accomplish this, as .getData() will only set a watch if<a name="line.374"></a>
+<span class="sourceLineNo">375</span>   * the znode exists.<a name="line.375"></a>
+<span class="sourceLineNo">376</span>   * @param zkw zk reference<a name="line.376"></a>
+<span class="sourceLineNo">377</span>   * @param znode path of node to watch<a name="line.377"></a>
+<span class="sourceLineNo">378</span>   * @return true if the watch is set, false if node does not exists<a name="line.378"></a>
+<span class="sourceLineNo">379</span>   * @throws KeeperException if unexpected zookeeper exception<a name="line.379"></a>
+<span class="sourceLineNo">380</span>   */<a name="line.380"></a>
+<span class="sourceLineNo">381</span>  public static boolean setWatchIfNodeExists(ZKWatcher zkw, String znode)<a name="line.381"></a>
+<span class="sourceLineNo">382</span>      throws KeeperException {<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    try {<a name="line.383"></a>
+<span class="sourceLineNo">384</span>      zkw.getRecoverableZooKeeper().getData(znode, true, null);<a name="line.384"></a>
+<span class="sourceLineNo">385</span>      return true;<a name="line.385"></a>
+<span class="sourceLineNo">386</span>    } catch (NoNodeException e) {<a name="line.386"></a>
+<span class="sourceLineNo">387</span>      return false;<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    } catch (InterruptedException e) {<a name="line.388"></a>
+<span class="sourceLineNo">389</span>      LOG.warn(zkw.prefix("Unable to set watcher on znode " + znode), e);<a name="line.389"></a>
+<span class="sourceLineNo">390</span>      zkw.interruptedException(e);<a name="line.390"></a>
+<span class="sourceLineNo">391</span>      return false;<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">395</span>  /**<a name="line.395"></a>
+<span class="sourceLineNo">396</span>   * Check if the specified node exists.  Sets no watches.<a name="line.396"></a>
+<span class="sourceLineNo">397</span>   *<a name="line.397"></a>
+<span class="sourceLineNo">398</span>   * @param zkw zk reference<a name="line.398"></a>
+<span class="sourceLineNo">399</span>   * @param znode path of node to watch<a name="line.399"></a>
+<span class="sourceLineNo">400</span>   * @return version of the node if it exists, -1 if does not exist<a name="line.400"></a>
+<span class="sourceLineNo">401</span>   * @throws KeeperException if unexpected zookeeper exception<a name="line.401"></a>
+<span class="sourceLineNo">402</span>   */<a name="line.402"></a>
+<span class="sourceLineNo">403</span>  public static int checkExists(ZKWatcher zkw, String znode)<a name="line.403"></a>
+<span class="sourceLineNo">404</span>  throws KeeperException {<a name="line.404"></a>
+<span class="sourceLineNo">405</span>    try {<a name="line.405"></a>
+<span class="sourceLineNo">406</span>      Stat s = zkw.getRecoverableZooKeeper().exists(znode, null);<a name="line.406"></a>
+<span class="sourceLineNo">407</span>      return s != null ? s.getVersion() : -1;<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    } catch (KeeperException e) {<a name="line.408"></a>
+<span class="sourceLineNo">409</span>      LOG.warn(zkw.prefix("Unable to set watcher on znode (" + znode + ")"), e);<a name="line.409"></a>
+<span class="sourceLineNo">410</span>      zkw.keeperException(e);<a name="line.410"></a>
+<span class="sourceLineNo">411</span>      return -1;<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    } catch (InterruptedException e) {<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      LOG.warn(zkw.prefix("Unable to set watcher on znode (" + znode + ")"), e);<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      zkw.interruptedException(e);<a name="line.414"></a>
+<span class="sourceLineNo">415</span>      return -1;<a name="line.415"></a>
+<span class="sourceLineNo">416</span>    }<a name="line.416"></a>
+<span class="sourceLineNo">417</span>  }<a name="line.417"></a>
+<span class="sourceLineNo">418</span><a name="line.418"></a>
+<span class="sourceLineNo">419</span>  //<a name="line.419"></a>
+<span class="sourceLineNo">420</span>  // Znode listings<a name="line.420"></a>
+<span class="sourceLineNo">421</span>  //<a name="line.421"></a>
+<span class="sourceLineNo">422</span><a name="line.422"></a>
+<span class="sourceLineNo">423</span>  /**<a name="line.423"></a>
+<span class="sourceLineNo">424</span>   * Lists the children znodes of the specified znode.  Also sets a watch on<a name="line.424"></a>
+<span class="sourceLineNo">425</span>   * the specified znode which will capture a NodeDeleted event on the specified<a name="line.425"></a>
+<span class="sourceLineNo">426</span>   * znode as well as NodeChildrenChanged if any children of the specified znode<a name="line.426"></a>
+<span class="sourceLineNo">427</span>   * are created or deleted.<a name="line.427"></a>
+<span class="sourceLineNo">428</span>   *<a name="line.428"></a>
+<span class="sourceLineNo">429</span>   * Returns null if the specified node does not exist.  Otherwise returns a<a name="line.429"></a>
+<span class="sourceLineNo">430</span>   * list of children of the specified node.  If the node exists but it has no<a name="line.430"></a>
+<span class="sourceLineNo">431</span>   * children, an empty list will be returned.<a name="line.431"></a>
+<span class="sourceLineNo">432</span>   *<a name="line.432"></a>
+<span class="sourceLineNo">433</span>   * @param zkw zk reference<a name="line.433"></a>
+<span class="sourceLineNo">434</span>   * @param znode path of node to list and watch children of<a name="line.434"></a>
+<span class="sourceLineNo">435</span>   * @return list of children of the specified node, an empty list if the node<a name="line.435"></a>
+<span class="sourceLineNo">436</span>   *          exists but has no children, and null if the node does not exist<a name="line.436"></a>
+<span class="sourceLineNo">437</span>   * @throws KeeperException if unexpected zookeeper exception<a name="line.437"></a>
+<span class="sourceLineNo">438</span>   */<a name="line.438"></a>
+<span class="sourceLineNo">439</span>  public static List&lt;String&gt; listChildrenAndWatchForNewChildren(<a name="line.439"></a>
+<span class="sourceLineNo">440</span>          ZKWatcher zkw, String znode)<a name="line.440"></a>
+<span class="sourceLineNo">441</span>  throws KeeperException {<a name="line.441"></a>
+<span class="sourceLineNo">442</span>    try {<a name="line.442"></a>
+<span class="sourceLineNo">443</span>      List&lt;String&gt; children = zkw.getRecoverableZooKeeper().getChildren(znode, zkw);<a name="line.443"></a>
+<span class="sourceLineNo">444</span>      return children;<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    } catch(KeeperException.NoNodeException ke) {<a name="line.445"></a>
+<span class="sourceLineNo">446</span>      LOG.debug(zkw.prefix("Unable to list children of znode " + znode + " " +<a name="line.446"></a>
+<span class="sourceLineNo">447</span>          "because node does not exist (not an error)"));<a name="line.447"></a>
+<span class="sourceLineNo">448</span>      return null;<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    } catch (KeeperException e) {<a name="line.449"></a>
+<span class="sourceLineNo">450</span>      LOG.warn(zkw.prefix("Unable to list children of znode " + znode + " "), e);<a name="line.450"></a>
+<span class="sourceLineNo">451</span>      zkw.keeperException(e);<a name="line.451"></a>
+<span class="sourceLineNo">452</span>      return null;<a name="line.452"></a>
+<span class="sourceLineNo">453</span>    } catch (InterruptedException e) {<a name="line.453"></a>
+<span class="sourceLineNo">

<TRUNCATED>

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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.JaasConfiguration.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.JaasConfiguration.html b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.JaasConfiguration.html
index 81f531b..04be024 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.JaasConfiguration.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.JaasConfiguration.html
@@ -53,2036 +53,2078 @@
 <span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.AuthUtil;<a name="line.45"></a>
 <span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.46"></a>
 <span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.HConstants;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.security.Superusers;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.shaded.com.google.protobuf.InvalidProtocolBufferException;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil.ZKUtilOp.CreateAndFailSilent;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil.ZKUtilOp.DeleteNodeFailSilent;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil.ZKUtilOp.SetData;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.security.SecurityUtil;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.security.UserGroupInformation;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.security.authentication.util.KerberosUtil;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.zookeeper.AsyncCallback;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.zookeeper.CreateMode;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.zookeeper.KeeperException;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.zookeeper.KeeperException.NoNodeException;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.zookeeper.Op;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.zookeeper.Watcher;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.zookeeper.ZooDefs.Ids;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.zookeeper.ZooDefs.Perms;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.zookeeper.ZooKeeper;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.zookeeper.client.ZooKeeperSaslClient;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.zookeeper.data.ACL;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.zookeeper.data.Id;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.zookeeper.data.Stat;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.zookeeper.proto.CreateRequest;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.zookeeper.proto.DeleteRequest;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.zookeeper.proto.SetDataRequest;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.zookeeper.server.ZooKeeperSaslServer;<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> * Internal HBase utility class for ZooKeeper.<a name="line.81"></a>
-<span class="sourceLineNo">082</span> *<a name="line.82"></a>
-<span class="sourceLineNo">083</span> * &lt;p&gt;Contains only static methods and constants.<a name="line.83"></a>
-<span class="sourceLineNo">084</span> *<a name="line.84"></a>
-<span class="sourceLineNo">085</span> * &lt;p&gt;Methods all throw {@link KeeperException} if there is an unexpected<a name="line.85"></a>
-<span class="sourceLineNo">086</span> * zookeeper exception, so callers of these methods must handle appropriately.<a name="line.86"></a>
-<span class="sourceLineNo">087</span> * If ZK is required for the operation, the server will need to be aborted.<a name="line.87"></a>
-<span class="sourceLineNo">088</span> */<a name="line.88"></a>
-<span class="sourceLineNo">089</span>@InterfaceAudience.Private<a name="line.89"></a>
-<span class="sourceLineNo">090</span>public class ZKUtil {<a name="line.90"></a>
-<span class="sourceLineNo">091</span>  private static final Log LOG = LogFactory.getLog(ZKUtil.class);<a name="line.91"></a>
-<span class="sourceLineNo">092</span><a name="line.92"></a>
-<span class="sourceLineNo">093</span>  private static int zkDumpConnectionTimeOut;<a name="line.93"></a>
-<span class="sourceLineNo">094</span><a name="line.94"></a>
-<span class="sourceLineNo">095</span>  /**<a name="line.95"></a>
-<span class="sourceLineNo">096</span>   * Creates a new connection to ZooKeeper, pulling settings and ensemble config<a name="line.96"></a>
-<span class="sourceLineNo">097</span>   * from the specified configuration object using methods from {@link ZKConfig}.<a name="line.97"></a>
-<span class="sourceLineNo">098</span>   *<a name="line.98"></a>
-<span class="sourceLineNo">099</span>   * Sets the connection status monitoring watcher to the specified watcher.<a name="line.99"></a>
-<span class="sourceLineNo">100</span>   *<a name="line.100"></a>
-<span class="sourceLineNo">101</span>   * @param conf configuration to pull ensemble and other settings from<a name="line.101"></a>
-<span class="sourceLineNo">102</span>   * @param watcher watcher to monitor connection changes<a name="line.102"></a>
-<span class="sourceLineNo">103</span>   * @return connection to zookeeper<a name="line.103"></a>
-<span class="sourceLineNo">104</span>   * @throws IOException if unable to connect to zk or config problem<a name="line.104"></a>
-<span class="sourceLineNo">105</span>   */<a name="line.105"></a>
-<span class="sourceLineNo">106</span>  public static RecoverableZooKeeper connect(Configuration conf, Watcher watcher)<a name="line.106"></a>
-<span class="sourceLineNo">107</span>  throws IOException {<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    String ensemble = ZKConfig.getZKQuorumServersString(conf);<a name="line.108"></a>
-<span class="sourceLineNo">109</span>    return connect(conf, ensemble, watcher);<a name="line.109"></a>
-<span class="sourceLineNo">110</span>  }<a name="line.110"></a>
-<span class="sourceLineNo">111</span><a name="line.111"></a>
-<span class="sourceLineNo">112</span>  public static RecoverableZooKeeper connect(Configuration conf, String ensemble,<a name="line.112"></a>
-<span class="sourceLineNo">113</span>      Watcher watcher)<a name="line.113"></a>
-<span class="sourceLineNo">114</span>  throws IOException {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    return connect(conf, ensemble, watcher, null);<a name="line.115"></a>
-<span class="sourceLineNo">116</span>  }<a name="line.116"></a>
-<span class="sourceLineNo">117</span><a name="line.117"></a>
-<span class="sourceLineNo">118</span>  public static RecoverableZooKeeper connect(Configuration conf, String ensemble,<a name="line.118"></a>
-<span class="sourceLineNo">119</span>      Watcher watcher, final String identifier)<a name="line.119"></a>
-<span class="sourceLineNo">120</span>  throws IOException {<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    if(ensemble == null) {<a name="line.121"></a>
-<span class="sourceLineNo">122</span>      throw new IOException("Unable to determine ZooKeeper ensemble");<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    }<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    int timeout = conf.getInt(HConstants.ZK_SESSION_TIMEOUT,<a name="line.124"></a>
-<span class="sourceLineNo">125</span>        HConstants.DEFAULT_ZK_SESSION_TIMEOUT);<a name="line.125"></a>
-<span class="sourceLineNo">126</span>    if (LOG.isTraceEnabled()) {<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      LOG.trace(identifier + " opening connection to ZooKeeper ensemble=" + ensemble);<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    }<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    int retry = conf.getInt("zookeeper.recovery.retry", 3);<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    int retryIntervalMillis =<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      conf.getInt("zookeeper.recovery.retry.intervalmill", 1000);<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    int maxSleepTime = conf.getInt("zookeeper.recovery.retry.maxsleeptime", 60000);<a name="line.132"></a>
-<span class="sourceLineNo">133</span>    zkDumpConnectionTimeOut = conf.getInt("zookeeper.dump.connection.timeout",<a name="line.133"></a>
-<span class="sourceLineNo">134</span>        1000);<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    return new RecoverableZooKeeper(ensemble, timeout, watcher,<a name="line.135"></a>
-<span class="sourceLineNo">136</span>        retry, retryIntervalMillis, maxSleepTime, identifier);<a name="line.136"></a>
-<span class="sourceLineNo">137</span>  }<a name="line.137"></a>
-<span class="sourceLineNo">138</span><a name="line.138"></a>
-<span class="sourceLineNo">139</span>  /**<a name="line.139"></a>
-<span class="sourceLineNo">140</span>   * Log in the current zookeeper server process using the given configuration<a name="line.140"></a>
-<span class="sourceLineNo">141</span>   * keys for the credential file and login principal.<a name="line.141"></a>
-<span class="sourceLineNo">142</span>   *<a name="line.142"></a>
-<span class="sourceLineNo">143</span>   * &lt;p&gt;&lt;strong&gt;This is only applicable when running on secure hbase&lt;/strong&gt;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>   * On regular HBase (without security features), this will safely be ignored.<a name="line.144"></a>
-<span class="sourceLineNo">145</span>   * &lt;/p&gt;<a name="line.145"></a>
+<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.security.Superusers;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil.ZKUtilOp.CreateAndFailSilent;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil.ZKUtilOp.DeleteNodeFailSilent;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil.ZKUtilOp.SetData;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.security.SecurityUtil;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.security.UserGroupInformation;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.security.authentication.util.KerberosUtil;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.zookeeper.AsyncCallback;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.zookeeper.CreateMode;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.zookeeper.KeeperException;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.zookeeper.KeeperException.NoNodeException;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.zookeeper.Op;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.zookeeper.Watcher;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.zookeeper.ZooDefs.Ids;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.zookeeper.ZooDefs.Perms;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.zookeeper.ZooKeeper;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.zookeeper.client.ZooKeeperSaslClient;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.zookeeper.data.ACL;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.zookeeper.data.Id;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.zookeeper.data.Stat;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.zookeeper.proto.CreateRequest;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.zookeeper.proto.DeleteRequest;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.zookeeper.proto.SetDataRequest;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.zookeeper.server.ZooKeeperSaslServer;<a name="line.75"></a>
+<span class="sourceLineNo">076</span><a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.shaded.com.google.protobuf.InvalidProtocolBufferException;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos;<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> * Internal HBase utility class for ZooKeeper.<a name="line.82"></a>
+<span class="sourceLineNo">083</span> *<a name="line.83"></a>
+<span class="sourceLineNo">084</span> * &lt;p&gt;Contains only static methods and constants.<a name="line.84"></a>
+<span class="sourceLineNo">085</span> *<a name="line.85"></a>
+<span class="sourceLineNo">086</span> * &lt;p&gt;Methods all throw {@link KeeperException} if there is an unexpected<a name="line.86"></a>
+<span class="sourceLineNo">087</span> * zookeeper exception, so callers of these methods must handle appropriately.<a name="line.87"></a>
+<span class="sourceLineNo">088</span> * If ZK is required for the operation, the server will need to be aborted.<a name="line.88"></a>
+<span class="sourceLineNo">089</span> */<a name="line.89"></a>
+<span class="sourceLineNo">090</span>@InterfaceAudience.Private<a name="line.90"></a>
+<span class="sourceLineNo">091</span>public final class ZKUtil {<a name="line.91"></a>
+<span class="sourceLineNo">092</span>  private static final Log LOG = LogFactory.getLog(ZKUtil.class);<a name="line.92"></a>
+<span class="sourceLineNo">093</span><a name="line.93"></a>
+<span class="sourceLineNo">094</span>  private static int zkDumpConnectionTimeOut;<a name="line.94"></a>
+<span class="sourceLineNo">095</span><a name="line.95"></a>
+<span class="sourceLineNo">096</span>  private ZKUtil() {<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>   * Creates a new connection to ZooKeeper, pulling settings and ensemble config<a name="line.100"></a>
+<span class="sourceLineNo">101</span>   * from the specified configuration object using methods from {@link ZKConfig}.<a name="line.101"></a>
+<span class="sourceLineNo">102</span>   *<a name="line.102"></a>
+<span class="sourceLineNo">103</span>   * Sets the connection status monitoring watcher to the specified watcher.<a name="line.103"></a>
+<span class="sourceLineNo">104</span>   *<a name="line.104"></a>
+<span class="sourceLineNo">105</span>   * @param conf configuration to pull ensemble and other settings from<a name="line.105"></a>
+<span class="sourceLineNo">106</span>   * @param watcher watcher to monitor connection changes<a name="line.106"></a>
+<span class="sourceLineNo">107</span>   * @return connection to zookeeper<a name="line.107"></a>
+<span class="sourceLineNo">108</span>   * @throws IOException if unable to connect to zk or config problem<a name="line.108"></a>
+<span class="sourceLineNo">109</span>   */<a name="line.109"></a>
+<span class="sourceLineNo">110</span>  public static RecoverableZooKeeper connect(Configuration conf, Watcher watcher)<a name="line.110"></a>
+<span class="sourceLineNo">111</span>  throws IOException {<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    String ensemble = ZKConfig.getZKQuorumServersString(conf);<a name="line.112"></a>
+<span class="sourceLineNo">113</span>    return connect(conf, ensemble, watcher);<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>  public static RecoverableZooKeeper connect(Configuration conf, String ensemble,<a name="line.116"></a>
+<span class="sourceLineNo">117</span>      Watcher watcher)<a name="line.117"></a>
+<span class="sourceLineNo">118</span>  throws IOException {<a name="line.118"></a>
+<span class="sourceLineNo">119</span>    return connect(conf, ensemble, watcher, null);<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>  public static RecoverableZooKeeper connect(Configuration conf, String ensemble,<a name="line.122"></a>
+<span class="sourceLineNo">123</span>      Watcher watcher, final String identifier)<a name="line.123"></a>
+<span class="sourceLineNo">124</span>  throws IOException {<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    if(ensemble == null) {<a name="line.125"></a>
+<span class="sourceLineNo">126</span>      throw new IOException("Unable to determine ZooKeeper ensemble");<a name="line.126"></a>
+<span class="sourceLineNo">127</span>    }<a name="line.127"></a>
+<span class="sourceLineNo">128</span>    int timeout = conf.getInt(HConstants.ZK_SESSION_TIMEOUT,<a name="line.128"></a>
+<span class="sourceLineNo">129</span>        HConstants.DEFAULT_ZK_SESSION_TIMEOUT);<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    if (LOG.isTraceEnabled()) {<a name="line.130"></a>
+<span class="sourceLineNo">131</span>      LOG.trace(identifier + " opening connection to ZooKeeper ensemble=" + ensemble);<a name="line.131"></a>
+<span class="sourceLineNo">132</span>    }<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    int retry = conf.getInt("zookeeper.recovery.retry", 3);<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    int retryIntervalMillis =<a name="line.134"></a>
+<span class="sourceLineNo">135</span>      conf.getInt("zookeeper.recovery.retry.intervalmill", 1000);<a name="line.135"></a>
+<span class="sourceLineNo">136</span>    int maxSleepTime = conf.getInt("zookeeper.recovery.retry.maxsleeptime", 60000);<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    zkDumpConnectionTimeOut = conf.getInt("zookeeper.dump.connection.timeout",<a name="line.137"></a>
+<span class="sourceLineNo">138</span>        1000);<a name="line.138"></a>
+<span class="sourceLineNo">139</span>    return new RecoverableZooKeeper(ensemble, timeout, watcher,<a name="line.139"></a>
+<span class="sourceLineNo">140</span>        retry, retryIntervalMillis, maxSleepTime, identifier);<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>   * Log in the current zookeeper server process using the given configuration<a name="line.144"></a>
+<span class="sourceLineNo">145</span>   * keys for the credential file and login principal.<a name="line.145"></a>
 <span class="sourceLineNo">146</span>   *<a name="line.146"></a>
-<span class="sourceLineNo">147</span>   * @param conf The configuration data to use<a name="line.147"></a>
-<span class="sourceLineNo">148</span>   * @param keytabFileKey Property key used to configure the path to the credential file<a name="line.148"></a>
-<span class="sourceLineNo">149</span>   * @param userNameKey Property key used to configure the login principal<a name="line.149"></a>
-<span class="sourceLineNo">150</span>   * @param hostname Current hostname to use in any credentials<a name="line.150"></a>
-<span class="sourceLineNo">151</span>   * @throws IOException underlying exception from SecurityUtil.login() call<a name="line.151"></a>
-<span class="sourceLineNo">152</span>   */<a name="line.152"></a>
-<span class="sourceLineNo">153</span>  public static void loginServer(Configuration conf, String keytabFileKey,<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      String userNameKey, String hostname) throws IOException {<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    login(conf, keytabFileKey, userNameKey, hostname,<a name="line.155"></a>
-<span class="sourceLineNo">156</span>          ZooKeeperSaslServer.LOGIN_CONTEXT_NAME_KEY,<a name="line.156"></a>
-<span class="sourceLineNo">157</span>          JaasConfiguration.SERVER_KEYTAB_KERBEROS_CONFIG_NAME);<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>  /**<a name="line.160"></a>
-<span class="sourceLineNo">161</span>   * Log in the current zookeeper client using the given configuration<a name="line.161"></a>
-<span class="sourceLineNo">162</span>   * keys for the credential file and login principal.<a name="line.162"></a>
-<span class="sourceLineNo">163</span>   *<a name="line.163"></a>
-<span class="sourceLineNo">164</span>   * &lt;p&gt;&lt;strong&gt;This is only applicable when running on secure hbase&lt;/strong&gt;<a name="line.164"></a>
-<span class="sourceLineNo">165</span>   * On regular HBase (without security features), this will safely be ignored.<a name="line.165"></a>
-<span class="sourceLineNo">166</span>   * &lt;/p&gt;<a name="line.166"></a>
+<span class="sourceLineNo">147</span>   * &lt;p&gt;&lt;strong&gt;This is only applicable when running on secure hbase&lt;/strong&gt;<a name="line.147"></a>
+<span class="sourceLineNo">148</span>   * On regular HBase (without security features), this will safely be ignored.<a name="line.148"></a>
+<span class="sourceLineNo">149</span>   * &lt;/p&gt;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>   *<a name="line.150"></a>
+<span class="sourceLineNo">151</span>   * @param conf The configuration data to use<a name="line.151"></a>
+<span class="sourceLineNo">152</span>   * @param keytabFileKey Property key used to configure the path to the credential file<a name="line.152"></a>
+<span class="sourceLineNo">153</span>   * @param userNameKey Property key used to configure the login principal<a name="line.153"></a>
+<span class="sourceLineNo">154</span>   * @param hostname Current hostname to use in any credentials<a name="line.154"></a>
+<span class="sourceLineNo">155</span>   * @throws IOException underlying exception from SecurityUtil.login() call<a name="line.155"></a>
+<span class="sourceLineNo">156</span>   */<a name="line.156"></a>
+<span class="sourceLineNo">157</span>  public static void loginServer(Configuration conf, String keytabFileKey,<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      String userNameKey, String hostname) throws IOException {<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    login(conf, keytabFileKey, userNameKey, hostname,<a name="line.159"></a>
+<span class="sourceLineNo">160</span>          ZooKeeperSaslServer.LOGIN_CONTEXT_NAME_KEY,<a name="line.160"></a>
+<span class="sourceLineNo">161</span>          JaasConfiguration.SERVER_KEYTAB_KERBEROS_CONFIG_NAME);<a name="line.161"></a>
+<span class="sourceLineNo">162</span>  }<a name="line.162"></a>
+<span class="sourceLineNo">163</span><a name="line.163"></a>
+<span class="sourceLineNo">164</span>  /**<a name="line.164"></a>
+<span class="sourceLineNo">165</span>   * Log in the current zookeeper client using the given configuration<a name="line.165"></a>
+<span class="sourceLineNo">166</span>   * keys for the credential file and login principal.<a name="line.166"></a>
 <span class="sourceLineNo">167</span>   *<a name="line.167"></a>
-<span class="sourceLineNo">168</span>   * @param conf The configuration data to use<a name="line.168"></a>
-<span class="sourceLineNo">169</span>   * @param keytabFileKey Property key used to configure the path to the credential file<a name="line.169"></a>
-<span class="sourceLineNo">170</span>   * @param userNameKey Property key used to configure the login principal<a name="line.170"></a>
-<span class="sourceLineNo">171</span>   * @param hostname Current hostname to use in any credentials<a name="line.171"></a>
-<span class="sourceLineNo">172</span>   * @throws IOException underlying exception from SecurityUtil.login() call<a name="line.172"></a>
-<span class="sourceLineNo">173</span>   */<a name="line.173"></a>
-<span class="sourceLineNo">174</span>  public static void loginClient(Configuration conf, String keytabFileKey,<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      String userNameKey, String hostname) throws IOException {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    login(conf, keytabFileKey, userNameKey, hostname,<a name="line.176"></a>
-<span class="sourceLineNo">177</span>          ZooKeeperSaslClient.LOGIN_CONTEXT_NAME_KEY,<a name="line.177"></a>
-<span class="sourceLineNo">178</span>          JaasConfiguration.CLIENT_KEYTAB_KERBEROS_CONFIG_NAME);<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>   * Log in the current process using the given configuration keys for the<a name="line.182"></a>
-<span class="sourceLineNo">183</span>   * credential file and login principal.<a name="line.183"></a>
-<span class="sourceLineNo">184</span>   *<a name="line.184"></a>
-<span class="sourceLineNo">185</span>   * &lt;p&gt;&lt;strong&gt;This is only applicable when running on secure hbase&lt;/strong&gt;<a name="line.185"></a>
-<span class="sourceLineNo">186</span>   * On regular HBase (without security features), this will safely be ignored.<a name="line.186"></a>
-<span class="sourceLineNo">187</span>   * &lt;/p&gt;<a name="line.187"></a>
+<span class="sourceLineNo">168</span>   * &lt;p&gt;&lt;strong&gt;This is only applicable when running on secure hbase&lt;/strong&gt;<a name="line.168"></a>
+<span class="sourceLineNo">169</span>   * On regular HBase (without security features), this will safely be ignored.<a name="line.169"></a>
+<span class="sourceLineNo">170</span>   * &lt;/p&gt;<a name="line.170"></a>
+<span class="sourceLineNo">171</span>   *<a name="line.171"></a>
+<span class="sourceLineNo">172</span>   * @param conf The configuration data to use<a name="line.172"></a>
+<span class="sourceLineNo">173</span>   * @param keytabFileKey Property key used to configure the path to the credential file<a name="line.173"></a>
+<span class="sourceLineNo">174</span>   * @param userNameKey Property key used to configure the login principal<a name="line.174"></a>
+<span class="sourceLineNo">175</span>   * @param hostname Current hostname to use in any credentials<a name="line.175"></a>
+<span class="sourceLineNo">176</span>   * @throws IOException underlying exception from SecurityUtil.login() call<a name="line.176"></a>
+<span class="sourceLineNo">177</span>   */<a name="line.177"></a>
+<span class="sourceLineNo">178</span>  public static void loginClient(Configuration conf, String keytabFileKey,<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      String userNameKey, String hostname) throws IOException {<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    login(conf, keytabFileKey, userNameKey, hostname,<a name="line.180"></a>
+<span class="sourceLineNo">181</span>          ZooKeeperSaslClient.LOGIN_CONTEXT_NAME_KEY,<a name="line.181"></a>
+<span class="sourceLineNo">182</span>          JaasConfiguration.CLIENT_KEYTAB_KERBEROS_CONFIG_NAME);<a name="line.182"></a>
+<span class="sourceLineNo">183</span>  }<a name="line.183"></a>
+<span class="sourceLineNo">184</span><a name="line.184"></a>
+<span class="sourceLineNo">185</span>  /**<a name="line.185"></a>
+<span class="sourceLineNo">186</span>   * Log in the current process using the given configuration keys for the<a name="line.186"></a>
+<span class="sourceLineNo">187</span>   * credential file and login principal.<a name="line.187"></a>
 <span class="sourceLineNo">188</span>   *<a name="line.188"></a>
-<span class="sourceLineNo">189</span>   * @param conf The configuration data to use<a name="line.189"></a>
-<span class="sourceLineNo">190</span>   * @param keytabFileKey Property key used to configure the path to the credential file<a name="line.190"></a>
-<span class="sourceLineNo">191</span>   * @param userNameKey Property key used to configure the login principal<a name="line.191"></a>
-<span class="sourceLineNo">192</span>   * @param hostname Current hostname to use in any credentials<a name="line.192"></a>
-<span class="sourceLineNo">193</span>   * @param loginContextProperty property name to expose the entry name<a name="line.193"></a>
-<span class="sourceLineNo">194</span>   * @param loginContextName jaas entry name<a name="line.194"></a>
-<span class="sourceLineNo">195</span>   * @throws IOException underlying exception from SecurityUtil.login() call<a name="line.195"></a>
-<span class="sourceLineNo">196</span>   */<a name="line.196"></a>
-<span class="sourceLineNo">197</span>  private static void login(Configuration conf, String keytabFileKey,<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      String userNameKey, String hostname,<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      String loginContextProperty, String loginContextName)<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      throws IOException {<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    if (!isSecureZooKeeper(conf))<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>    // User has specified a jaas.conf, keep this one as the good one.<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    // HBASE_OPTS="-Djava.security.auth.login.config=jaas.conf"<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    if (System.getProperty("java.security.auth.login.config") != null)<a name="line.206"></a>
-<span class="sourceLineNo">207</span>      return;<a name="line.207"></a>
+<span class="sourceLineNo">189</span>   * &lt;p&gt;&lt;strong&gt;This is only applicable when running on secure hbase&lt;/strong&gt;<a name="line.189"></a>
+<span class="sourceLineNo">190</span>   * On regular HBase (without security features), this will safely be ignored.<a name="line.190"></a>
+<span class="sourceLineNo">191</span>   * &lt;/p&gt;<a name="line.191"></a>
+<span class="sourceLineNo">192</span>   *<a name="line.192"></a>
+<span class="sourceLineNo">193</span>   * @param conf The configuration data to use<a name="line.193"></a>
+<span class="sourceLineNo">194</span>   * @param keytabFileKey Property key used to configure the path to the credential file<a name="line.194"></a>
+<span class="sourceLineNo">195</span>   * @param userNameKey Property key used to configure the login principal<a name="line.195"></a>
+<span class="sourceLineNo">196</span>   * @param hostname Current hostname to use in any credentials<a name="line.196"></a>
+<span class="sourceLineNo">197</span>   * @param loginContextProperty property name to expose the entry name<a name="line.197"></a>
+<span class="sourceLineNo">198</span>   * @param loginContextName jaas entry name<a name="line.198"></a>
+<span class="sourceLineNo">199</span>   * @throws IOException underlying exception from SecurityUtil.login() call<a name="line.199"></a>
+<span class="sourceLineNo">200</span>   */<a name="line.200"></a>
+<span class="sourceLineNo">201</span>  private static void login(Configuration conf, String keytabFileKey,<a name="line.201"></a>
+<span class="sourceLineNo">202</span>      String userNameKey, String hostname,<a name="line.202"></a>
+<span class="sourceLineNo">203</span>      String loginContextProperty, String loginContextName)<a name="line.203"></a>
+<span class="sourceLineNo">204</span>      throws IOException {<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    if (!isSecureZooKeeper(conf)) {<a name="line.205"></a>
+<span class="sourceLineNo">206</span>      return;<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    }<a name="line.207"></a>
 <span class="sourceLineNo">208</span><a name="line.208"></a>
-<span class="sourceLineNo">209</span>    // No keytab specified, no auth<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    String keytabFilename = conf.get(keytabFileKey);<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    if (keytabFilename == null) {<a name="line.211"></a>
-<span class="sourceLineNo">212</span>      LOG.warn("no keytab specified for: " + keytabFileKey);<a name="line.212"></a>
-<span class="sourceLineNo">213</span>      return;<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    }<a name="line.214"></a>
-<span class="sourceLineNo">215</span><a name="line.215"></a>
-<span class="sourceLineNo">216</span>    String principalConfig = conf.get(userNameKey, System.getProperty("user.name"));<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    String principalName = SecurityUtil.getServerPrincipal(principalConfig, hostname);<a name="line.217"></a>
-<span class="sourceLineNo">218</span><a name="line.218"></a>
-<span class="sourceLineNo">219</span>    // Initialize the "jaas.conf" for keyTab/principal,<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    // If keyTab is not specified use the Ticket Cache.<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    // and set the zookeeper login context name.<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    JaasConfiguration jaasConf = new JaasConfiguration(loginContextName,<a name="line.222"></a>
-<span class="sourceLineNo">223</span>        principalName, keytabFilename);<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    javax.security.auth.login.Configuration.setConfiguration(jaasConf);<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    System.setProperty(loginContextProperty, loginContextName);<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>  /**<a name="line.228"></a>
-<span class="sourceLineNo">229</span>   * A JAAS configuration that defines the login modules that we want to use for login.<a name="line.229"></a>
-<span class="sourceLineNo">230</span>   */<a name="line.230"></a>
-<span class="sourceLineNo">231</span>  private static class JaasConfiguration extends javax.security.auth.login.Configuration {<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    private static final String SERVER_KEYTAB_KERBEROS_CONFIG_NAME =<a name="line.232"></a>
-<span class="sourceLineNo">233</span>      "zookeeper-server-keytab-kerberos";<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    private static final String CLIENT_KEYTAB_KERBEROS_CONFIG_NAME =<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      "zookeeper-client-keytab-kerberos";<a name="line.235"></a>
-<span class="sourceLineNo">236</span><a name="line.236"></a>
-<span class="sourceLineNo">237</span>    private static final Map&lt;String, String&gt; BASIC_JAAS_OPTIONS = new HashMap&lt;&gt;();<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    static {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>      String jaasEnvVar = System.getenv("HBASE_JAAS_DEBUG");<a name="line.239"></a>
-<span class="sourceLineNo">240</span>      if (jaasEnvVar != null &amp;&amp; "true".equalsIgnoreCase(jaasEnvVar)) {<a name="line.240"></a>
-<span class="sourceLineNo">241</span>        BASIC_JAAS_OPTIONS.put("debug", "true");<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      }<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    }<a name="line.243"></a>
-<span class="sourceLineNo">244</span><a name="line.244"></a>
-<span class="sourceLineNo">245</span>    private static final Map&lt;String,String&gt; KEYTAB_KERBEROS_OPTIONS = new HashMap&lt;&gt;();<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    static {<a name="line.246"></a>
-<span class="sourceLineNo">247</span>      KEYTAB_KERBEROS_OPTIONS.put("doNotPrompt", "true");<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      KEYTAB_KERBEROS_OPTIONS.put("storeKey", "true");<a name="line.248"></a>
-<span class="sourceLineNo">249</span>      KEYTAB_KERBEROS_OPTIONS.put("refreshKrb5Config", "true");<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      KEYTAB_KERBEROS_OPTIONS.putAll(BASIC_JAAS_OPTIONS);<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>    private static final AppConfigurationEntry KEYTAB_KERBEROS_LOGIN =<a name="line.253"></a>
-<span class="sourceLineNo">254</span>      new AppConfigurationEntry(KerberosUtil.getKrb5LoginModuleName(),<a name="line.254"></a>
-<span class="sourceLineNo">255</span>                                LoginModuleControlFlag.REQUIRED,<a name="line.255"></a>
-<span class="sourceLineNo">256</span>                                KEYTAB_KERBEROS_OPTIONS);<a name="line.256"></a>
-<span class="sourceLineNo">257</span><a name="line.257"></a>
-<span class="sourceLineNo">258</span>    private static final AppConfigurationEntry[] KEYTAB_KERBEROS_CONF =<a name="line.258"></a>
-<span class="sourceLineNo">259</span>      new AppConfigurationEntry[]{KEYTAB_KERBEROS_LOGIN};<a name="line.259"></a>
-<span class="sourceLineNo">260</span><a name="line.260"></a>
-<span class="sourceLineNo">261</span>    private javax.security.auth.login.Configuration baseConfig;<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    private final String loginContextName;<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    private final boolean useTicketCache;<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    private final String keytabFile;<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    private final String principal;<a name="line.265"></a>
+<span class="sourceLineNo">209</span>    // User has specified a jaas.conf, keep this one as the good one.<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    // HBASE_OPTS="-Djava.security.auth.login.config=jaas.conf"<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    if (System.getProperty("java.security.auth.login.config") != null) {<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      return;<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>    // No keytab specified, no auth<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    String keytabFilename = conf.get(keytabFileKey);<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    if (keytabFilename == null) {<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      LOG.warn("no keytab specified for: " + keytabFileKey);<a name="line.218"></a>
+<span class="sourceLineNo">219</span>      return;<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    }<a name="line.220"></a>
+<span class="sourceLineNo">221</span><a name="line.221"></a>
+<span class="sourceLineNo">222</span>    String principalConfig = conf.get(userNameKey, System.getProperty("user.name"));<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    String principalName = SecurityUtil.getServerPrincipal(principalConfig, hostname);<a name="line.223"></a>
+<span class="sourceLineNo">224</span><a name="line.224"></a>
+<span class="sourceLineNo">225</span>    // Initialize the "jaas.conf" for keyTab/principal,<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    // If keyTab is not specified use the Ticket Cache.<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    // and set the zookeeper login context name.<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    JaasConfiguration jaasConf = new JaasConfiguration(loginContextName,<a name="line.228"></a>
+<span class="sourceLineNo">229</span>        principalName, keytabFilename);<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    javax.security.auth.login.Configuration.setConfiguration(jaasConf);<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    System.setProperty(loginContextProperty, loginContextName);<a name="line.231"></a>
+<span class="sourceLineNo">232</span>  }<a name="line.232"></a>
+<span class="sourceLineNo">233</span><a name="line.233"></a>
+<span class="sourceLineNo">234</span>  /**<a name="line.234"></a>
+<span class="sourceLineNo">235</span>   * A JAAS configuration that defines the login modules that we want to use for login.<a name="line.235"></a>
+<span class="sourceLineNo">236</span>   */<a name="line.236"></a>
+<span class="sourceLineNo">237</span>  private static class JaasConfiguration extends javax.security.auth.login.Configuration {<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    private static final String SERVER_KEYTAB_KERBEROS_CONFIG_NAME =<a name="line.238"></a>
+<span class="sourceLineNo">239</span>      "zookeeper-server-keytab-kerberos";<a name="line.239"></a>
+<span class="sourceLineNo">240</span>    private static final String CLIENT_KEYTAB_KERBEROS_CONFIG_NAME =<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      "zookeeper-client-keytab-kerberos";<a name="line.241"></a>
+<span class="sourceLineNo">242</span><a name="line.242"></a>
+<span class="sourceLineNo">243</span>    private static final Map&lt;String, String&gt; BASIC_JAAS_OPTIONS = new HashMap&lt;&gt;();<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    static {<a name="line.244"></a>
+<span class="sourceLineNo">245</span>      String jaasEnvVar = System.getenv("HBASE_JAAS_DEBUG");<a name="line.245"></a>
+<span class="sourceLineNo">246</span>      if (jaasEnvVar != null &amp;&amp; "true".equalsIgnoreCase(jaasEnvVar)) {<a name="line.246"></a>
+<span class="sourceLineNo">247</span>        BASIC_JAAS_OPTIONS.put("debug", "true");<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>    private static final Map&lt;String,String&gt; KEYTAB_KERBEROS_OPTIONS = new HashMap&lt;&gt;();<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    static {<a name="line.252"></a>
+<span class="sourceLineNo">253</span>      KEYTAB_KERBEROS_OPTIONS.put("doNotPrompt", "true");<a name="line.253"></a>
+<span class="sourceLineNo">254</span>      KEYTAB_KERBEROS_OPTIONS.put("storeKey", "true");<a name="line.254"></a>
+<span class="sourceLineNo">255</span>      KEYTAB_KERBEROS_OPTIONS.put("refreshKrb5Config", "true");<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      KEYTAB_KERBEROS_OPTIONS.putAll(BASIC_JAAS_OPTIONS);<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    }<a name="line.257"></a>
+<span class="sourceLineNo">258</span><a name="line.258"></a>
+<span class="sourceLineNo">259</span>    private static final AppConfigurationEntry KEYTAB_KERBEROS_LOGIN =<a name="line.259"></a>
+<span class="sourceLineNo">260</span>      new AppConfigurationEntry(KerberosUtil.getKrb5LoginModuleName(),<a name="line.260"></a>
+<span class="sourceLineNo">261</span>                                LoginModuleControlFlag.REQUIRED,<a name="line.261"></a>
+<span class="sourceLineNo">262</span>                                KEYTAB_KERBEROS_OPTIONS);<a name="line.262"></a>
+<span class="sourceLineNo">263</span><a name="line.263"></a>
+<span class="sourceLineNo">264</span>    private static final AppConfigurationEntry[] KEYTAB_KERBEROS_CONF =<a name="line.264"></a>
+<span class="sourceLineNo">265</span>      new AppConfigurationEntry[]{KEYTAB_KERBEROS_LOGIN};<a name="line.265"></a>
 <span class="sourceLineNo">266</span><a name="line.266"></a>
-<span class="sourceLineNo">267</span>    public JaasConfiguration(String loginContextName, String principal, String keytabFile) {<a name="line.267"></a>
-<span class="sourceLineNo">268</span>      this(loginContextName, principal, keytabFile, keytabFile == null || keytabFile.length() == 0);<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>    private JaasConfiguration(String loginContextName, String principal,<a name="line.271"></a>
-<span class="sourceLineNo">272</span>                             String keytabFile, boolean useTicketCache) {<a name="line.272"></a>
-<span class="sourceLineNo">273</span>      try {<a name="line.273"></a>
-<span class="sourceLineNo">274</span>        this.baseConfig = javax.security.auth.login.Configuration.getConfiguration();<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      } catch (SecurityException e) {<a name="line.275"></a>
-<span class="sourceLineNo">276</span>        this.baseConfig = null;<a name="line.276"></a>
-<span class="sourceLineNo">277</span>      }<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      this.loginContextName = loginContextName;<a name="line.278"></a>
-<span class="sourceLineNo">279</span>      this.useTicketCache = useTicketCache;<a name="line.279"></a>
-<span class="sourceLineNo">280</span>      this.keytabFile = keytabFile;<a name="line.280"></a>
-<span class="sourceLineNo">281</span>      this.principal = principal;<a name="line.281"></a>
-<span class="sourceLineNo">282</span>      LOG.info("JaasConfiguration loginContextName=" + loginContextName +<a name="line.282"></a>
-<span class="sourceLineNo">283</span>               " principal=" + principal + " useTicketCache=" + useTicketCache +<a name="line.283"></a>
-<span class="sourceLineNo">284</span>               " keytabFile=" + keytabFile);<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>    @Override<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    public AppConfigurationEntry[] getAppConfigurationEntry(String appName) {<a name="line.288"></a>
-<span class="sourceLineNo">289</span>      if (loginContextName.equals(appName)) {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        if (!useTicketCache) {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>          KEYTAB_KERBEROS_OPTIONS.put("keyTab", keytabFile);<a name="line.291"></a>
-<span class="sourceLineNo">292</span>          KEYTAB_KERBEROS_OPTIONS.put("useKeyTab", "true");<a name="line.292"></a>
-<span class="sourceLineNo">293</span>        }<a name="line.293"></a>
-<span class="sourceLineNo">294</span>        KEYTAB_KERBEROS_OPTIONS.put("principal", principal);<a name="line.294"></a>
-<span class="sourceLineNo">295</span>        KEYTAB_KERBEROS_OPTIONS.put("useTicketCache", useTicketCache ? "true" : "false");<a name="line.295"></a>
-<span class="sourceLineNo">296</span>        return KEYTAB_KERBEROS_CONF;<a name="line.296"></a>
-<span class="sourceLineNo">297</span>      }<a name="line.297"></a>
-<span class="sourceLineNo">298</span>      if (baseConfig != null) return baseConfig.getAppConfigurationEntry(appName);<a name="line.298"></a>
-<span class="sourceLineNo">299</span>      return(null);<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    }<a name="line.300"></a>
-<span class="sourceLineNo">301</span>  }<a name="line.301"></a>
-<span class="sourceLineNo">302</span><a name="line.302"></a>
-<span class="sourceLineNo">303</span>  //<a name="line.303"></a>
-<span class="sourceLineNo">304</span>  // Helper methods<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>   * Returns the full path of the immediate parent of the specified node.<a name="line.307"></a>
-<span class="sourceLineNo">308</span>   * @param node path to get parent of<a name="line.308"></a>
-<span class="sourceLineNo">309</span>   * @return parent of path, null if passed the root node or an invalid node<a name="line.309"></a>
-<span class="sourceLineNo">310</span>   */<a name="line.310"></a>
-<span class="sourceLineNo">311</span>  public static String getParent(String node) {<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    int idx = node.lastIndexOf(ZNodePaths.ZNODE_PATH_SEPARATOR);<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    return idx &lt;= 0 ? null : node.substring(0, idx);<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">267</span>    private javax.security.auth.login.Configuration baseConfig;<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    private final String loginContextName;<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    private final boolean useTicketCache;<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    private final String keytabFile;<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    private final String principal;<a name="line.271"></a>
+<span class="sourceLineNo">272</span><a name="line.272"></a>
+<span class="sourceLineNo">273</span>    public JaasConfiguration(String loginContextName, String principal, String keytabFile) {<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      this(loginContextName, principal, keytabFile, keytabFile == null || keytabFile.length() == 0);<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>    private JaasConfiguration(String loginContextName, String principal,<a name="line.277"></a>
+<span class="sourceLineNo">278</span>                             String keytabFile, boolean useTicketCache) {<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      try {<a name="line.279"></a>
+<span class="sourceLineNo">280</span>        this.baseConfig = javax.security.auth.login.Configuration.getConfiguration();<a name="line.280"></a>
+<span class="sourceLineNo">281</span>      } catch (SecurityException e) {<a name="line.281"></a>
+<span class="sourceLineNo">282</span>        this.baseConfig = null;<a name="line.282"></a>
+<span class="sourceLineNo">283</span>      }<a name="line.283"></a>
+<span class="sourceLineNo">284</span>      this.loginContextName = loginContextName;<a name="line.284"></a>
+<span class="sourceLineNo">285</span>      this.useTicketCache = useTicketCache;<a name="line.285"></a>
+<span class="sourceLineNo">286</span>      this.keytabFile = keytabFile;<a name="line.286"></a>
+<span class="sourceLineNo">287</span>      this.principal = principal;<a name="line.287"></a>
+<span class="sourceLineNo">288</span>      LOG.info("JaasConfiguration loginContextName=" + loginContextName +<a name="line.288"></a>
+<span class="sourceLineNo">289</span>               " principal=" + principal + " useTicketCache=" + useTicketCache +<a name="line.289"></a>
+<span class="sourceLineNo">290</span>               " keytabFile=" + keytabFile);<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    }<a name="line.291"></a>
+<span class="sourceLineNo">292</span><a name="line.292"></a>
+<span class="sourceLineNo">293</span>    @Override<a name="line.293"></a>
+<span class="sourceLineNo">294</span>    public AppConfigurationEntry[] getAppConfigurationEntry(String appName) {<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      if (loginContextName.equals(appName)) {<a name="line.295"></a>
+<span class="sourceLineNo">296</span>        if (!useTicketCache) {<a name="line.296"></a>
+<span class="sourceLineNo">297</span>          KEYTAB_KERBEROS_OPTIONS.put("keyTab", keytabFile);<a name="line.297"></a>
+<span class="sourceLineNo">298</span>          KEYTAB_KERBEROS_OPTIONS.put("useKeyTab", "true");<a name="line.298"></a>
+<span class="sourceLineNo">299</span>        }<a name="line.299"></a>
+<span class="sourceLineNo">300</span>        KEYTAB_KERBEROS_OPTIONS.put("principal", principal);<a name="line.300"></a>
+<span class="sourceLineNo">301</span>        KEYTAB_KERBEROS_OPTIONS.put("useTicketCache", useTicketCache ? "true" : "false");<a name="line.301"></a>
+<span class="sourceLineNo">302</span>        return KEYTAB_KERBEROS_CONF;<a name="line.302"></a>
+<span class="sourceLineNo">303</span>      }<a name="line.303"></a>
+<span class="sourceLineNo">304</span><a name="line.304"></a>
+<span class="sourceLineNo">305</span>      if (baseConfig != null) {<a name="line.305"></a>
+<span class="sourceLineNo">306</span>        return baseConfig.getAppConfigurationEntry(appName);<a name="line.306"></a>
+<span class="sourceLineNo">307</span>      }<a name="line.307"></a>
+<span class="sourceLineNo">308</span><a name="line.308"></a>
+<span class="sourceLineNo">309</span>      return(null);<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><a name="line.312"></a>
+<span class="sourceLineNo">313</span>  //<a name="line.313"></a>
+<span class="sourceLineNo">314</span>  // Helper methods<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>   * Get the name of the current node from the specified fully-qualified path.<a name="line.317"></a>
-<span class="sourceLineNo">318</span>   * @param path fully-qualified path<a name="line.318"></a>
-<span class="sourceLineNo">319</span>   * @return name of the current node<a name="line.319"></a>
+<span class="sourceLineNo">317</span>   * Returns the full path of the immediate parent of the specified node.<a name="line.317"></a>
+<span class="sourceLineNo">318</span>   * @param node path to get parent of<a name="line.318"></a>
+<span class="sourceLineNo">319</span>   * @return parent of path, null if passed the root node or an invalid node<a name="line.319"></a>
 <span class="sourceLineNo">320</span>   */<a name="line.320"></a>
-<span class="sourceLineNo">321</span>  public static String getNodeName(String path) {<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    return path.substring(path.lastIndexOf("/")+1);<a name="line.322"></a>
-<span class="sourceLineNo">323</span>  }<a name="line.323"></a>
-<span class="sourceLineNo">324</span><a name="line.324"></a>
-<span class="sourceLineNo">325</span>  //<a name="line.325"></a>
-<span class="sourceLineNo">326</span>  // Existence checks and watches<a name="line.326"></a>
-<span class="sourceLineNo">327</span>  //<a name="line.327"></a>
-<span class="sourceLineNo">328</span><a name="line.328"></a>
-<span class="sourceLineNo">329</span>  /**<a name="line.329"></a>
-<span class="sourceLineNo">330</span>   * Watch the specified znode for delete/create/change events.  The watcher is<a name="line.330"></a>
-<span class="sourceLineNo">331</span>   * set whether or not the node exists.  If the node already exists, the method<a name="line.331"></a>
-<span class="sourceLineNo">332</span>   * returns true.  If the node does not exist, the method returns false.<a name="line.332"></a>
-<span class="sourceLineNo">333</span>   *<a name="line.333"></a>
-<span class="sourceLineNo">334</span>   * @param zkw zk reference<a name="line.334"></a>
-<span class="sourceLineNo">335</span>   * @param znode path of node to watch<a name="line.335"></a>
-<span class="sourceLineNo">336</span>   * @return true if znode exists, false if does not exist or error<a name="line.336"></a>
-<span class="sourceLineNo">337</span>   * @throws KeeperException if unexpected zookeeper exception<a name="line.337"></a>
-<span class="sourceLineNo">338</span>   */<a name="line.338"></a>
-<span class="sourceLineNo">339</span>  public static boolean watchAndCheckExists(ZKWatcher zkw, String znode)<a name="line.339"></a>
-<span class="sourceLineNo">340</span>  throws KeeperException {<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    try {<a name="line.341"></a>
-<span class="sourceLineNo">342</span>      Stat s = zkw.getRecoverableZooKeeper().exists(znode, zkw);<a name="line.342"></a>
-<span class="sourceLineNo">343</span>      boolean exists = s != null ? true : false;<a name="line.343"></a>
-<span class="sourceLineNo">344</span>      if (exists) {<a name="line.344"></a>
-<span class="sourceLineNo">345</span>        LOG.debug(zkw.prefix("Set watcher on existing znode=" + znode));<a name="line.345"></a>
-<span class="sourceLineNo">346</span>      } else {<a name="line.346"></a>
-<span class="sourceLineNo">347</span>        LOG.debug(zkw.prefix("Set watcher on znode that does not yet exist, " + znode));<a name="line.347"></a>
-<span class="sourceLineNo">348</span>      }<a name="line.348"></a>
-<span class="sourceLineNo">349</span>      return exists;<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    } catch (KeeperException e) {<a name="line.350"></a>
-<span class="sourceLineNo">351</span>      LOG.warn(zkw.prefix("Unable to set watcher on znode " + znode), e);<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      zkw.keeperException(e);<a name="line.352"></a>
-<span class="sourceLineNo">353</span>      return false;<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    } catch (InterruptedException e) {<a name="line.354"></a>
-<span class="sourceLineNo">355</span>      LOG.warn(zkw.prefix("Unable to set watcher on znode " + znode), e);<a name="line.355"></a>
-<span class="sourceLineNo">356</span>      zkw.interruptedException(e);<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      return false;<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    }<a name="line.358"></a>
-<span class="sourceLineNo">359</span>  }<a name="line.359"></a>
-<span class="sourceLineNo">360</span><a name="line.360"></a>
-<span class="sourceLineNo">361</span>  /**<a name="line.361"></a>
-<span class="sourceLineNo">362</span>   * Watch the specified znode, but only if exists. Useful when watching<a name="line.362"></a>
-<span class="sourceLineNo">363</span>   * for deletions. Uses .getData() (and handles NoNodeException) instead<a name="line.363"></a>
-<span class="sourceLineNo">364</span>   * of .exists() to accomplish this, as .getData() will only set a watch if<a name="line.364"></a>
-<span class="sourceLineNo">365</span>   * the znode exists.<a name="line.365"></a>
-<span class="sourceLineNo">366</span>   * @param zkw zk reference<a name="line.366"></a>
-<span class="sourceLineNo">367</span>   * @param znode path of node to watch<a name="line.367"></a>
-<span class="sourceLineNo">368</span>   * @return true if the watch is set, false if node does not exists<a name="line.368"></a>
-<span class="sourceLineNo">369</span>   * @throws KeeperException if unexpected zookeeper exception<a name="line.369"></a>
-<span class="sourceLineNo">370</span>   */<a name="line.370"></a>
-<span class="sourceLineNo">371</span>  public static boolean setWatchIfNodeExists(ZKWatcher zkw, String znode)<a name="line.371"></a>
-<span class="sourceLineNo">372</span>      throws KeeperException {<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    try {<a name="line.373"></a>
-<span class="sourceLineNo">374</span>      zkw.getRecoverableZooKeeper().getData(znode, true, null);<a name="line.374"></a>
-<span class="sourceLineNo">375</span>      return true;<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    } catch (NoNodeException e) {<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      return false;<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    } catch (InterruptedException e) {<a name="line.378"></a>
-<span class="sourceLineNo">379</span>      LOG.warn(zkw.prefix("Unable to set watcher on znode " + znode), e);<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      zkw.interruptedException(e);<a name="line.380"></a>
-<span class="sourceLineNo">381</span>      return false;<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>   * Check if the specified node exists.  Sets no watches.<a name="line.386"></a>
-<span class="sourceLineNo">387</span>   *<a name="line.387"></a>
-<span class="sourceLineNo">388</span>   * @param zkw zk reference<a name="line.388"></a>
-<span class="sourceLineNo">389</span>   * @param znode path of node to watch<a name="line.389"></a>
-<span class="sourceLineNo">390</span>   * @return version of the node if it exists, -1 if does not exist<a name="line.390"></a>
-<span class="sourceLineNo">391</span>   * @throws KeeperException if unexpected zookeeper exception<a name="line.391"></a>
-<span class="sourceLineNo">392</span>   */<a name="line.392"></a>
-<span class="sourceLineNo">393</span>  public static int checkExists(ZKWatcher zkw, String znode)<a name="line.393"></a>
-<span class="sourceLineNo">394</span>  throws KeeperException {<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    try {<a name="line.395"></a>
-<span class="sourceLineNo">396</span>      Stat s = zkw.getRecoverableZooKeeper().exists(znode, null);<a name="line.396"></a>
-<span class="sourceLineNo">397</span>      return s != null ? s.getVersion() : -1;<a name="line.397"></a>
-<span class="sourceLineNo">398</span>    } catch (KeeperException e) {<a name="line.398"></a>
-<span class="sourceLineNo">399</span>      LOG.warn(zkw.prefix("Unable to set watcher on znode (" + znode + ")"), e);<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      zkw.keeperException(e);<a name="line.400"></a>
-<span class="sourceLineNo">401</span>      return -1;<a name="line.401"></a>
-<span class="sourceLineNo">402</span>    } catch (InterruptedException e) {<a name="line.402"></a>
-<span class="sourceLineNo">403</span>      LOG.warn(zkw.prefix("Unable to set watcher on znode (" + znode + ")"), e);<a name="line.403"></a>
-<span class="sourceLineNo">404</span>      zkw.interruptedException(e);<a name="line.404"></a>
-<span class="sourceLineNo">405</span>      return -1;<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    }<a name="line.406"></a>
-<span class="sourceLineNo">407</span>  }<a name="line.407"></a>
-<span class="sourceLineNo">408</span><a name="line.408"></a>
-<span class="sourceLineNo">409</span>  //<a name="line.409"></a>
-<span class="sourceLineNo">410</span>  // Znode listings<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>   * Lists the children znodes of the specified znode.  Also sets a watch on<a name="line.414"></a>
-<span class="sourceLineNo">415</span>   * the specified znode which will capture a NodeDeleted event on the specified<a name="line.415"></a>
-<span class="sourceLineNo">416</span>   * znode as well as NodeChildrenChanged if any children of the specified znode<a name="line.416"></a>
-<span class="sourceLineNo">417</span>   * are created or deleted.<a name="line.417"></a>
-<span class="sourceLineNo">418</span>   *<a name="line.418"></a>
-<span class="sourceLineNo">419</span>   * Returns null if the specified node does not exist.  Otherwise returns a<a name="line.419"></a>
-<span class="sourceLineNo">420</span>   * list of children of the specified node.  If the node exists but it has no<a name="line.420"></a>
-<span class="sourceLineNo">421</span>   * children, an empty list will be returned.<a name="line.421"></a>
-<span class="sourceLineNo">422</span>   *<a name="line.422"></a>
-<span class="sourceLineNo">423</span>   * @param zkw zk reference<a name="line.423"></a>
-<span class="sourceLineNo">424</span>   * @param znode path of node to list and watch children of<a name="line.424"></a>
-<span class="sourceLineNo">425</span>   * @return list of children of the specified node, an empty list if the node<a name="line.425"></a>
-<span class="sourceLineNo">426</span>   *          exists but has no children, and null if the node does not exist<a name="line.426"></a>
-<span class="sourceLineNo">427</span>   * @throws KeeperException if unexpected zookeeper exception<a name="line.427"></a>
-<span class="sourceLineNo">428</span>   */<a name="line.428"></a>
-<span class="sourceLineNo">429</span>  public static List&lt;String&gt; listChildrenAndWatchForNewChildren(<a name="line.429"></a>
-<span class="sourceLineNo">430</span>          ZKWatcher zkw, String znode)<a name="line.430"></a>
-<span class="sourceLineNo">431</span>  throws KeeperException {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>    try {<a name="line.432"></a>
-<span class="sourceLineNo">433</span>      List&lt;String&gt; children = zkw.getRecoverableZooKeeper().getChildren(znode, zkw);<a name="line.433"></a>
-<span class="sourceLineNo">434</span>      return children;<a name="line.434"></a>
-<span class="sourceLineNo">435</span>    } catch(KeeperException.NoNodeException ke) {<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      LOG.debug(zkw.prefix("Unable to list children of znode " + znode + " " +<a name="line.436"></a>
-<span class="sourceLineNo">437</span>          "because node does not exist (not an error)"));<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      return null;<a name="line.438"></a>
-<span class="sourceLineNo">439</span>    } catch (KeeperException e) {<a name="line.439"></a>
-<span class="sourceLineNo">440</span>      LOG.warn(zkw.prefix("Unable to list children of znode " + znode + " "), e);<a name="line.440"></a>
-<span class="sourceLineNo">441</span>      zkw.keeperException(e);<a name="line.441"></a>
-<span class="sourceLineNo">442</span>      return null;<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    } catch (InterruptedException e) {<a name="line.443"></a>
-<span class="sourceLineNo">444</span>      LOG.warn(zkw.prefix("Unable to list children of znode " + znode + " "), e);<a name="line.444"></a>
-<span class="sourceLineNo">445</span>      zkw.interruptedException(e);<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      return null;<a name="line.446"></a>
-<span class="sourceLineNo">447</span>    }<a name="line.447"></a>
-<span class="sourceLineNo">448</span>  }<a name="line.448"></a>
-<span class="sourceLineNo">449</span><a name="line.449"></a>
-<span class="sourceLineNo">450</span>  /**<a name="line.450"></a>
-<span class="sourceLineNo">451</span>   * List all the children of the specified znode, setting a watch for children<a name="line.451"></a>
-<span class="sourceLineNo">452</span>   * changes and also setting a watch on every individual child in order to get<a name="line.452"></a>
-<span class="sourceLineNo">453</span>   * the NodeCreated and NodeDeleted events.<a name="line.453"></a>
-<span class="sourceLineNo">454</span>   * @param zkw zookeeper reference<a name="line.454"></a>
-<span class="sourceLineNo">455</span>   * @param znode node to get children of and watch<a name="line.455"></a>
-<span class="sourceLineNo">456</span>   * @return list of znode names, null if the node doesn't exist<a name="line.456"></a>
-<span class="sourceLineNo">457</span>   * @throws KeeperException<a name="line.457"></a>
-<span class="sourceLineNo">458</span>   */<a name="line.458"></a>
-<span class="sourceLineNo">459</span>  public static List&lt;String&gt; listChildrenAndWatchThem(ZKWatcher zkw,<a name="line.459"></a>
-<span class="sourceLineNo">460</span>      String znode) throws KeeperException {<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    List&lt;String&gt; children = listChildrenAndWatchForNewChildren(zkw, znode);<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    if (children == null) {<a name="line.462"></a>
-<span class="sourceLineNo">463</span>      return null;<a name="line.463"></a>
-<span class="sourceLineNo">464</span>    }<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    for (String child : children) {<a name="line.465"></a>
-<span class="sourceLineNo">466</span>      watchAndCheckExists(zkw, ZNodePaths.joinZNode(znode, child));<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    }<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    return children;<a name="line.468"></a>
-<span class="sourceLineNo">469</span>  }<a name="line.469"></a>
-<span class="sourceLineNo">470</span><a name="line.470"></a>
-<span class="sourceLineNo">471</span>  /**<a name="line.471"></a>
-<span class="sourceLineNo">472</span>   * Lists the children of the specified znode without setting any watches.<a name="line.472"></a>
-<span class="sourceLineNo">473</span>   *<a name="line.473"></a>
-<span class="sourceLineNo">474</span>   * Sets no watches at all, this method is best effort.<a name="line.474"></a>
-<span class="sourceLineNo">475</span>   *<a name="line.475"></a>
-<span class="sourceLineNo">476</span>   * Returns an empty list if the node has no children.  Returns null if the<a name="line.476"></a>
-<span class="sourceLineNo">477</span>   * parent node itself does not exist.<a name="line.477"></a>
-<span class="sourceLineNo">478</span>   *<a name="line.478"></a>
-<span class="sourceLineNo">479</span>   * @param zkw zookeeper reference<a name="line.479"></a>
-<span class="sourceLineNo">480</span>   * @param znode node to get children<a name="line.480"></a>
-<span class="sourceLineNo">481</span>   * @return list of data of children of specified znode, empty if no children,<a name="line.481"></a>
-<span class="sourceLineNo">482</span>   *         null if parent does not exist<a name="line.482"></a>
-<span class="sourceLineNo">483</span>   * @throws KeeperException if unexpected zookeeper exception<a name="line.483"></a>
-<span class="sourceLineNo">484</span>   */<a name="line.484"></a>
-<span class="sourceLineNo">485</span>  public static List&lt;String&gt; listChildrenNoWatch(ZKWatcher zkw, String znode)<a name="line.485"></a>
-<span class="sourceLineNo">486</span>  throws KeeperException {<a name="line.486"></a>
-<span class="sourceLineNo">487</span>    List&lt;String&gt; children = null;<a name="line.487"></a>
-<span class="sourceLineNo">488</span>    try {<a name="line.488"></a>
-<span class="sourceLineNo">489</span>      // List the children without watching<a name="line.489"></a>
-<span class="sourceLineNo">490</span>      children = zkw.getRecoverableZooKeeper().getChildren(znode, null);<a name="line.490"></a>
-<span class="sourceLineNo">491</span>    } catch(KeeperException.NoNodeException nne) {<a name="line.491"></a>
-<span class="sourceLineNo">492</span>      return null;<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    } catch(InterruptedException ie) {<a name="line.493"></a>
-<span class="sourceLineNo">494</span>      zkw.interruptedException(ie);<a name="line.494"></a>
-<span class="sourceLineNo">495</span>    }<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    return children;<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>   * Simple class to hold a node path and node data.<a name="line.500"></a>
-<span class="sourceLineNo">501</span>   * @deprecated Unused<a name="line.501"></a>
-<span class="sourceLineNo">502</span>   */<a name="line.502"></a>
-<span class="sourceLineNo">503</span>  @Deprecated<a name="line.503"></a>
-<span class="sourceLineNo">504</span>  public static class NodeAndData {<a name="line.504"></a>
-<span class="sourceLineNo">505</span>    private String node;<a name="line.505"></a>
-<span class="sourceLineNo">506</span>    private byte [] data;<a name="line.506"></a>
-<span class="sourceLineNo">507</span>    public NodeAndData(String node, byte [] data) {<a name="line.507"></a>
-<span class="sourceLineNo">508</span>      this.node = node;<a name="line.508"></a>
-<span class="sourceLineNo">509</span>      this.data = data;<a name="line.509"></a>
-<span class="sourceLineNo">510</span>    }<a name="line.510"></a>
-<span class="sourceLineNo">511</span>    public String getNode() {<a name="line.511"></a>
-<span class="sourceLineNo">512</span>      return node;<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    }<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    public byte [] getData() {<a name="line.514"></a>
-<span class="sourceLineNo">515</span>      return data;<a name="line.515"></a>
-<span class="sourceLineNo">516</span>    }<a name="line.516"></a>
-<span class="sourceLineNo">517</span>    @Override<a name="line.517"></a>
-<span class="sourceLineNo">518</span>    public String toString() {<a name="line.518"></a>
-<span class="sourceLineNo">519</span>      return node;<a name="line.519"></a>
+<span class="sourceLineNo">321</span>  public static String getParent(String node) {<a name="line.321"></a>
+<span class="sourceLineNo">322</span>    int idx = node.lastIndexOf(ZNodePaths.ZNODE_PATH_SEPARATOR);<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    return idx &lt;= 0 ? null : node.substring(0, idx);<a name="line.323"></a>
+<span class="sourceLineNo">324</span>  }<a name="line.324"></a>
+<span class="sourceLineNo">325</span><a name="line.325"></a>
+<span class="sourceLineNo">326</span>  /**<a name="line.326"></a>
+<span class="sourceLineNo">327</span>   * Get the name of the current node from the specified fully-qualified path.<a name="line.327"></a>
+<span class="sourceLineNo">328</span>   * @param path fully-qualified path<a name="line.328"></a>
+<span class="sourceLineNo">329</span>   * @return name of the current node<a name="line.329"></a>
+<span class="sourceLineNo">330</span>   */<a name="line.330"></a>
+<span class="sourceLineNo">331</span>  public static String getNodeName(String path) {<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    return path.substring(path.lastIndexOf("/")+1);<a name="line.332"></a>
+<span class="sourceLineNo">333</span>  }<a name="line.333"></a>
+<span class="sourceLineNo">334</span><a name="line.334"></a>
+<span class="sourceLineNo">335</span>  //<a name="line.335"></a>
+<span class="sourceLineNo">336</span>  // Existence checks and watches<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>   * Watch the specified znode for delete/create/change events.  The watcher is<a name="line.340"></a>
+<span class="sourceLineNo">341</span>   * set whether or not the node exists.  If the node already exists, the method<a name="line.341"></a>
+<span class="sourceLineNo">342</span>   * returns true.  If the node does not exist, the method returns false.<a name="line.342"></a>
+<span class="sourceLineNo">343</span>   *<a name="line.343"></a>
+<span class="sourceLineNo">344</span>   * @param zkw zk reference<a name="line.344"></a>
+<span class="sourceLineNo">345</span>   * @param znode path of node to watch<a name="line.345"></a>
+<span class="sourceLineNo">346</span>   * @return true if znode exists, false if does not exist or error<a name="line.346"></a>
+<span class="sourceLineNo">347</span>   * @throws KeeperException if unexpected zookeeper exception<a name="line.347"></a>
+<span class="sourceLineNo">348</span>   */<a name="line.348"></a>
+<span class="sourceLineNo">349</span>  public static boolean watchAndCheckExists(ZKWatcher zkw, String znode)<a name="line.349"></a>
+<span class="sourceLineNo">350</span>  throws KeeperException {<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    try {<a name="line.351"></a>
+<span class="sourceLineNo">352</span>      Stat s = zkw.getRecoverableZooKeeper().exists(znode, zkw);<a name="line.352"></a>
+<span class="sourceLineNo">353</span>      boolean exists = s != null ? true : false;<a name="line.353"></a>
+<span class="sourceLineNo">354</span>      if (exists) {<a name="line.354"></a>
+<span class="sourceLineNo">355</span>        LOG.debug(zkw.prefix("Set watcher on existing znode=" + znode));<a name="line.355"></a>
+<span class="sourceLineNo">356</span>      } else {<a name="line.356"></a>
+<span class="sourceLineNo">357</span>        LOG.debug(zkw.prefix("Set watcher on znode that does not yet exist, " + znode));<a name="line.357"></a>
+<span class="sourceLineNo">358</span>      }<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      return exists;<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    } catch (KeeperException e) {<a name="line.360"></a>
+<span class="sourceLineNo">361</span>      LOG.warn(zkw.prefix("Unable to set watcher on znode " + znode), e);<a name="line.361"></a>
+<span class="sourceLineNo">362</span>      zkw.keeperException(e);<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      return false;<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    } catch (InterruptedException e) {<a name="line.364"></a>
+<span class="sourceLineNo">365</span>      LOG.warn(zkw.prefix("Unable to set watcher on znode " + znode), e);<a name="line.365"></a>
+<span class="sourceLineNo">366</span>      zkw.interruptedException(e);<a name="line.366"></a>
+<span class="sourceLineNo">367</span>      return false;<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>  /**<a name="line.371"></a>
+<span class="sourceLineNo">372</span>   * Watch the specified znode, but only if exists. Useful when watching<a name="line.372"></a>
+<span class="sourceLineNo">373</span>   * for deletions. Uses .getData() (and handles NoNodeException) instead<a name="line.373"></a>
+<span class="sourceLineNo">374</span>   * of .exists() to accomplish this, as .getData() will only set a watch if<a name="line.374"></a>
+<span class="sourceLineNo">375</span>   * the znode exists.<a name="line.375"></a>
+<span class="sourceLineNo">376</span>   * @param zkw zk reference<a name="line.376"></a>
+<span class="sourceLineNo">377</span>   * @param znode path of node to watch<a name="line.377"></a>
+<span class="sourceLineNo">378</span>   * @return true if the watch is set, false if node does not exists<a name="line.378"></a>
+<span class="sourceLineNo">379</span>   * @throws KeeperException if unexpected zookeeper exception<a name="line.379"></a>
+<span class="sourceLineNo">380</span>   */<a name="line.380"></a>
+<span class="sourceLineNo">381</span>  public static boolean setWatchIfNodeExists(ZKWatcher zkw, String znode)<a name="line.381"></a>
+<span class="sourceLineNo">382</span>      throws KeeperException {<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    try {<a name="line.383"></a>
+<span class="sourceLineNo">384</span>      zkw.getRecoverableZooKeeper().getData(znode, true, null);<a name="line.384"></a>
+<span class="sourceLineNo">385</span>      return true;<a name="line.385"></a>
+<span class="sourceLineNo">386</span>    } catch (NoNodeException e) {<a name="line.386"></a>
+<span class="sourceLineNo">387</span>      return false;<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    } catch (InterruptedException e) {<a name="line.388"></a>
+<span class="sourceLineNo">389</span>      LOG.warn(zkw.prefix("Unable to set watcher on znode " + znode), e);<a name="line.389"></a>
+<span class="sourceLineNo">390</span>      zkw.interruptedException(e);<a name="line.390"></a>
+<span class="sourceLineNo">391</span>      return false;<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">395</span>  /**<a name="line.395"></a>
+<span class="sourceLineNo">396</span>   * Check if the specified node exists.  Sets no watches.<a name="line.396"></a>
+<span class="sourceLineNo">397</span>   *<a name="line.397"></a>
+<span class="sourceLineNo">398</span>   * @param zkw zk reference<a name="line.398"></a>
+<span class="sourceLineNo">399</span>   * @param znode path of node to watch<a name="line.399"></a>
+<span class="sourceLineNo">400</span>   * @return version of the node if it exists, -1 if does not exist<a name="line.400"></a>
+<span class="sourceLineNo">401</span>   * @throws KeeperException if unexpected zookeeper exception<a name="line.401"></a>
+<span class="sourceLineNo">402</span>   */<a name="line.402"></a>
+<span class="sourceLineNo">403</span>  public static int checkExists(ZKWatcher zkw, String znode)<a name="line.403"></a>
+<span class="sourceLineNo">404</span>  throws KeeperException {<a name="line.404"></a>
+<span class="sourceLineNo">405</span>    try {<a name="line.405"></a>
+<span class="sourceLineNo">406</span>      Stat s = zkw.getRecoverableZooKeeper().exists(znode, null);<a name="line.406"></a>
+<span class="sourceLineNo">407</span>      return s != null ? s.getVersion() : -1;<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    } catch (KeeperException e) {<a name="line.408"></a>
+<span class="sourceLineNo">409</span>      LOG.warn(zkw.prefix("Unable to set watcher on znode (" + znode + ")"), e);<a name="line.409"></a>
+<span class="sourceLineNo">410</span>      zkw.keeperException(e);<a name="line.410"></a>
+<span class="sourceLineNo">411</span>      return -1;<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    } catch (InterruptedException e) {<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      LOG.warn(zkw.prefix("Unable to set watcher on znode (" + znode + ")"), e);<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      zkw.interruptedException(e);<a name="line.414"></a>
+<span class="sourceLineNo">415</span>      return -1;<a name="line.415"></a>
+<span class="sourceLineNo">416</span>    }<a name="line.416"></a>
+<span class="sourceLineNo">417</span>  }<a name="line.417"></a>
+<span class="sourceLineNo">418</span><a name="line.418"></a>
+<span class="sourceLineNo">419</span>  //<a name="line.419"></a>
+<span class="sourceLineNo">420</span>  // Znode listings<a name="line.420"></a>
+<span class="sourceLineNo">421</span>  //<a name="line.421"></a>
+<span class="sourceLineNo">422</span><a name="line.422"></a>
+<span class="sourceLineNo">423</span>  /**<a name="line.423"></a>
+<span class="sourceLineNo">424</span>   * Lists the children znodes of the specified znode.  Also sets a watch on<a name="line.424"></a>
+<span class="sourceLineNo">425</span>   * the specified znode which will capture a NodeDeleted event on the specified<a name="line.425"></a>
+<span class="sourceLineNo">426</span>   * znode as well as NodeChildrenChanged if any children of the specified znode<a name="line.426"></a>
+<span class="sourceLineNo">427</span>   * are created or deleted.<a name="line.427"></a>
+<span class="sourceLineNo">428</span>   *<a name="line.428"></a>
+<span class="sourceLineNo">429</span>   * Returns null if the specified node does not exist.  Otherwise returns a<a name="line.429"></a>
+<span class="sourceLineNo">430</span>   * list of children of the specified node.  If the node exists but it has no<a name="line.430"></a>
+<span class="sourceLineNo">431</span>   * children, an empty list will be returned.<a name="line.431"></a>
+<span class="sourceLineNo">432</span>   *<a name="line.432"></a>
+<span class="sourceLineNo">433</span>   * @param zkw zk reference<a name="line.433"></a>
+<span class="sourceLineNo">434</span>   * @param znode path of node to list and watch children of<a name="line.434"></a>
+<span class="sourceLineNo">435</span>   * @return list of children of the specified node, an empty list if the node<a name="line.435"></a>
+<span class="sourceLineNo">436</span>   *          exists but has no children, and null if the node does not exist<a name="line.436"></a>
+<span class="sourceLineNo">437</span>   * @throws KeeperException if unexpected zookeeper exception<a name="line.437"></a>
+<span class="sourceLineNo">438</span>   */<a name="line.438"></a>
+<span class="sourceLineNo">439</span>  public static List&lt;String&gt; listChildrenAndWatchForNewChildren(<a name="line.439"></a>
+<span class="sourceLineNo">440</span>          ZKWatcher zkw, String znode)<a name="line.440"></a>
+<span class="sourceLineNo">441</span>  throws KeeperException {<a name="line.441"></a>
+<span class="sourceLineNo">442</span>    try {<a name="line.442"></a>
+<span class="sourceLineNo">443</span>      List&lt;String&gt; children = zkw.getRecoverableZooKeeper().getChildren(znode, zkw);<a name="line.443"></a>
+<span class="sourceLineNo">444</span>      return children;<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    } catch(KeeperException.NoNodeException ke) {<a name="line.445"></a>
+<span class="sourceLineNo">446</span>      LOG.debug(zkw.prefix("Unable to list children of znode " + znode + " " +<a name="line.446"></a>
+<span class="sourceLineNo">447</span>          "because node does not exist (not an error)"));<a name="line.447"></a>
+<span class="sourceLineNo">448</span>      return null;<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    } catch (KeeperException e) {<a name="line.449"></a>
+<span class="sourceLineNo">450</span>      LOG.warn(zkw.prefix("Unable to list children of znode " + znode + " "), e);<a name="line.450"></a>
+<span class="sourceLineNo">451</span>      zkw.keeperException(e);<a name="line.451"></a>
+<span class="sourceLineNo">452</span>      return null;<a name="line.452"></a>
+<span class="sourceLineNo">453</span>    } catch (InterruptedException e) {<a name="line.453"></a>
+<span class="sourceLineNo">454</span>      LOG.warn(zkw.prefix("Unable to list chi

<TRUNCATED>

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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKUtil.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKUtil.html b/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKUtil.html
index fde69aa..b6bdb35 100644
--- a/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKUtil.html
+++ b/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKUtil.html
@@ -110,7 +110,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Private
-public class <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.90">ZKUtil</a>
+public final class <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.91">ZKUtil</a>
 extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 <div class="block">Internal HBase utility class for ZooKeeper.
 
@@ -192,10 +192,12 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <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>
+<th class="colFirst" scope="col">Modifier</th>
+<th class="colLast" scope="col">Constructor and Description</th>
 </tr>
 <tr class="altColor">
-<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKUtil.html#ZKUtil--">ZKUtil</a></span>()</code>&nbsp;</td>
+<td class="colFirst"><code>private </code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKUtil.html#ZKUtil--">ZKUtil</a></span>()</code>&nbsp;</td>
 </tr>
 </table>
 </li>
@@ -736,7 +738,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.91">LOG</a></pre>
+<pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.92">LOG</a></pre>
 </li>
 </ul>
 <a name="zkDumpConnectionTimeOut">
@@ -745,7 +747,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>zkDumpConnectionTimeOut</h4>
-<pre>private static&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.93">zkDumpConnectionTimeOut</a></pre>
+<pre>private static&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.94">zkDumpConnectionTimeOut</a></pre>
 </li>
 </ul>
 </li>
@@ -762,7 +764,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ZKUtil</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.90">ZKUtil</a>()</pre>
+<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.96">ZKUtil</a>()</pre>
 </li>
 </ul>
 </li>
@@ -779,7 +781,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>connect</h4>
-<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html" title="class in org.apache.hadoop.hbase.zookeeper">RecoverableZooKeeper</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.106">connect</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html" title="class in org.apache.hadoop.hbase.zookeeper">RecoverableZooKeeper</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.110">connect</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                                            org.apache.zookeeper.Watcher&nbsp;watcher)
                                     throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Creates a new connection to ZooKeeper, pulling settings and ensemble config
@@ -803,7 +805,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>connect</h4>
-<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html" title="class in org.apache.hadoop.hbase.zookeeper">RecoverableZooKeeper</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.112">connect</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html" title="class in org.apache.hadoop.hbase.zookeeper">RecoverableZooKeeper</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.116">connect</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                                            <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;ensemble,
                                            org.apache.zookeeper.Watcher&nbsp;watcher)
                                     throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -819,7 +821,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>connect</h4>
-<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html" title="class in org.apache.hadoop.hbase.zookeeper">RecoverableZooKeeper</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.118">connect</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html" title="class in org.apache.hadoop.hbase.zookeeper">RecoverableZooKeeper</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.122">connect</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                                            <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;ensemble,
                                            org.apache.zookeeper.Watcher&nbsp;watcher,
                                            <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;identifier)
@@ -836,7 +838,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>loginServer</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.153">loginServer</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.157">loginServer</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                                <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;keytabFileKey,
                                <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;userNameKey,
                                <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;hostname)
@@ -864,7 +866,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>loginClient</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.174">loginClient</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.178">loginClient</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                                <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;keytabFileKey,
                                <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;userNameKey,
                                <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;hostname)
@@ -892,7 +894,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>login</h4>
-<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.197">login</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.201">login</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                           <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;keytabFileKey,
                           <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;userNameKey,
                           <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;hostname,
@@ -924,7 +926,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getParent</h4>
-<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.311">getParent</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;node)</pre>
+<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.321">getParent</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;node)</pre>
 <div class="block">Returns the full path of the immediate parent of the specified node.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -940,7 +942,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getNodeName</h4>
-<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.321">getNodeName</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path)</pre>
+<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.331">getNodeName</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path)</pre>
 <div class="block">Get the name of the current node from the specified fully-qualified path.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -956,7 +958,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>watchAndCheckExists</h4>
-<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.339">watchAndCheckExists</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
+<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.349">watchAndCheckExists</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                                           <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;znode)
                                    throws org.apache.zookeeper.KeeperException</pre>
 <div class="block">Watch the specified znode for delete/create/change events.  The watcher is
@@ -979,7 +981,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>setWatchIfNodeExists</h4>
-<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.371">setWatchIfNodeExists</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
+<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.381">setWatchIfNodeExists</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                                            <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;znode)
                                     throws org.apache.zookeeper.KeeperException</pre>
 <div class="block">Watch the specified znode, but only if exists. Useful when watching
@@ -1003,7 +1005,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>checkExists</h4>
-<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.393">checkExists</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
+<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.403">checkExists</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                               <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;znode)
                        throws org.apache.zookeeper.KeeperException</pre>
 <div class="block">Check if the specified node exists.  Sets no watches.</div>
@@ -1024,7 +1026,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>listChildrenAndWatchForNewChildren</h4>
-<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.429">listChildrenAndWatchForNewChildren</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
+<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.439">listChildrenAndWatchForNewChildren</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                                                               <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;znode)
                                                        throws org.apache.zookeeper.KeeperException</pre>
 <div class="block">Lists the children znodes of the specified znode.  Also sets a watch on
@@ -1053,7 +1055,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>listChildrenAndWatchThem</h4>
-<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.459">listChildrenAndWatchThem</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
+<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.469">listChildrenAndWatchThem</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                                                     <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;znode)
                                              throws org.apache.zookeeper.KeeperException</pre>
 <div class="block">List all the children of the specified znode, setting a watch for children
@@ -1066,7 +1068,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>list of znode names, null if the node doesn't exist</dd>
 <dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code>org.apache.zookeeper.KeeperException</code></dd>
+<dd><code>org.apache.zookeeper.KeeperException</code> - if a ZooKeeper operation fails</dd>
 </dl>
 </li>
 </ul>
@@ -1076,7 +1078,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>listChildrenNoWatch</h4>
-<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.485">listChildrenNoWatch</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
+<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.495">listChildrenNoWatch</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                                                <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;znode)
                                         throws org.apache.zookeeper.KeeperException</pre>
 <div class="block">Lists the children of the specified znode without setting any watches.
@@ -1103,7 +1105,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>nodeHasChildren</h4>
-<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.542">nodeHasChildren</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
+<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.552">nodeHasChildren</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                                       <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;znode)
                                throws org.apache.zookeeper.KeeperException</pre>
 <div class="block">Checks if the specified znode has any children.  Sets no watches.
@@ -1132,7 +1134,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getNumberOfChildren</h4>
-<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.574">getNumberOfChildren</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
+<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.584">getNumberOfChildren</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                                       <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;znode)
                                throws org.apache.zookeeper.KeeperException</pre>
 <div class="block">Get the number of children of the specified node.
@@ -1158,15 +1160,14 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getData</h4>
-<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.597">getData</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
+<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.607">getData</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                              <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;znode)
                       throws org.apache.zookeeper.KeeperException,
                              <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <div class="block">Get znode data. Does not set a watcher.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
-<dd>ZNode data, null if the node does not exist or if there is an
-  error.</dd>
+<dd>ZNode data, null if the node does not exist or if there is an error.</dd>
 <dt><span class="throwsLabel">Throws:</span></dt>
 <dd><code>org.apache.zookeeper.KeeperException</code></dd>
 <dd><code><a href="http://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>
@@ -1179,7 +1180,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getDataAndWatch</h4>
-<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.625">getDataAndWatch</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
+<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.635">getDataAndWatch</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                                      <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;znode)
                               throws org.apache.zookeeper.KeeperException</pre>
 <div class="block">Get the data at the specified znode and set a watch.
@@ -1203,7 +1204,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getDataAndWatch</h4>
-<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.642">getDataAndWatch</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
+<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.652">getDataAndWatch</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                                      <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;znode,
                                      org.apache.zookeeper.data.Stat&nbsp;stat)
                               throws org.apache.zookeeper.KeeperException</pre>
@@ -1229,7 +1230,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getDataInternal</h4>
-<pre>private static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.647">getDataInternal</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
+<pre>private static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.657">getDataInternal</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                                       <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;znode,
                                       org.apache.zookeeper.data.Stat&nbsp;stat,
                                       boolean&nbsp;watcherSet)
@@ -1246,7 +1247,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getDataNoWatch</h4>
-<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.686">getDataNoWatch</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
+<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.696">getDataNoWatch</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                                     <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;znode,
                                     org.apache.zookeeper.data.Stat&nbsp;stat)
                              throws org.apache.zookeeper.KeeperException</pre>
@@ -1276,7 +1277,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <li class="blockList">
 <h4>getChildDataAndWatchForNewChildren</h4>
 <pre><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKUtil.NodeAndData.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKUtil.NodeAndData</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.726">getChildDataAndWatchForNewChildren</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
+public static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKUtil.NodeAndData.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKUtil.NodeAndData</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.736">getChildDataAndWatchForNewChildren</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                                                                                       <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;baseNode)
                                                                                throws org.apache.zookeeper.KeeperException</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">Unused</span></div>
@@ -1307,7 +1308,7 @@ public static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/L
 <li class="blockList">
 <h4>updateExistingNodeData</h4>
 <pre><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.759">updateExistingNodeData</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
+public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.769">updateExistingNodeData</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                                                       <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;znode,
                                                       byte[]&nbsp;data,
                                                       int&nbsp;expectedVersion)
@@ -1322,9 +1323,9 @@ public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>zkw</code> - zk reference</dd>
-<dd><code>znode</code> - </dd>
-<dd><code>data</code> - </dd>
-<dd><code>expectedVersion</code> - </dd>
+<dd><code>znode</code> - the path to the ZNode</dd>
+<dd><code>data</code> - the data to store in ZooKeeper</dd>
+<dd><code>expectedVersion</code> - the expected version</dd>
 <dt><span class="throwsLabel">Throws:</span></dt>
 <dd><code>org.apache.zookeeper.KeeperException</code> - if unexpected zookeeper exception</dd>
 <dd><code>KeeperException.BadVersionException</code> - if version mismatch</dd>
@@ -1337,7 +1338,7 @@ public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>setData</h4>
-<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.793">setData</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
+<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.802">setData</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                               <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;znode,
                               byte[]&nbsp;data,
                               int&nbsp;expectedVersion)
@@ -1374,7 +1375,7 @@ public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>createSetData</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.813">createSetData</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.822">createSetData</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                                  <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;znode,
                                  byte[]&nbsp;data)
                           throws org.apache.zookeeper.KeeperException</pre>
@@ -1386,7 +1387,7 @@ public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <dd><code>znode</code> - path of node</dd>
 <dd><code>data</code> - data to set for node</dd>
 <dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code>org.apache.zookeeper.KeeperException</code></dd>
+<dd><code>org.apache.zookeeper.KeeperException</code> - if a ZooKeeper operation fails</dd>
 </dl>
 </li>
 </ul>
@@ -1396,7 +1397,7 @@ public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>setData</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.839">setData</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.847">setData</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                            <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;znode,
                            byte[]&nbsp;data)
                     throws org.apache.zookeeper.KeeperException,
@@ -1427,7 +1428,7 @@ public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>setData</h4>
-<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.844">setData</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
+<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.852">setData</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                             <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.SetData.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKUtil.ZKUtilOp.SetData</a>&nbsp;setData)
                      throws org.apache.zookeeper.KeeperException,
                             org.apache.zookeeper.KeeperException.NoNodeException</pre>
@@ -1444,7 +1445,7 @@ public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>isSecureZooKeeper</h4>
-<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.855">isSecureZooKeeper</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
+<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.863">isSecureZooKeeper</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
 <div class="block">Returns whether or not secure authentication is enabled
  (whether <code>hbase.security.authentication</code> is set to
  <code>kerberos</code>.</div>
@@ -1456,7 +1457,7 @@ public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>createACL</h4>
-<pre>private static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a>&lt;org.apache.zookeeper.data.ACL&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.880">createACL</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
+<pre>private static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a>&lt;org.apache.zookeeper.data.ACL&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.888">createACL</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                                                                   <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;node)</pre>
 </li>
 </ul>
@@ -1466,7 +1467,7 @@ public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>createACL</h4>
-<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a>&lt;org.apache.zookeeper.data.ACL&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.884">createACL</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
+<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a>&lt;org.apache.zookeeper.data.ACL&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.892">createACL</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                                                                  <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;node,
                                                                  boolean&nbsp;isSecureZooKeeper)</pre>
 </li>
@@ -1477,7 +1478,7 @@ public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>createEphemeralNodeAndWatch</h4>
-<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.952">createEphemeralNodeAndWatch</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
+<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.960">createEphemeralNodeAndWatch</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                                                   <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;znode,
                                                   byte[]&nbsp;data)
                                            throws org.apache.zookeeper.KeeperException</pre>
@@ -1508,7 +1509,7 @@ public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>createNodeIfNotExistsAndWatch</h4>
-<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.992">createNodeIfNotExistsAndWatch</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
+<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.1000">createNodeIfNotExistsAndWatch</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                                                     <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;znode,
                                                     byte[]&nbsp;data)
                                              throws org.apache.zookeeper.KeeperException</pre>
@@ -1542,7 +1543,7 @@ public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>createNodeIfNotExistsNoWatch</h4>
-<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.1028">createNodeIfNotExistsNoWatch</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
+<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.1036">createNodeIfNotExistsNoWatch</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                                                   <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;znode,
                                                   byte[]&nbsp;data,
                                                   org.apache.zookeeper.CreateMode&nbsp;createMode)
@@ -1571,7 +1572,7 @@ public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>createAndWatch</h4>
-<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.1060">createAndWatch</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
+<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.1067">createAndWatch</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                                  <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;znode,
                                  byte[]&nbsp;data)
                           throws org.apache.zookeeper.KeeperException,
@@ -1602,7 +1603,7 @@ public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>asyncCreate</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.1092">asyncCreate</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.1100">asyncCreate</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                                <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;znode,
                                byte[]&nbsp;data,
                                org.apache.zookeeper.AsyncCallback.StringCallback&nbsp;cb,
@@ -1617,8 +1618,8 @@ public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <dd><code>zkw</code> - zk reference</dd>
 <dd><code>znode</code> - path of node to create</dd>
 <dd><code>data</code> - data of node to create</dd>
-<dd><code>cb</code> - </dd>
-<dd><code>ctx</code> - </dd>
+<dd><code>cb</code> - the callback to use for the creation</dd>
+<dd><code>ctx</code> - the context to use for the creation</dd>
 </dl>
 </li>
 </ul>
@@ -1628,7 +1629,7 @@ public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>createAndFailSilent</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.1109">createAndFailSilent</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.1117">createAndFailSilent</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                                        <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;znode)
                                 throws org.apache.zookeeper.KeeperException</pre>
 <div class="block">Creates the specified node, iff the node does not exist.  Does not set a
@@ -1650,7 +1651,7 @@ public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>createAndFailSilent</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.1125">createAndFailSilent</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.1133">createAndFailSilent</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                                        <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;znode,
                                        byte[]&nbsp;data)
                                 throws org.apache.zookeeper.KeeperException</pre>
@@ -1674,7 +1675,7 @@ public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>createAndFailSilent</h4>
-<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.1132">createAndFailSilent</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
+<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.1140">createAndFailSilent</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                                         <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.CreateAndFailSilent.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKUtil.ZKUtilOp.CreateAndFailSilent</a>&nbsp;cafs)
                                  throws org.apache.zookeeper.KeeperException</pre>
 <dl>
@@ -1689,7 +1690,7 @@ public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>createWithParents</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.1167">createWithParents</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.1175">createWithParents</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                                      <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;znode)
                               throws org.apache.zookeeper.KeeperException</pre>
 <div class="block">Creates the specified node and all parent nodes required for it to exist.
@@ -1712,7 +1713,7 @@ public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>createWithParents</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.1185">createWithParents</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.1193">createWithParents</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                                      <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;znode,
                                      byte[]&nbsp;data)
                               throws org.apache.zookeeper.KeeperException</pre>
@@ -1738,7 +1739,7 @@ public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteNode</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.1210">deleteNode</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.1218">deleteNode</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                               <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;node)
                        throws org.apache.zookeeper.KeeperException</pre>
 <div class="block">Delete the specified node.  Sets no watches.  Throws all exceptions.</div>
@@ -1754,7 +1755,7 @@ public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteNode</h4>
-<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.1219">deleteNode</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
+<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.1227">deleteNode</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                                  <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;node,
                                  int&nbsp;version)
                           throws org.apache.zookeeper.KeeperException</pre>
@@ -1772,16 +1773,16 @@ public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteNodeFailSilent</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.1239">deleteNodeFailSilent</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.1248">deleteNodeFailSilent</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                                         <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;node)
                                  throws org.apache.zookeeper.KeeperException</pre>
 <div class="block">Deletes the specified node.  Fails silent if the node does not exist.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>zkw</code> - </dd>
-<dd><code>node</code> - </dd>
+<dd><code>zkw</code> - reference to the <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper"><code>ZKWatcher</code></a> which also contains configuration and operation</dd>
+<dd><code>node</code> - the node to delete</dd>
 <dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code>org.apache.zookeeper.KeeperException</code></dd>
+<dd><code>org.apache.zookeeper.KeeperException</code> - if a ZooKeeper operation fails</dd>
 </dl>
 </li>
 </ul>
@@ -1791,7 +1792,7 @@ public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteNodeFailSilent</h4>
-<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.1245">deleteNodeFailSilent</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
+<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.1254">deleteNodeFailSilent</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                                          <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.DeleteNodeFailSilent.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKUtil.ZKUtilOp.DeleteNodeFailSilent</a>&nbsp;dnfs)
                                   throws org.apache.zookeeper.KeeperException</pre>
 <dl>
@@ -1806,7 +1807,7 @@ public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteNodeRecursively</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.1265">deleteNodeRecursively</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.1274">deleteNodeRecursively</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                                          <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;node)
                                   throws org.apache.zookeeper.KeeperException</pre>
 <div class="block">Delete the specified node and all of it's children.
@@ -1827,7 +1828,7 @@ public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteChildrenRecursively</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.1278">deleteChildrenRecursively</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.1287">deleteChildrenRecursively</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                                              <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;node)
                                       throws org.apache.zookeeper.KeeperException</pre>
 <div class="block">Delete all the children of the specified node but not the node itself.
@@ -1836,7 +1837,7 @@ public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
  children.</div>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code>org.apache.zookeeper.KeeperException</code></dd>
+<dd><code>org.apache.zookeeper.KeeperException</code> - if a ZooKeeper operation fails</dd>
 </dl>
 </li>
 </ul>
@@ -1846,7 +1847,7 @@ public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteChildrenRecursivelyMultiOrSequential</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.1313">deleteChildrenRecursivelyMultiOrSequential</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.1322">deleteChildrenRecursivelyMultiOrSequential</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                                                               boolean&nbsp;runSequentialOnMultiFailure,
                                                               <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;pathRoots)
                                                        throws org.apache.zookeeper.KeeperException</pre>
@@ -1883,7 +1884,7 @@ public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteNodeRecursivelyMultiOrSequential</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.1364">deleteNodeRecursivelyMultiOrSequential</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.1373">deleteNodeRecursivelyMultiOrSequential</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                                                           boolean&nbsp;runSequentialOnMultiFailure,
                                                           <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;pathRoots)
                                                    throws org.apache.zookeeper.KeeperException</pre>
@@ -1920,7 +1921,7 @@ public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>listChildrenBFSNoWatch</h4>
-<pre>private static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.1406">listChildrenBFSNoWatch</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
+<pre>private static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.1415">listChildrenBFSNoWatch</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                                                    <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;znode)
                                             throws org.apache.zookeeper.KeeperException</pre>
 <div class="block">BFS Traversal of all the children under path, with the entries in the list,
@@ -1943,7 +1944,7 @@ public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>listChildrenBFSAndWatchThem</h4>
-<pre>private static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.1442">listChildrenBFSAndWatchThem</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
+<pre>private static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.1451">listChildrenBFSAndWatchThem</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                                                         <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;znode)
                                                  throws org.apache.zookeeper.KeeperException</pre>
 <div class="block">BFS Traversal of all the children under path, with the entries in the list,
@@ -1966,7 +1967,7 @@ public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>toZooKeeperOp</h4>
-<pre>private static&nbsp;org.apache.zookeeper.Op&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.1595">toZooKeeperOp</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
+<pre>private static&nbsp;org.apache.zookeeper.Op&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.1616">toZooKeeperOp</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                                                      <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKUtil.ZKUtilOp</a>&nbsp;op)
                                               throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</a></pre>
 <div class="block">Convert from ZKUtilOp to ZKOp</div>
@@ -1982,7 +1983,7 @@ public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>multiOrSequential</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.1634">multiOrSequential</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.1656">multiOrSequential</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                                      <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKUtil.ZKUtilOp</a>&gt;&nbsp;ops,
                                      boolean&nbsp;runSequentialOnMultiFailure)
                               throws org.apache.zookeeper.KeeperException</pre>
@@ -2003,7 +2004,7 @@ public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
  result in the correct final state, but means that the operations will not run atomically.</div>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code>org.apache.zookeeper.KeeperException</code></dd>
+<dd><code>org.apache.zookeeper.KeeperException</code> - if a ZooKeeper operation fails</dd>
 </dl>
 </li>
 </ul>
@@ -2013,7 +2014,7 @@ public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>processSequentially</h4>
-<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.1670">processSequentially</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
+<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.1694">processSequentially</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                                         <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKUtil.ZKUtilOp</a>&gt;&nbsp;ops)
                                  throws org.apache.zookeeper.KeeperException,
                                         org.apache.zookeeper.KeeperException.NoNodeException</pre>
@@ -2030,7 +2031,7 @@ public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>dump</h4>
-<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.1691">dump</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw)</pre>
+<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.1715">dump</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw)</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>String dump of everything in ZooKeeper.</dd>
@@ -2043,16 +2044,16 @@ public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>getReplicationZnodesDump</h4>
-<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.1755">getReplicationZnodesDump</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
+<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.1780">getReplicationZnodesDump</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                                              <a href="http://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)
                                       throws org.apache.zookeeper.KeeperException</pre>
 <div class="block">Appends replication znodes to the passed StringBuilder.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>zkw</code> - </dd>
-<dd><code>sb</code> - </dd>
+<dd><code>zkw</code> - reference to the <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper"><code>ZKWatcher</code></a> which also contains configuration and operation</dd>
+<dd><code>sb</code> - the <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html?is-external=true" title="class or interface in java.lang"><code>StringBuilder</code></a> to append to</dd>
 <dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code>org.apache.zookeeper.KeeperException</code></dd>
+<dd><code>org.apache.zookeeper.KeeperException</code> - if a ZooKeeper operation fails</dd>
 </dl>
 </li>
 </ul>
@@ -2062,7 +2063,7 @@ public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>appendHFileRefsZnodes</h4>
-<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.1774">appendHFileRefsZnodes</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
+<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.1803">appendHFileRefsZnodes</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                                           <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;hfileRefsZnode,
                                           <a href="http://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)
                                    throws org.apache.zookeeper.KeeperException</pre>
@@ -2078,12 +2079,12 @@ public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>getReplicationZnodesDump</h4>
-<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.1796">getReplicationZnodesDump</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw)
+<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.1825">getReplicationZnodesDump</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw)
                                        throws org.apache.zookeeper.KeeperException</pre>
 <div class="block">Returns a string with replication znodes and position of the replication log</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>zkw</code> - </dd>
+<dd><code>zkw</code> - reference to the <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper"><code>ZKWatcher</code></a> which also contains configuration and operation</dd>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>aq string of replication znodes and log positions</dd>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -2097,7 +2098,7 @@ public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>appendRSZnodes</h4>
-<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.1802">appendRSZnodes</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
+<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.1831">appendRSZnodes</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                                    <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;znode,
                                    <a href="http://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)
                             throws org.apache.zookeeper.KeeperException</pre>
@@ -2113,7 +2114,7 @@ public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>appendPeersZnodes</h4>
-<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.1833">appendPeersZnodes</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
+<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.1862">appendPeersZnodes</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                                       <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peersZnode,
                                       <a href="http://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)
                                throws org.apache.zookeeper.KeeperException</pre>
@@ -2129,7 +2130,7 @@ public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>appendPeerState</h4>
-<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.1861">appendPeerState</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
+<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.1890">appendPeerState</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                                     <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;znodeToProcess,
                                     <a href="http://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)
                              throws org.apache.zookeeper.KeeperException,
@@ -2147,7 +2148,7 @@ public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>getServerStats</h4>
-<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.1894">getServerStats</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;server,
+<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.1926">getServerStats</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;server,
                                       int&nbsp;timeout)
                                throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Gets the statistics from the given server.</div>
@@ -2168,7 +2169,7 @@ public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>logRetrievedMsg</h4>
-<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.1930">logRetrievedMsg</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
+<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.1962">logRetrievedMsg</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                                     <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;znode,
                                     byte[]&nbsp;data,
                                     boolean&nbsp;watcherSet)</pre>
@@ -2180,7 +2181,7 @@ public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>getServerNameOrEmptyString</h4>
-<pre>private static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.1944">getServerNameOrEmptyString</a>(byte[]&nbsp;data)</pre>
+<pre>private static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.1979">getServerNameOrEmptyString</a>(byte[]&nbsp;data)</pre>
 </li>
 </ul>
 <a name="waitForBaseZNode-org.apache.hadoop.conf.Configuration-">
@@ -2189,7 +2190,7 @@ public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>waitForBaseZNode</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.1956">waitForBaseZNode</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.1991">waitForBaseZNode</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)
                              throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Waits for HBase installation's base (parent) znode to become available.</div>
 <dl>
@@ -2204,7 +2205,7 @@ public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>convert</h4>
-<pre>public static&nbsp;org.apache.zookeeper.KeeperException&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.2000">convert</a>(<a href="../../../../../org/apache/hadoop/hbase/exceptions/DeserializationException.html" title="class in org.apache.hadoop.hbase.exceptions">DeserializationException</a>&nbsp;e)</pre>
+<pre>public static&nbsp;org.apache.zookeeper.KeeperException&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.2035">convert</a>(<a href="../../../../../org/apache/hadoop/hbase/exceptions/DeserializationException.html" title="class in org.apache.hadoop.hbase.exceptions">DeserializationException</a>&nbsp;e)</pre>
 <div class="block">Convert a <a href="../../../../../org/apache/hadoop/hbase/exceptions/DeserializationException.html" title="class in org.apache.hadoop.hbase.exceptions"><code>DeserializationException</code></a> to a more palatable <code>KeeperException</code>.
  Used when can't let a <a href="../../../../../org/apache/hadoop/hbase/exceptions/DeserializationException.html" title="class in org.apache.hadoop.hbase.exceptions"><code>DeserializationException</code></a> out w/o changing public API.</div>
 <dl>
@@ -2221,7 +2222,7 @@ public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>logZKTree</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.2010">logZKTree</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.2045">logZKTree</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                              <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;root)</pre>
 <div class="block">Recur

<TRUNCATED>

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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/checkstyle-aggregate.html
----------------------------------------------------------------------
diff --git a/checkstyle-aggregate.html b/checkstyle-aggregate.html
index 5fa911e..5e523f33 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="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <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" />
@@ -289,7 +289,7 @@
 <td>3453</td>
 <td>0</td>
 <td>0</td>
-<td>19823</td></tr></table></div>
+<td>19574</td></tr></table></div>
 <div class="section">
 <h2><a name="Files"></a>Files</h2>
 <table border="0" class="table table-striped">
@@ -2434,8335 +2434,8325 @@
 <td>0</td>
 <td>2</td></tr>
 <tr class="a">
-<td><a href="#org.apache.hadoop.hbase.client.TestShellNoCluster.java">org/apache/hadoop/hbase/client/TestShellNoCluster.java</a></td>
-<td>0</td>
-<td>0</td>
-<td>1</td></tr>
-<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.client.TestShortCircuitConnection.java">org/apache/hadoop/hbase/client/TestShortCircuitConnection.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.client.TestSizeFailures.java">org/apache/hadoop/hbase/client/TestSizeFailures.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.client.TestSmallReversedScanner.java">org/apache/hadoop/hbase/client/TestSmallReversedScanner.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.client.TestSnapshotCloneIndependence.java">org/apache/hadoop/hbase/client/TestSnapshotCloneIndependence.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.client.TestSnapshotFromAdmin.java">org/apache/hadoop/hbase/client/TestSnapshotFromAdmin.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.client.TestSnapshotFromClient.java">org/apache/hadoop/hbase/client/TestSnapshotFromClient.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>13</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.client.TestSnapshotMetadata.java">org/apache/hadoop/hbase/client/TestSnapshotMetadata.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.client.TestSnapshotWithAcl.java">org/apache/hadoop/hbase/client/TestSnapshotWithAcl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.client.TestSplitOrMergeStatus.java">org/apache/hadoop/hbase/client/TestSplitOrMergeStatus.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.client.TestTableDescriptorBuilder.java">org/apache/hadoop/hbase/client/TestTableDescriptorBuilder.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>11</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.client.TestTableFavoredNodes.java">org/apache/hadoop/hbase/client/TestTableFavoredNodes.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.client.TestTableSnapshotScanner.java">org/apache/hadoop/hbase/client/TestTableSnapshotScanner.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.client.TestTimestampsFilter.java">org/apache/hadoop/hbase/client/TestTimestampsFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>18</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.client.TestUpdateConfiguration.java">org/apache/hadoop/hbase/client/TestUpdateConfiguration.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.client.VersionInfoUtil.java">org/apache/hadoop/hbase/client/VersionInfoUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.client.backoff.ClientBackoffPolicyFactory.java">org/apache/hadoop/hbase/client/backoff/ClientBackoffPolicyFactory.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.client.backoff.ServerStatistics.java">org/apache/hadoop/hbase/client/backoff/ServerStatistics.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.client.coprocessor.AggregationClient.java">org/apache/hadoop/hbase/client/coprocessor/AggregationClient.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>94</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.client.coprocessor.AggregationHelper.java">org/apache/hadoop/hbase/client/coprocessor/AggregationHelper.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.client.coprocessor.AsyncAggregationClient.java">org/apache/hadoop/hbase/client/coprocessor/AsyncAggregationClient.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>11</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.client.coprocessor.BigDecimalColumnInterpreter.java">org/apache/hadoop/hbase/client/coprocessor/BigDecimalColumnInterpreter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.client.coprocessor.DoubleColumnInterpreter.java">org/apache/hadoop/hbase/client/coprocessor/DoubleColumnInterpreter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.client.coprocessor.LongColumnInterpreter.java">org/apache/hadoop/hbase/client/coprocessor/LongColumnInterpreter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.client.coprocessor.RowProcessorClient.java">org/apache/hadoop/hbase/client/coprocessor/RowProcessorClient.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.client.coprocessor.package-info.java">org/apache/hadoop/hbase/client/coprocessor/package-info.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.client.example.BufferedMutatorExample.java">org/apache/hadoop/hbase/client/example/BufferedMutatorExample.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.client.example.ExportEndpointExample.java">org/apache/hadoop/hbase/client/example/ExportEndpointExample.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.client.example.MultiThreadedClientExample.java">org/apache/hadoop/hbase/client/example/MultiThreadedClientExample.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.client.example.RefreshHFilesClient.java">org/apache/hadoop/hbase/client/example/RefreshHFilesClient.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>16</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.client.example.TestHttpProxyExample.java">org/apache/hadoop/hbase/client/example/TestHttpProxyExample.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.client.locking.EntityLock.java">org/apache/hadoop/hbase/client/locking/EntityLock.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.client.locking.TestEntityLocks.java">org/apache/hadoop/hbase/client/locking/TestEntityLocks.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.client.metrics.ScanMetrics.java">org/apache/hadoop/hbase/client/metrics/ScanMetrics.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>12</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.client.metrics.ServerSideScanMetrics.java">org/apache/hadoop/hbase/client/metrics/ServerSideScanMetrics.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>10</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.client.replication.ReplicationAdmin.java">org/apache/hadoop/hbase/client/replication/ReplicationAdmin.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>38</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.client.replication.ReplicationPeerConfigUtil.java">org/apache/hadoop/hbase/client/replication/ReplicationPeerConfigUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.client.replication.TableCFs.java">org/apache/hadoop/hbase/client/replication/TableCFs.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.client.replication.TestReplicationAdmin.java">org/apache/hadoop/hbase/client/replication/TestReplicationAdmin.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.codec.BaseDecoder.java">org/apache/hadoop/hbase/codec/BaseDecoder.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.codec.BaseEncoder.java">org/apache/hadoop/hbase/codec/BaseEncoder.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.codec.CellCodec.java">org/apache/hadoop/hbase/codec/CellCodec.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.codec.CellCodecWithTags.java">org/apache/hadoop/hbase/codec/CellCodecWithTags.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.codec.CodecPerformance.java">org/apache/hadoop/hbase/codec/CodecPerformance.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.codec.MessageCodec.java">org/apache/hadoop/hbase/codec/MessageCodec.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.codec.TestCellCodecWithTags.java">org/apache/hadoop/hbase/codec/TestCellCodecWithTags.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.codec.TestCellMessageCodec.java">org/apache/hadoop/hbase/codec/TestCellMessageCodec.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.codec.TestKeyValueCodecWithTags.java">org/apache/hadoop/hbase/codec/TestKeyValueCodecWithTags.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.conf.ConfigurationManager.java">org/apache/hadoop/hbase/conf/ConfigurationManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.constraint.BaseConstraint.java">org/apache/hadoop/hbase/constraint/BaseConstraint.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.constraint.CheckConfigurationConstraint.java">org/apache/hadoop/hbase/constraint/CheckConfigurationConstraint.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.constraint.Constraint.java">org/apache/hadoop/hbase/constraint/Constraint.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.constraint.ConstraintException.java">org/apache/hadoop/hbase/constraint/ConstraintException.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.constraint.ConstraintProcessor.java">org/apache/hadoop/hbase/constraint/ConstraintProcessor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.constraint.Constraints.java">org/apache/hadoop/hbase/constraint/Constraints.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.constraint.TestConstraint.java">org/apache/hadoop/hbase/constraint/TestConstraint.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>11</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.constraint.TestConstraints.java">org/apache/hadoop/hbase/constraint/TestConstraints.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.constraint.package-info.java">org/apache/hadoop/hbase/constraint/package-info.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>61</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coordination.SplitLogManagerCoordination.java">org/apache/hadoop/hbase/coordination/SplitLogManagerCoordination.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coordination.SplitLogWorkerCoordination.java">org/apache/hadoop/hbase/coordination/SplitLogWorkerCoordination.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coordination.ZKSplitLogManagerCoordination.java">org/apache/hadoop/hbase/coordination/ZKSplitLogManagerCoordination.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coordination.ZkCoordinatedStateManager.java">org/apache/hadoop/hbase/coordination/ZkCoordinatedStateManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coordination.ZkSplitLogWorkerCoordination.java">org/apache/hadoop/hbase/coordination/ZkSplitLogWorkerCoordination.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.AggregateImplementation.java">org/apache/hadoop/hbase/coprocessor/AggregateImplementation.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.BaseEnvironment.java">org/apache/hadoop/hbase/coprocessor/BaseEnvironment.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.BaseRowProcessorEndpoint.java">org/apache/hadoop/hbase/coprocessor/BaseRowProcessorEndpoint.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.BulkLoadObserver.java">org/apache/hadoop/hbase/coprocessor/BulkLoadObserver.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.ColumnAggregationEndpoint.java">org/apache/hadoop/hbase/coprocessor/ColumnAggregationEndpoint.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.ColumnAggregationEndpointNullResponse.java">org/apache/hadoop/hbase/coprocessor/ColumnAggregationEndpointNullResponse.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.ColumnAggregationEndpointWithErrors.java">org/apache/hadoop/hbase/coprocessor/ColumnAggregationEndpointWithErrors.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.ColumnInterpreter.java">org/apache/hadoop/hbase/coprocessor/ColumnInterpreter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>21</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.CoprocessorException.java">org/apache/hadoop/hbase/coprocessor/CoprocessorException.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.CoprocessorHost.java">org/apache/hadoop/hbase/coprocessor/CoprocessorHost.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>16</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.CoprocessorService.java">org/apache/hadoop/hbase/coprocessor/CoprocessorService.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.CoprocessorServiceBackwardCompatiblity.java">org/apache/hadoop/hbase/coprocessor/CoprocessorServiceBackwardCompatiblity.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.CoreCoprocessor.java">org/apache/hadoop/hbase/coprocessor/CoreCoprocessor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.EndpointObserver.java">org/apache/hadoop/hbase/coprocessor/EndpointObserver.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.Export.java">org/apache/hadoop/hbase/coprocessor/Export.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>17</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.HasMasterServices.java">org/apache/hadoop/hbase/coprocessor/HasMasterServices.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.HasRegionServerServices.java">org/apache/hadoop/hbase/coprocessor/HasRegionServerServices.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.MasterCoprocessor.java">org/apache/hadoop/hbase/coprocessor/MasterCoprocessor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.MasterObserver.java">org/apache/hadoop/hbase/coprocessor/MasterObserver.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>20</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.MetricsCoprocessor.java">org/apache/hadoop/hbase/coprocessor/MetricsCoprocessor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.MultiRowMutationEndpoint.java">org/apache/hadoop/hbase/coprocessor/MultiRowMutationEndpoint.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.ObserverContext.java">org/apache/hadoop/hbase/coprocessor/ObserverContext.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.ObserverContextImpl.java">org/apache/hadoop/hbase/coprocessor/ObserverContextImpl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.ProtobufCoprocessorService.java">org/apache/hadoop/hbase/coprocessor/ProtobufCoprocessorService.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.RegionCoprocessor.java">org/apache/hadoop/hbase/coprocessor/RegionCoprocessor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment.java">org/apache/hadoop/hbase/coprocessor/RegionCoprocessorEnvironment.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.RegionObserver.java">org/apache/hadoop/hbase/coprocessor/RegionObserver.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>22</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.RegionServerCoprocessor.java">org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.RegionServerObserver.java">org/apache/hadoop/hbase/coprocessor/RegionServerObserver.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.SimpleRegionObserver.java">org/apache/hadoop/hbase/coprocessor/SimpleRegionObserver.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.SingletonCoprocessorService.java">org/apache/hadoop/hbase/coprocessor/SingletonCoprocessorService.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestAsyncCoprocessorEndpoint.java">org/apache/hadoop/hbase/coprocessor/TestAsyncCoprocessorEndpoint.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestBatchCoprocessorEndpoint.java">org/apache/hadoop/hbase/coprocessor/TestBatchCoprocessorEndpoint.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestClassLoading.java">org/apache/hadoop/hbase/coprocessor/TestClassLoading.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>12</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestCoprocessorConfiguration.java">org/apache/hadoop/hbase/coprocessor/TestCoprocessorConfiguration.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestCoprocessorEndpoint.java">org/apache/hadoop/hbase/coprocessor/TestCoprocessorEndpoint.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestCoprocessorHost.java">org/apache/hadoop/hbase/coprocessor/TestCoprocessorHost.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestCoprocessorInterface.java">org/apache/hadoop/hbase/coprocessor/TestCoprocessorInterface.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestCoprocessorMetrics.java">org/apache/hadoop/hbase/coprocessor/TestCoprocessorMetrics.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestCoprocessorServiceBackwardCompatibility.java">org/apache/hadoop/hbase/coprocessor/TestCoprocessorServiceBackwardCompatibility.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestCoprocessorShortCircuitRPC.java">org/apache/hadoop/hbase/coprocessor/TestCoprocessorShortCircuitRPC.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestCoprocessorStop.java">org/apache/hadoop/hbase/coprocessor/TestCoprocessorStop.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestCoprocessorTableEndpoint.java">org/apache/hadoop/hbase/coprocessor/TestCoprocessorTableEndpoint.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestCoreMasterCoprocessor.java">org/apache/hadoop/hbase/coprocessor/TestCoreMasterCoprocessor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestCoreRegionCoprocessor.java">org/apache/hadoop/hbase/coprocessor/TestCoreRegionCoprocessor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestCoreRegionServerCoprocessor.java">org/apache/hadoop/hbase/coprocessor/TestCoreRegionServerCoprocessor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestMasterCoprocessorExceptionWithAbort.java">org/apache/hadoop/hbase/coprocessor/TestMasterCoprocessorExceptionWithAbort.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>10</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestMasterCoprocessorExceptionWithRemove.java">org/apache/hadoop/hbase/coprocessor/TestMasterCoprocessorExceptionWithRemove.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestMasterObserver.java">org/apache/hadoop/hbase/coprocessor/TestMasterObserver.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestNegativeMemStoreSizeWithSlowCoprocessor.java">org/apache/hadoop/hbase/coprocessor/TestNegativeMemStoreSizeWithSlowCoprocessor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestOpenTableInCoprocessor.java">org/apache/hadoop/hbase/coprocessor/TestOpenTableInCoprocessor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestRegionObserverBypass.java">org/apache/hadoop/hbase/coprocessor/TestRegionObserverBypass.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestRegionObserverForAddingMutationsFromCoprocessors.java">org/apache/hadoop/hbase/coprocessor/TestRegionObserverForAddingMutationsFromCoprocessors.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestRegionObserverInterface.java">org/apache/hadoop/hbase/coprocessor/TestRegionObserverInterface.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>27</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestRegionObserverPreFlushAndPreCompact.java">org/apache/hadoop/hbase/coprocessor/TestRegionObserverPreFlushAndPreCompact.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestRegionObserverScannerOpenHook.java">org/apache/hadoop/hbase/coprocessor/TestRegionObserverScannerOpenHook.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestRegionObserverStacking.java">org/apache/hadoop/hbase/coprocessor/TestRegionObserverStacking.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestRegionServerCoprocessorEndpoint.java">org/apache/hadoop/hbase/coprocessor/TestRegionServerCoprocessorEndpoint.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestRegionServerCoprocessorExceptionWithAbort.java">org/apache/hadoop/hbase/coprocessor/TestRegionServerCoprocessorExceptionWithAbort.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestRegionServerCoprocessorExceptionWithRemove.java">org/apache/hadoop/hbase/coprocessor/TestRegionServerCoprocessorExceptionWithRemove.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestRowProcessorEndpoint.java">org/apache/hadoop/hbase/coprocessor/TestRowProcessorEndpoint.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestSecureExport.java">org/apache/hadoop/hbase/coprocessor/TestSecureExport.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>20</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestWALObserver.java">org/apache/hadoop/hbase/coprocessor/TestWALObserver.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.WALCoprocessor.java">org/apache/hadoop/hbase/coprocessor/WALCoprocessor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.WALCoprocessorEnvironment.java">org/apache/hadoop/hbase/coprocessor/WALCoprocessorEnvironment.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.WALObserver.java">org/apache/hadoop/hbase/coprocessor/WALObserver.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.example.BulkDeleteEndpoint.java">org/apache/hadoop/hbase/coprocessor/example/BulkDeleteEndpoint.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.example.ExampleMasterObserverWithMetrics.java">org/apache/hadoop/hbase/coprocessor/example/ExampleMasterObserverWithMetrics.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.example.RefreshHFilesEndpoint.java">org/apache/hadoop/hbase/coprocessor/example/RefreshHFilesEndpoint.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.example.RowCountEndpoint.java">org/apache/hadoop/hbase/coprocessor/example/RowCountEndpoint.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.example.TestRefreshHFilesEndpoint.java">org/apache/hadoop/hbase/coprocessor/example/TestRefreshHFilesEndpoint.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.package-info.java">org/apache/hadoop/hbase/coprocessor/package-info.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.errorhandling.ForeignException.java">org/apache/hadoop/hbase/errorhandling/ForeignException.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.errorhandling.ForeignExceptionDispatcher.java">org/apache/hadoop/hbase/errorhandling/ForeignExceptionDispatcher.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.errorhandling.TestForeignExceptionDispatcher.java">org/apache/hadoop/hbase/errorhandling/TestForeignExceptionDispatcher.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.errorhandling.TestForeignExceptionSerialization.java">org/apache/hadoop/hbase/errorhandling/TestForeignExceptionSerialization.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.errorhandling.TimeoutExceptionInjector.java">org/apache/hadoop/hbase/errorhandling/TimeoutExceptionInjector.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.exceptions.ClientExceptionsUtil.java">org/apache/hadoop/hbase/exceptions/ClientExceptionsUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.exceptions.FailedSanityCheckException.java">org/apache/hadoop/hbase/exceptions/FailedSanityCheckException.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.exceptions.MergeRegionException.java">org/apache/hadoop/hbase/exceptions/MergeRegionException.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.exceptions.TestClientExceptionsUtil.java">org/apache/hadoop/hbase/exceptions/TestClientExceptionsUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.executor.EventHandler.java">org/apache/hadoop/hbase/executor/EventHandler.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.executor.EventType.java">org/apache/hadoop/hbase/executor/EventType.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>38</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.executor.ExecutorService.java">org/apache/hadoop/hbase/executor/ExecutorService.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.executor.ExecutorType.java">org/apache/hadoop/hbase/executor/ExecutorType.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>18</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.executor.TestExecutorService.java">org/apache/hadoop/hbase/executor/TestExecutorService.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.favored.FavoredNodeAssignmentHelper.java">org/apache/hadoop/hbase/favored/FavoredNodeAssignmentHelper.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>27</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.favored.FavoredNodeLoadBalancer.java">org/apache/hadoop/hbase/favored/FavoredNodeLoadBalancer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.favored.FavoredNodesPlan.java">org/apache/hadoop/hbase/favored/FavoredNodesPlan.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.favored.FavoredNodesPromoter.java">org/apache/hadoop/hbase/favored/FavoredNodesPromoter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.favored.StartcodeAgnosticServerName.java">org/apache/hadoop/hbase/favored/StartcodeAgnosticServerName.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.favored.TestFavoredNodeAssignmentHelper.java">org/apache/hadoop/hbase/favored/TestFavoredNodeAssignmentHelper.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.BigDecimalComparator.java">org/apache/hadoop/hbase/filter/BigDecimalComparator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.BinaryComparator.java">org/apache/hadoop/hbase/filter/BinaryComparator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.BinaryPrefixComparator.java">org/apache/hadoop/hbase/filter/BinaryPrefixComparator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.BitComparator.java">org/apache/hadoop/hbase/filter/BitComparator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>9</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.ByteArrayComparable.java">org/apache/hadoop/hbase/filter/ByteArrayComparable.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.ColumnCountGetFilter.java">org/apache/hadoop/hbase/filter/ColumnCountGetFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.ColumnPaginationFilter.java">org/apache/hadoop/hbase/filter/ColumnPaginationFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>12</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.ColumnPrefixFilter.java">org/apache/hadoop/hbase/filter/ColumnPrefixFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>11</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.ColumnRangeFilter.java">org/apache/hadoop/hbase/filter/ColumnRangeFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>21</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.CompareFilter.java">org/apache/hadoop/hbase/filter/CompareFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>25</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.DependentColumnFilter.java">org/apache/hadoop/hbase/filter/DependentColumnFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>12</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.FamilyFilter.java">org/apache/hadoop/hbase/filter/FamilyFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>11</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.Filter.java">org/apache/hadoop/hbase/filter/Filter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.FilterAllFilter.java">org/apache/hadoop/hbase/filter/FilterAllFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.FilterBase.java">org/apache/hadoop/hbase/filter/FilterBase.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.FilterList.java">org/apache/hadoop/hbase/filter/FilterList.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.FilterListBase.java">org/apache/hadoop/hbase/filter/FilterListBase.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.FilterListWithAND.java">org/apache/hadoop/hbase/filter/FilterListWithAND.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>12</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.FilterListWithOR.java">org/apache/hadoop/hbase/filter/FilterListWithOR.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>100</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.FilterTestingCluster.java">org/apache/hadoop/hbase/filter/FilterTestingCluster.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.FilterWrapper.java">org/apache/hadoop/hbase/filter/FilterWrapper.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>11</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.FirstKeyOnlyFilter.java">org/apache/hadoop/hbase/filter/FirstKeyOnlyFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.FirstKeyValueMatchingQualifiersFilter.java">org/apache/hadoop/hbase/filter/FirstKeyValueMatchingQualifiersFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>9</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.FuzzyRowFilter.java">org/apache/hadoop/hbase/filter/FuzzyRowFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>20</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.InclusiveStopFilter.java">org/apache/hadoop/hbase/filter/InclusiveStopFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>12</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.KeyOnlyFilter.java">org/apache/hadoop/hbase/filter/KeyOnlyFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>9</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.LongComparator.java">org/apache/hadoop/hbase/filter/LongComparator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>25</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.MultiRowRangeFilter.java">org/apache/hadoop/hbase/filter/MultiRowRangeFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>10</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.MultipleColumnPrefixFilter.java">org/apache/hadoop/hbase/filter/MultipleColumnPrefixFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>14</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.NullComparator.java">org/apache/hadoop/hbase/filter/NullComparator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.PageFilter.java">org/apache/hadoop/hbase/filter/PageFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.ParseConstants.java">org/apache/hadoop/hbase/filter/ParseConstants.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.ParseFilter.java">org/apache/hadoop/hbase/filter/ParseFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>48</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.PrefixFilter.java">org/apache/hadoop/hbase/filter/PrefixFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>12</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.QualifierFilter.java">org/apache/hadoop/hbase/filter/QualifierFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.RandomRowFilter.java">org/apache/hadoop/hbase/filter/RandomRowFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>9</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.RegexStringComparator.java">org/apache/hadoop/hbase/filter/RegexStringComparator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>13</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.RowFilter.java">org/apache/hadoop/hbase/filter/RowFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.SingleColumnValueExcludeFilter.java">org/apache/hadoop/hbase/filter/SingleColumnValueExcludeFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>22</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.SingleColumnValueFilter.java">org/apache/hadoop/hbase/filter/SingleColumnValueFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>22</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.SkipFilter.java">org/apache/hadoop/hbase/filter/SkipFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.SubstringComparator.java">org/apache/hadoop/hbase/filter/SubstringComparator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.TestBitComparator.java">org/apache/hadoop/hbase/filter/TestBitComparator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.TestColumnPaginationFilter.java">org/apache/hadoop/hbase/filter/TestColumnPaginationFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>41</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.TestColumnPrefixFilter.java">org/apache/hadoop/hbase/filter/TestColumnPrefixFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.TestColumnRangeFilter.java">org/apache/hadoop/hbase/filter/TestColumnRangeFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>9</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.TestComparatorSerialization.java">org/apache/hadoop/hbase/filter/TestComparatorSerialization.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.TestComparators.java">org/apache/hadoop/hbase/filter/TestComparators.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.TestDependentColumnFilter.java">org/apache/hadoop/hbase/filter/TestDependentColumnFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>15</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.TestFilter.java">org/apache/hadoop/hbase/filter/TestFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>349</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.TestFilterFromRegionSide.java">org/apache/hadoop/hbase/filter/TestFilterFromRegionSide.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.TestFilterList.java">org/apache/hadoop/hbase/filter/TestFilterList.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>19</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.TestFilterListOnMini.java">org/apache/hadoop/hbase/filter/TestFilterListOnMini.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.TestFilterListOrOperatorWithBlkCnt.java">org/apache/hadoop/hbase/filter/TestFilterListOrOperatorWithBlkCnt.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.TestFilterSerialization.java">org/apache/hadoop/hbase/filter/TestFilterSerialization.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.TestFilterWithScanLimits.java">org/apache/hadoop/hbase/filter/TestFilterWithScanLimits.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.TestFilterWrapper.java">org/apache/hadoop/hbase/filter/TestFilterWrapper.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.TestFirstKeyValueMatchingQualifiersFilter.java">org/apache/hadoop/hbase/filter/TestFirstKeyValueMatchingQualifiersFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.TestFuzzyRowAndColumnRangeFilter.java">org/apache/hadoop/hbase/filter/TestFuzzyRowAndColumnRangeFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.TestFuzzyRowFilterEndToEnd.java">org/apache/hadoop/hbase/filter/TestFuzzyRowFilterEndToEnd.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>22</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.TestInclusiveStopFilter.java">org/apache/hadoop/hbase/filter/TestInclusiveStopFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.TestKeyOnlyFilter.java">org/apache/hadoop/hbase/filter/TestKeyOnlyFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.TestLongComparator.java">org/apache/hadoop/hbase/filter/TestLongComparator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.TestMultiRowRangeFilter.java">org/apache/hadoop/hbase/filter/TestMultiRowRangeFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.TestMultipleColumnPrefixFilter.java">org/apache/hadoop/hbase/filter/TestMultipleColumnPrefixFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>10</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.TestNullComparator.java">org/apache/hadoop/hbase/filter/TestNullComparator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.TestPageFilter.java">org/apache/hadoop/hbase/filter/TestPageFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.TestParseFilter.java">org/apache/hadoop/hbase/filter/TestParseFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.TestPrefixFilter.java">org/apache/hadoop/hbase/filter/TestPrefixFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.TestRandomRowFilter.java">org/apache/hadoop/hbase/filter/TestRandomRowFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.TestRegexComparator.java">org/apache/hadoop/hbase/filter/TestRegexComparator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.TestScanRowPrefix.java">org/apache/hadoop/hbase/filter/TestScanRowPrefix.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.TestSingleColumnValueExcludeFilter.java">org/apache/hadoop/hbase/filter/TestSingleColumnValueExcludeFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>9</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.TestSingleColumnValueFilter.java">org/apache/hadoop/hbase/filter/TestSingleColumnValueFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.TimestampsFilter.java">org/apache/hadoop/hbase/filter/TimestampsFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.ValueFilter.java">org/apache/hadoop/hbase/filter/ValueFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>9</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.WhileMatchFilter.java">org/apache/hadoop/hbase/filter/WhileMatchFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.fs.HFileSystem.java">org/apache/hadoop/hbase/fs/HFileSystem.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>32</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.fs.TestBlockReorder.java">org/apache/hadoop/hbase/fs/TestBlockReorder.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.http.ClickjackingPreventionFilter.java">org/apache/hadoop/hbase/http/ClickjackingPreventionFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>13</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.http.HtmlQuoting.java">org/apache/hadoop/hbase/http/HtmlQuoting.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>17</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.http.HttpConfig.java">org/apache/hadoop/hbase/http/HttpConfig.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.http.HttpRequestLog.java">org/apache/hadoop/hbase/http/HttpRequestLog.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.http.HttpRequestLogAppender.java">org/apache/hadoop/hbase/http/HttpRequestLogAppender.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.http.HttpServer.java">org/apache/hadoop/hbase/http/HttpServer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>47</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.http.HttpServerFunctionalTest.java">org/apache/hadoop/hbase/http/HttpServerFunctionalTest.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.http.HttpServerUtil.java">org/apache/hadoop/hbase/http/HttpServerUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.http.InfoServer.java">org/apache/hadoop/hbase/http/InfoServer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>11</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.http.NoCacheFilter.java">org/apache/hadoop/hbase/http/NoCacheFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.http.ServerConfigurationKeys.java">org/apache/hadoop/hbase/http/ServerConfigurationKeys.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.http.TestGlobalFilter.java">org/apache/hadoop/hbase/http/TestGlobalFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.http.TestHtmlQuoting.java">org/apache/hadoop/hbase/http/TestHtmlQuoting.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.http.TestHttpRequestLog.java">org/apache/hadoop/hbase/http/TestHttpRequestLog.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.http.TestHttpRequestLogAppender.java">org/apache/hadoop/hbase/http/TestHttpRequestLogAppender.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.http.TestHttpServer.java">org/apache/hadoop/hbase/http/TestHttpServer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>10</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.http.TestHttpServerWebapps.java">org/apache/hadoop/hbase/http/TestHttpServerWebapps.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.http.TestPathFilter.java">org/apache/hadoop/hbase/http/TestPathFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.http.TestSSLHttpServer.java">org/apache/hadoop/hbase/http/TestSSLHttpServer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.http.TestServletFilter.java">org/apache/hadoop/hbase/http/TestServletFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.http.TestSpnegoHttpServer.java">org/apache/hadoop/hbase/http/TestSpnegoHttpServer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>22</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.http.conf.ConfServlet.java">org/apache/hadoop/hbase/http/conf/ConfServlet.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.http.jmx.JMXJsonServlet.java">org/apache/hadoop/hbase/http/jmx/JMXJsonServlet.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.http.jmx.TestJMXJsonServlet.java">org/apache/hadoop/hbase/http/jmx/TestJMXJsonServlet.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.http.lib.StaticUserWebFilter.java">org/apache/hadoop/hbase/http/lib/StaticUserWebFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.http.lib.TestStaticUserWebFilter.java">org/apache/hadoop/hbase/http/lib/TestStaticUserWebFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.http.log.LogLevel.java">org/apache/hadoop/hbase/http/log/LogLevel.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.http.log.TestLogLevel.java">org/apache/hadoop/hbase/http/log/TestLogLevel.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>10</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.http.resource.JerseyResource.java">org/apache/hadoop/hbase/http/resource/JerseyResource.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.http.ssl.KeyStoreTestUtil.java">org/apache/hadoop/hbase/http/ssl/KeyStoreTestUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.ByteBuffInputStream.java">org/apache/hadoop/hbase/io/ByteBuffInputStream.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.ByteBufferOutputStream.java">org/apache/hadoop/hbase/io/ByteBufferOutputStream.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.ByteBufferWriterOutputStream.java">org/apache/hadoop/hbase/io/ByteBufferWriterOutputStream.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.CellOutputStream.java">org/apache/hadoop/hbase/io/CellOutputStream.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.FSDataInputStreamWrapper.java">org/apache/hadoop/hbase/io/FSDataInputStreamWrapper.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.FileLink.java">org/apache/hadoop/hbase/io/FileLink.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>14</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.HFileLink.java">org/apache/hadoop/hbase/io/HFileLink.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.HalfStoreFileReader.java">org/apache/hadoop/hbase/io/HalfStoreFileReader.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>15</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.HeapSize.java">org/apache/hadoop/hbase/io/HeapSize.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.ImmutableBytesWritable.java">org/apache/hadoop/hbase/io/ImmutableBytesWritable.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.Reference.java">org/apache/hadoop/hbase/io/Reference.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>18</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.TagCompressionContext.java">org/apache/hadoop/hbase/io/TagCompressionContext.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.TestByteBufferOutputStream.java">org/apache/hadoop/hbase/io/TestByteBufferOutputStream.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.TestFileLink.java">org/apache/hadoop/hbase/io/TestFileLink.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.TestHFileLink.java">org/apache/hadoop/hbase/io/TestHFileLink.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>9</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.TestHalfStoreFileReader.java">org/apache/hadoop/hbase/io/TestHalfStoreFileReader.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.TestHeapSize.java">org/apache/hadoop/hbase/io/TestHeapSize.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.TestImmutableBytesWritable.java">org/apache/hadoop/hbase/io/TestImmutableBytesWritable.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.TestMetricsIO.java">org/apache/hadoop/hbase/io/TestMetricsIO.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.TimeRange.java">org/apache/hadoop/hbase/io/TimeRange.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.WALLink.java">org/apache/hadoop/hbase/io/WALLink.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.asyncfs.AsyncFSOutput.java">org/apache/hadoop/hbase/io/asyncfs/AsyncFSOutput.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.asyncfs.FanOutOneBlockAsyncDFSOutputHelper.java">org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputHelper.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.asyncfs.FanOutOneBlockAsyncDFSOutputSaslHelper.java">org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.compress.Compression.java">org/apache/hadoop/hbase/io/compress/Compression.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>9</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.crypto.Cipher.java">org/apache/hadoop/hbase/io/crypto/Cipher.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.crypto.Decryptor.java">org/apache/hadoop/hbase/io/crypto/Decryptor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.crypto.Encryption.java">org/apache/hadoop/hbase/io/crypto/Encryption.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>53</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.crypto.Encryptor.java">org/apache/hadoop/hbase/io/crypto/Encryptor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.crypto.KeyProvider.java">org/apache/hadoop/hbase/io/crypto/KeyProvider.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.crypto.KeyProviderForTesting.java">org/apache/hadoop/hbase/io/crypto/KeyProviderForTesting.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.crypto.TestEncryption.java">org/apache/hadoop/hbase/io/crypto/TestEncryption.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.crypto.aes.CommonsCryptoAESDecryptor.java">org/apache/hadoop/hbase/io/crypto/aes/CommonsCryptoAESDecryptor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.crypto.aes.CryptoAES.java">org/apache/hadoop/hbase/io/crypto/aes/CryptoAES.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.encoding.BufferedDataBlockEncoder.java">org/apache/hadoop/hbase/io/encoding/BufferedDataBlockEncoder.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.encoding.CopyKeyDataBlockEncoder.java">org/apache/hadoop/hbase/io/encoding/CopyKeyDataBlockEncoder.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.encoding.DataBlockEncoder.java">org/apache/hadoop/hbase/io/encoding/DataBlockEncoder.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>15</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.encoding.DataBlockEncoding.java">org/apache/hadoop/hbase/io/encoding/DataBlockEncoding.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.encoding.EncodedDataBlock.java">org/apache/hadoop/hbase/io/encoding/EncodedDataBlock.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.encoding.HFileBlockDecodingContext.java">org/apache/hadoop/hbase/io/encoding/HFileBlockDecodingContext.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.encoding.HFileBlockDefaultEncodingContext.java">org/apache/hadoop/hbase/io/encoding/HFileBlockDefaultEncodingContext.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.encoding.HFileBlockEncodingContext.java">org/apache/hadoop/hbase/io/encoding/HFileBlockEncodingContext.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.encoding.RowIndexCodecV1.java">org/apache/hadoop/hbase/io/encoding/RowIndexCodecV1.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.encoding.TestBufferedDataBlockEncoder.java">org/apache/hadoop/hbase/io/encoding/TestBufferedDataBlockEncoder.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.encoding.TestChangingEncoding.java">org/apache/hadoop/hbase/io/encoding/TestChangingEncoding.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.encoding.TestDataBlockEncoders.java">org/apache/hadoop/hbase/io/encoding/TestDataBlockEncoders.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>11</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.encoding.TestEncodedSeekers.java">org/apache/hadoop/hbase/io/encoding/TestEncodedSeekers.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.encoding.TestLoadAndSwitchEncodeOnDisk.java">org/apache/hadoop/hbase/io/encoding/TestLoadAndSwitchEncodeOnDisk.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.encoding.TestSeekToBlockWithEncoders.java">org/apache/hadoop/hbase/io/encoding/TestSeekToBlockWithEncoders.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hadoopbackport.ThrottledInputStream.java">org/apache/hadoop/hbase/io/hadoopbackport/ThrottledInputStream.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.BlockCache.java">org/apache/hadoop/hbase/io/hfile/BlockCache.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.BlockCacheKey.java">org/apache/hadoop/hbase/io/hfile/BlockCacheKey.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.BlockCacheUtil.java">org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>25</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.BlockCachesIterator.java">org/apache/hadoop/hbase/io/hfile/BlockCachesIterator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.BlockType.java">org/apache/hadoop/hbase/io/hfile/BlockType.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.CacheConfig.java">org/apache/hadoop/hbase/io/hfile/CacheConfig.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.CacheStats.java">org/apache/hadoop/hbase/io/hfile/CacheStats.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.CacheTestUtils.java">org/apache/hadoop/hbase/io/hfile/CacheTestUtils.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.Cacheable.java">org/apache/hadoop/hbase/io/hfile/Cacheable.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.CacheableDeserializer.java">org/apache/hadoop/hbase/io/hfile/CacheableDeserializer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.CacheableDeserializerIdManager.java">org/apache/hadoop/hbase/io/hfile/CacheableDeserializerIdManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.ChecksumUtil.java">org/apache/hadoop/hbase/io/hfile/ChecksumUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.CombinedBlockCache.java">org/apache/hadoop/hbase/io/hfile/CombinedBlockCache.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.CompoundBloomFilter.java">org/apache/hadoop/hbase/io/hfile/CompoundBloomFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.CompoundBloomFilterBase.java">org/apache/hadoop/hbase/io/hfile/CompoundBloomFilterBase.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.CompoundBloomFilterWriter.java">org/apache/hadoop/hbase/io/hfile/CompoundBloomFilterWriter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.CorruptHFileException.java">org/apache/hadoop/hbase/io/hfile/CorruptHFileException.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.FixedFileTrailer.java">org/apache/hadoop/hbase/io/hfile/FixedFileTrailer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>16</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.HFile.java">org/apache/hadoop/hbase/io/hfile/HFile.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>38</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.HFileBlock.java">org/apache/hadoop/hbase/io/hfile/HFileBlock.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>46</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.HFileBlockIndex.java">org/apache/hadoop/hbase/io/hfile/HFileBlockIndex.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>39</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.HFileContext.java">org/apache/hadoop/hbase/io/hfile/HFileContext.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.HFileDataBlockEncoder.java">org/apache/hadoop/hbase/io/hfile/HFileDataBlockEncoder.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>13</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.HFileDataBlockEncoderImpl.java">org/apache/hadoop/hbase/io/hfile/HFileDataBlockEncoderImpl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.HFilePrettyPrinter.java">org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>15</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.HFileReaderImpl.java">org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>52</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.HFileScanner.java">org/apache/hadoop/hbase/io/hfile/HFileScanner.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>23</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.HFileUtil.java">org/apache/hadoop/hbase/io/hfile/HFileUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.HFileWriterImpl.java">org/apache/hadoop/hbase/io/hfile/HFileWriterImpl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>25</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.KVGenerator.java">org/apache/hadoop/hbase/io/hfile/KVGenerator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.LruBlockCache.java">org/apache/hadoop/hbase/io/hfile/LruBlockCache.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>14</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.LruCachedBlock.java">org/apache/hadoop/hbase/io/hfile/LruCachedBlock.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.LruCachedBlockQueue.java">org/apache/hadoop/hbase/io/hfile/LruCachedBlockQueue.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.MemcachedBlockCache.java">org/apache/hadoop/hbase/io/hfile/MemcachedBlockCache.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.NanoTimer.java">org/apache/hadoop/hbase/io/hfile/NanoTimer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.NoOpDataBlockEncoder.java">org/apache/hadoop/hbase/io/hfile/NoOpDataBlockEncoder.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.PrefetchExecutor.java">org/apache/hadoop/hbase/io/hfile/PrefetchExecutor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.RandomKeyValueUtil.java">org/apache/hadoop/hbase/io/hfile/RandomKeyValueUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>14</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.TestBlockCacheReporting.java">org/apache/hadoop/hbase/io/hfile/TestBlockCacheReporting.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.TestCacheConfig.java">org/apache/hadoop/hbase/io/hfile/TestCacheConfig.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.TestCacheOnWrite.java">org/apache/hadoop/hbase/io/hfile/TestCacheOnWrite.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.TestCachedBlockQueue.java">org/apache/hadoop/hbase/io/hfile/TestCachedBlockQueue.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>19</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.TestChecksum.java">org/apache/hadoop/hbase/io/hfile/TestChecksum.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.TestFixedFileTrailer.java">org/apache/hadoop/hbase/io/hfile/TestFixedFileTrailer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.TestForceCacheImportantBlocks.java">org/apache/hadoop/hbase/io/hfile/TestForceCacheImportantBlocks.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.TestHFile.java">org/apache/hadoop/hbase/io/hfile/TestHFile.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>28</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.TestHFileBlock.java">org/apache/hadoop/hbase/io/hfile/TestHFileBlock.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>10</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.TestHFileBlockIndex.java">org/apache/hadoop/hbase/io/hfile/TestHFileBlockIndex.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>42</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.TestHFileBlockPositionalRead.java">org/apache/hadoop/hbase/io/hfile/TestHFileBlockPositionalRead.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.TestHFileDataBlockEncoder.java">org/apache/hadoop/hbase/io/hfile/TestHFileDataBlockEncoder.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.TestHFileSeek.java">org/apache/hadoop/hbase/io/hfile/TestHFileSeek.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.TestHFileWriterV3.java">org/apache/hadoop/hbase/io/hfile/TestHFileWriterV3.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.TestLazyDataBlockDecompression.java">org/apache/hadoop/hbase/io/hfile/TestLazyDataBlockDecompression.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.TestLruBlockCache.java">org/apache/hadoop/hbase/io/hfile/TestLruBlockCache.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.TestPrefetch.java">org/apache/hadoop/hbase/io/hfile/TestPrefetch.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.TestReseekTo.java">org/apache/hadoop/hbase/io/hfile/TestReseekTo.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.TestScannerFromBucketCache.java">org/apache/hadoop/hbase/io/hfile/TestScannerFromBucketCache.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>9</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.TestScannerSelectionUsingKeyRange.java">org/apache/hadoop/hbase/io/hfile/TestScannerSelectionUsingKeyRange.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.bucket.BucketAllocator.java">org/apache/hadoop/hbase/io/hfile/bucket/BucketAllocator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>34</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.bucket.BucketCache.java">org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>42</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.bucket.BucketCacheStats.java">org/apache/hadoop/hbase/io/hfile/bucket/BucketCacheStats.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.bucket.ByteBufferIOEngine.java">org/apache/hadoop/hbase/io/hfile/bucket/ByteBufferIOEngine.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.bucket.CachedEntryQueue.java">org/apache/hadoop/hbase/io/hfile/bucket/CachedEntryQueue.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.bucket.FileIOEngine.java">org/apache/hadoop/hbase/io/hfile/bucket/FileIOEngine.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>10</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.bucket.FileMmapEngine.java">org/apache/hadoop/hbase/io/hfile/bucket/FileMmapEngine.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.bucket.IOEngine.java">org/apache/hadoop/hbase/io/hfile/bucket/IOEngine.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.bucket.TestBucketCache.java">org/apache/hadoop/hbase/io/hfile/bucket/TestBucketCache.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>24</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.bucket.TestBucketWriterThread.java">org/apache/hadoop/hbase/io/hfile/bucket/TestBucketWriterThread.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>14</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.bucket.TestFileIOEngine.java">org/apache/hadoop/hbase/io/hfile/bucket/TestFileIOEngine.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.bucket.UniqueIndexMap.java">org/apache/hadoop/hbase/io/hfile/bucket/UniqueIndexMap.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.util.Dictionary.java">org/apache/hadoop/hbase/io/util/Dictionary.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.util.LRUDictionary.java">org/apache/hadoop/hbase/io/util/LRUDictionary.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.util.MemorySizeUtil.java">org/apache/hadoop/hbase/io/util/MemorySizeUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>9</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.util.StreamUtils.java">org/apache/hadoop/hbase/io/util/StreamUtils.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>10</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.AbstractRpcClient.java">org/apache/hadoop/hbase/ipc/AbstractRpcClient.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.AbstractTestIPC.java">org/apache/hadoop/hbase/ipc/AbstractTestIPC.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.AdaptiveLifoCoDelCallQueue.java">org/apache/hadoop/hbase/ipc/AdaptiveLifoCoDelCallQueue.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.BlockingRpcCallback.java">org/apache/hadoop/hbase/ipc/BlockingRpcCallback.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.BlockingRpcClient.java">org/apache/hadoop/hbase/ipc/BlockingRpcClient.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.BlockingRpcConnection.java">org/apache/hadoop/hbase/ipc/BlockingRpcConnection.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.BufferCallBeforeInitHandler.java">org/apache/hadoop/hbase/ipc/BufferCallBeforeInitHandler.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.BufferChain.java">org/apache/hadoop/hbase/ipc/BufferChain.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.Call.java">org/apache/hadoop/hbase/ipc/Call.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.CallQueueInfo.java">org/apache/hadoop/hbase/ipc/CallQueueInfo.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.CallRunner.java">org/apache/hadoop/hbase/ipc/CallRunner.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.CellBlockBuilder.java">org/apache/hadoop/hbase/ipc/CellBlockBuilder.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.CoprocessorRpcUtils.java">org/apache/hadoop/hbase/ipc/CoprocessorRpcUtils.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.DefaultNettyEventLoopConfig.java">org/apache/hadoop/hbase/ipc/DefaultNettyEventLoopConfig.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.DelegatingHBaseRpcController.java">org/apache/hadoop/hbase/ipc/DelegatingHBaseRpcController.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.FailedServers.java">org/apache/hadoop/hbase/ipc/FailedServers.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.FifoRpcScheduler.java">org/apache/hadoop/hbase/ipc/FifoRpcScheduler.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.HBaseRpcController.java">org/apache/hadoop/hbase/ipc/HBaseRpcController.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.HBaseRpcControllerImpl.java">org/apache/hadoop/hbase/ipc/HBaseRpcControllerImpl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.IPCUtil.java">org/apache/hadoop/hbase/ipc/IPCUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.IntegrationTestRpcClient.java">org/apache/hadoop/hbase/ipc/IntegrationTestRpcClient.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.MetricsHBaseServer.java">org/apache/hadoop/hbase/ipc/MetricsHBaseServer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.MetricsHBaseServerSourceImpl.java">org/apache/hadoop/hbase/ipc/MetricsHBaseServerSourceImpl.java</a></td>
 <td>0</td>
 <td>0</td>

<TRUNCATED>

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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.NodeAndData.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.NodeAndData.html b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.NodeAndData.html
index 81f531b..04be024 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.NodeAndData.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.NodeAndData.html
@@ -53,2036 +53,2078 @@
 <span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.AuthUtil;<a name="line.45"></a>
 <span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.46"></a>
 <span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.HConstants;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.security.Superusers;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.shaded.com.google.protobuf.InvalidProtocolBufferException;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil.ZKUtilOp.CreateAndFailSilent;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil.ZKUtilOp.DeleteNodeFailSilent;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil.ZKUtilOp.SetData;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.security.SecurityUtil;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.security.UserGroupInformation;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.security.authentication.util.KerberosUtil;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.zookeeper.AsyncCallback;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.zookeeper.CreateMode;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.zookeeper.KeeperException;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.zookeeper.KeeperException.NoNodeException;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.zookeeper.Op;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.zookeeper.Watcher;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.zookeeper.ZooDefs.Ids;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.zookeeper.ZooDefs.Perms;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.zookeeper.ZooKeeper;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.zookeeper.client.ZooKeeperSaslClient;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.zookeeper.data.ACL;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.zookeeper.data.Id;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.zookeeper.data.Stat;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.zookeeper.proto.CreateRequest;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.zookeeper.proto.DeleteRequest;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.zookeeper.proto.SetDataRequest;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.zookeeper.server.ZooKeeperSaslServer;<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> * Internal HBase utility class for ZooKeeper.<a name="line.81"></a>
-<span class="sourceLineNo">082</span> *<a name="line.82"></a>
-<span class="sourceLineNo">083</span> * &lt;p&gt;Contains only static methods and constants.<a name="line.83"></a>
-<span class="sourceLineNo">084</span> *<a name="line.84"></a>
-<span class="sourceLineNo">085</span> * &lt;p&gt;Methods all throw {@link KeeperException} if there is an unexpected<a name="line.85"></a>
-<span class="sourceLineNo">086</span> * zookeeper exception, so callers of these methods must handle appropriately.<a name="line.86"></a>
-<span class="sourceLineNo">087</span> * If ZK is required for the operation, the server will need to be aborted.<a name="line.87"></a>
-<span class="sourceLineNo">088</span> */<a name="line.88"></a>
-<span class="sourceLineNo">089</span>@InterfaceAudience.Private<a name="line.89"></a>
-<span class="sourceLineNo">090</span>public class ZKUtil {<a name="line.90"></a>
-<span class="sourceLineNo">091</span>  private static final Log LOG = LogFactory.getLog(ZKUtil.class);<a name="line.91"></a>
-<span class="sourceLineNo">092</span><a name="line.92"></a>
-<span class="sourceLineNo">093</span>  private static int zkDumpConnectionTimeOut;<a name="line.93"></a>
-<span class="sourceLineNo">094</span><a name="line.94"></a>
-<span class="sourceLineNo">095</span>  /**<a name="line.95"></a>
-<span class="sourceLineNo">096</span>   * Creates a new connection to ZooKeeper, pulling settings and ensemble config<a name="line.96"></a>
-<span class="sourceLineNo">097</span>   * from the specified configuration object using methods from {@link ZKConfig}.<a name="line.97"></a>
-<span class="sourceLineNo">098</span>   *<a name="line.98"></a>
-<span class="sourceLineNo">099</span>   * Sets the connection status monitoring watcher to the specified watcher.<a name="line.99"></a>
-<span class="sourceLineNo">100</span>   *<a name="line.100"></a>
-<span class="sourceLineNo">101</span>   * @param conf configuration to pull ensemble and other settings from<a name="line.101"></a>
-<span class="sourceLineNo">102</span>   * @param watcher watcher to monitor connection changes<a name="line.102"></a>
-<span class="sourceLineNo">103</span>   * @return connection to zookeeper<a name="line.103"></a>
-<span class="sourceLineNo">104</span>   * @throws IOException if unable to connect to zk or config problem<a name="line.104"></a>
-<span class="sourceLineNo">105</span>   */<a name="line.105"></a>
-<span class="sourceLineNo">106</span>  public static RecoverableZooKeeper connect(Configuration conf, Watcher watcher)<a name="line.106"></a>
-<span class="sourceLineNo">107</span>  throws IOException {<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    String ensemble = ZKConfig.getZKQuorumServersString(conf);<a name="line.108"></a>
-<span class="sourceLineNo">109</span>    return connect(conf, ensemble, watcher);<a name="line.109"></a>
-<span class="sourceLineNo">110</span>  }<a name="line.110"></a>
-<span class="sourceLineNo">111</span><a name="line.111"></a>
-<span class="sourceLineNo">112</span>  public static RecoverableZooKeeper connect(Configuration conf, String ensemble,<a name="line.112"></a>
-<span class="sourceLineNo">113</span>      Watcher watcher)<a name="line.113"></a>
-<span class="sourceLineNo">114</span>  throws IOException {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    return connect(conf, ensemble, watcher, null);<a name="line.115"></a>
-<span class="sourceLineNo">116</span>  }<a name="line.116"></a>
-<span class="sourceLineNo">117</span><a name="line.117"></a>
-<span class="sourceLineNo">118</span>  public static RecoverableZooKeeper connect(Configuration conf, String ensemble,<a name="line.118"></a>
-<span class="sourceLineNo">119</span>      Watcher watcher, final String identifier)<a name="line.119"></a>
-<span class="sourceLineNo">120</span>  throws IOException {<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    if(ensemble == null) {<a name="line.121"></a>
-<span class="sourceLineNo">122</span>      throw new IOException("Unable to determine ZooKeeper ensemble");<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    }<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    int timeout = conf.getInt(HConstants.ZK_SESSION_TIMEOUT,<a name="line.124"></a>
-<span class="sourceLineNo">125</span>        HConstants.DEFAULT_ZK_SESSION_TIMEOUT);<a name="line.125"></a>
-<span class="sourceLineNo">126</span>    if (LOG.isTraceEnabled()) {<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      LOG.trace(identifier + " opening connection to ZooKeeper ensemble=" + ensemble);<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    }<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    int retry = conf.getInt("zookeeper.recovery.retry", 3);<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    int retryIntervalMillis =<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      conf.getInt("zookeeper.recovery.retry.intervalmill", 1000);<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    int maxSleepTime = conf.getInt("zookeeper.recovery.retry.maxsleeptime", 60000);<a name="line.132"></a>
-<span class="sourceLineNo">133</span>    zkDumpConnectionTimeOut = conf.getInt("zookeeper.dump.connection.timeout",<a name="line.133"></a>
-<span class="sourceLineNo">134</span>        1000);<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    return new RecoverableZooKeeper(ensemble, timeout, watcher,<a name="line.135"></a>
-<span class="sourceLineNo">136</span>        retry, retryIntervalMillis, maxSleepTime, identifier);<a name="line.136"></a>
-<span class="sourceLineNo">137</span>  }<a name="line.137"></a>
-<span class="sourceLineNo">138</span><a name="line.138"></a>
-<span class="sourceLineNo">139</span>  /**<a name="line.139"></a>
-<span class="sourceLineNo">140</span>   * Log in the current zookeeper server process using the given configuration<a name="line.140"></a>
-<span class="sourceLineNo">141</span>   * keys for the credential file and login principal.<a name="line.141"></a>
-<span class="sourceLineNo">142</span>   *<a name="line.142"></a>
-<span class="sourceLineNo">143</span>   * &lt;p&gt;&lt;strong&gt;This is only applicable when running on secure hbase&lt;/strong&gt;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>   * On regular HBase (without security features), this will safely be ignored.<a name="line.144"></a>
-<span class="sourceLineNo">145</span>   * &lt;/p&gt;<a name="line.145"></a>
+<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.security.Superusers;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil.ZKUtilOp.CreateAndFailSilent;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil.ZKUtilOp.DeleteNodeFailSilent;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil.ZKUtilOp.SetData;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.security.SecurityUtil;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.security.UserGroupInformation;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.security.authentication.util.KerberosUtil;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.zookeeper.AsyncCallback;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.zookeeper.CreateMode;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.zookeeper.KeeperException;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.zookeeper.KeeperException.NoNodeException;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.zookeeper.Op;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.zookeeper.Watcher;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.zookeeper.ZooDefs.Ids;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.zookeeper.ZooDefs.Perms;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.zookeeper.ZooKeeper;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.zookeeper.client.ZooKeeperSaslClient;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.zookeeper.data.ACL;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.zookeeper.data.Id;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.zookeeper.data.Stat;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.zookeeper.proto.CreateRequest;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.zookeeper.proto.DeleteRequest;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.zookeeper.proto.SetDataRequest;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.zookeeper.server.ZooKeeperSaslServer;<a name="line.75"></a>
+<span class="sourceLineNo">076</span><a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.shaded.com.google.protobuf.InvalidProtocolBufferException;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos;<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> * Internal HBase utility class for ZooKeeper.<a name="line.82"></a>
+<span class="sourceLineNo">083</span> *<a name="line.83"></a>
+<span class="sourceLineNo">084</span> * &lt;p&gt;Contains only static methods and constants.<a name="line.84"></a>
+<span class="sourceLineNo">085</span> *<a name="line.85"></a>
+<span class="sourceLineNo">086</span> * &lt;p&gt;Methods all throw {@link KeeperException} if there is an unexpected<a name="line.86"></a>
+<span class="sourceLineNo">087</span> * zookeeper exception, so callers of these methods must handle appropriately.<a name="line.87"></a>
+<span class="sourceLineNo">088</span> * If ZK is required for the operation, the server will need to be aborted.<a name="line.88"></a>
+<span class="sourceLineNo">089</span> */<a name="line.89"></a>
+<span class="sourceLineNo">090</span>@InterfaceAudience.Private<a name="line.90"></a>
+<span class="sourceLineNo">091</span>public final class ZKUtil {<a name="line.91"></a>
+<span class="sourceLineNo">092</span>  private static final Log LOG = LogFactory.getLog(ZKUtil.class);<a name="line.92"></a>
+<span class="sourceLineNo">093</span><a name="line.93"></a>
+<span class="sourceLineNo">094</span>  private static int zkDumpConnectionTimeOut;<a name="line.94"></a>
+<span class="sourceLineNo">095</span><a name="line.95"></a>
+<span class="sourceLineNo">096</span>  private ZKUtil() {<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>   * Creates a new connection to ZooKeeper, pulling settings and ensemble config<a name="line.100"></a>
+<span class="sourceLineNo">101</span>   * from the specified configuration object using methods from {@link ZKConfig}.<a name="line.101"></a>
+<span class="sourceLineNo">102</span>   *<a name="line.102"></a>
+<span class="sourceLineNo">103</span>   * Sets the connection status monitoring watcher to the specified watcher.<a name="line.103"></a>
+<span class="sourceLineNo">104</span>   *<a name="line.104"></a>
+<span class="sourceLineNo">105</span>   * @param conf configuration to pull ensemble and other settings from<a name="line.105"></a>
+<span class="sourceLineNo">106</span>   * @param watcher watcher to monitor connection changes<a name="line.106"></a>
+<span class="sourceLineNo">107</span>   * @return connection to zookeeper<a name="line.107"></a>
+<span class="sourceLineNo">108</span>   * @throws IOException if unable to connect to zk or config problem<a name="line.108"></a>
+<span class="sourceLineNo">109</span>   */<a name="line.109"></a>
+<span class="sourceLineNo">110</span>  public static RecoverableZooKeeper connect(Configuration conf, Watcher watcher)<a name="line.110"></a>
+<span class="sourceLineNo">111</span>  throws IOException {<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    String ensemble = ZKConfig.getZKQuorumServersString(conf);<a name="line.112"></a>
+<span class="sourceLineNo">113</span>    return connect(conf, ensemble, watcher);<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>  public static RecoverableZooKeeper connect(Configuration conf, String ensemble,<a name="line.116"></a>
+<span class="sourceLineNo">117</span>      Watcher watcher)<a name="line.117"></a>
+<span class="sourceLineNo">118</span>  throws IOException {<a name="line.118"></a>
+<span class="sourceLineNo">119</span>    return connect(conf, ensemble, watcher, null);<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>  public static RecoverableZooKeeper connect(Configuration conf, String ensemble,<a name="line.122"></a>
+<span class="sourceLineNo">123</span>      Watcher watcher, final String identifier)<a name="line.123"></a>
+<span class="sourceLineNo">124</span>  throws IOException {<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    if(ensemble == null) {<a name="line.125"></a>
+<span class="sourceLineNo">126</span>      throw new IOException("Unable to determine ZooKeeper ensemble");<a name="line.126"></a>
+<span class="sourceLineNo">127</span>    }<a name="line.127"></a>
+<span class="sourceLineNo">128</span>    int timeout = conf.getInt(HConstants.ZK_SESSION_TIMEOUT,<a name="line.128"></a>
+<span class="sourceLineNo">129</span>        HConstants.DEFAULT_ZK_SESSION_TIMEOUT);<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    if (LOG.isTraceEnabled()) {<a name="line.130"></a>
+<span class="sourceLineNo">131</span>      LOG.trace(identifier + " opening connection to ZooKeeper ensemble=" + ensemble);<a name="line.131"></a>
+<span class="sourceLineNo">132</span>    }<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    int retry = conf.getInt("zookeeper.recovery.retry", 3);<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    int retryIntervalMillis =<a name="line.134"></a>
+<span class="sourceLineNo">135</span>      conf.getInt("zookeeper.recovery.retry.intervalmill", 1000);<a name="line.135"></a>
+<span class="sourceLineNo">136</span>    int maxSleepTime = conf.getInt("zookeeper.recovery.retry.maxsleeptime", 60000);<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    zkDumpConnectionTimeOut = conf.getInt("zookeeper.dump.connection.timeout",<a name="line.137"></a>
+<span class="sourceLineNo">138</span>        1000);<a name="line.138"></a>
+<span class="sourceLineNo">139</span>    return new RecoverableZooKeeper(ensemble, timeout, watcher,<a name="line.139"></a>
+<span class="sourceLineNo">140</span>        retry, retryIntervalMillis, maxSleepTime, identifier);<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>   * Log in the current zookeeper server process using the given configuration<a name="line.144"></a>
+<span class="sourceLineNo">145</span>   * keys for the credential file and login principal.<a name="line.145"></a>
 <span class="sourceLineNo">146</span>   *<a name="line.146"></a>
-<span class="sourceLineNo">147</span>   * @param conf The configuration data to use<a name="line.147"></a>
-<span class="sourceLineNo">148</span>   * @param keytabFileKey Property key used to configure the path to the credential file<a name="line.148"></a>
-<span class="sourceLineNo">149</span>   * @param userNameKey Property key used to configure the login principal<a name="line.149"></a>
-<span class="sourceLineNo">150</span>   * @param hostname Current hostname to use in any credentials<a name="line.150"></a>
-<span class="sourceLineNo">151</span>   * @throws IOException underlying exception from SecurityUtil.login() call<a name="line.151"></a>
-<span class="sourceLineNo">152</span>   */<a name="line.152"></a>
-<span class="sourceLineNo">153</span>  public static void loginServer(Configuration conf, String keytabFileKey,<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      String userNameKey, String hostname) throws IOException {<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    login(conf, keytabFileKey, userNameKey, hostname,<a name="line.155"></a>
-<span class="sourceLineNo">156</span>          ZooKeeperSaslServer.LOGIN_CONTEXT_NAME_KEY,<a name="line.156"></a>
-<span class="sourceLineNo">157</span>          JaasConfiguration.SERVER_KEYTAB_KERBEROS_CONFIG_NAME);<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>  /**<a name="line.160"></a>
-<span class="sourceLineNo">161</span>   * Log in the current zookeeper client using the given configuration<a name="line.161"></a>
-<span class="sourceLineNo">162</span>   * keys for the credential file and login principal.<a name="line.162"></a>
-<span class="sourceLineNo">163</span>   *<a name="line.163"></a>
-<span class="sourceLineNo">164</span>   * &lt;p&gt;&lt;strong&gt;This is only applicable when running on secure hbase&lt;/strong&gt;<a name="line.164"></a>
-<span class="sourceLineNo">165</span>   * On regular HBase (without security features), this will safely be ignored.<a name="line.165"></a>
-<span class="sourceLineNo">166</span>   * &lt;/p&gt;<a name="line.166"></a>
+<span class="sourceLineNo">147</span>   * &lt;p&gt;&lt;strong&gt;This is only applicable when running on secure hbase&lt;/strong&gt;<a name="line.147"></a>
+<span class="sourceLineNo">148</span>   * On regular HBase (without security features), this will safely be ignored.<a name="line.148"></a>
+<span class="sourceLineNo">149</span>   * &lt;/p&gt;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>   *<a name="line.150"></a>
+<span class="sourceLineNo">151</span>   * @param conf The configuration data to use<a name="line.151"></a>
+<span class="sourceLineNo">152</span>   * @param keytabFileKey Property key used to configure the path to the credential file<a name="line.152"></a>
+<span class="sourceLineNo">153</span>   * @param userNameKey Property key used to configure the login principal<a name="line.153"></a>
+<span class="sourceLineNo">154</span>   * @param hostname Current hostname to use in any credentials<a name="line.154"></a>
+<span class="sourceLineNo">155</span>   * @throws IOException underlying exception from SecurityUtil.login() call<a name="line.155"></a>
+<span class="sourceLineNo">156</span>   */<a name="line.156"></a>
+<span class="sourceLineNo">157</span>  public static void loginServer(Configuration conf, String keytabFileKey,<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      String userNameKey, String hostname) throws IOException {<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    login(conf, keytabFileKey, userNameKey, hostname,<a name="line.159"></a>
+<span class="sourceLineNo">160</span>          ZooKeeperSaslServer.LOGIN_CONTEXT_NAME_KEY,<a name="line.160"></a>
+<span class="sourceLineNo">161</span>          JaasConfiguration.SERVER_KEYTAB_KERBEROS_CONFIG_NAME);<a name="line.161"></a>
+<span class="sourceLineNo">162</span>  }<a name="line.162"></a>
+<span class="sourceLineNo">163</span><a name="line.163"></a>
+<span class="sourceLineNo">164</span>  /**<a name="line.164"></a>
+<span class="sourceLineNo">165</span>   * Log in the current zookeeper client using the given configuration<a name="line.165"></a>
+<span class="sourceLineNo">166</span>   * keys for the credential file and login principal.<a name="line.166"></a>
 <span class="sourceLineNo">167</span>   *<a name="line.167"></a>
-<span class="sourceLineNo">168</span>   * @param conf The configuration data to use<a name="line.168"></a>
-<span class="sourceLineNo">169</span>   * @param keytabFileKey Property key used to configure the path to the credential file<a name="line.169"></a>
-<span class="sourceLineNo">170</span>   * @param userNameKey Property key used to configure the login principal<a name="line.170"></a>
-<span class="sourceLineNo">171</span>   * @param hostname Current hostname to use in any credentials<a name="line.171"></a>
-<span class="sourceLineNo">172</span>   * @throws IOException underlying exception from SecurityUtil.login() call<a name="line.172"></a>
-<span class="sourceLineNo">173</span>   */<a name="line.173"></a>
-<span class="sourceLineNo">174</span>  public static void loginClient(Configuration conf, String keytabFileKey,<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      String userNameKey, String hostname) throws IOException {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    login(conf, keytabFileKey, userNameKey, hostname,<a name="line.176"></a>
-<span class="sourceLineNo">177</span>          ZooKeeperSaslClient.LOGIN_CONTEXT_NAME_KEY,<a name="line.177"></a>
-<span class="sourceLineNo">178</span>          JaasConfiguration.CLIENT_KEYTAB_KERBEROS_CONFIG_NAME);<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>   * Log in the current process using the given configuration keys for the<a name="line.182"></a>
-<span class="sourceLineNo">183</span>   * credential file and login principal.<a name="line.183"></a>
-<span class="sourceLineNo">184</span>   *<a name="line.184"></a>
-<span class="sourceLineNo">185</span>   * &lt;p&gt;&lt;strong&gt;This is only applicable when running on secure hbase&lt;/strong&gt;<a name="line.185"></a>
-<span class="sourceLineNo">186</span>   * On regular HBase (without security features), this will safely be ignored.<a name="line.186"></a>
-<span class="sourceLineNo">187</span>   * &lt;/p&gt;<a name="line.187"></a>
+<span class="sourceLineNo">168</span>   * &lt;p&gt;&lt;strong&gt;This is only applicable when running on secure hbase&lt;/strong&gt;<a name="line.168"></a>
+<span class="sourceLineNo">169</span>   * On regular HBase (without security features), this will safely be ignored.<a name="line.169"></a>
+<span class="sourceLineNo">170</span>   * &lt;/p&gt;<a name="line.170"></a>
+<span class="sourceLineNo">171</span>   *<a name="line.171"></a>
+<span class="sourceLineNo">172</span>   * @param conf The configuration data to use<a name="line.172"></a>
+<span class="sourceLineNo">173</span>   * @param keytabFileKey Property key used to configure the path to the credential file<a name="line.173"></a>
+<span class="sourceLineNo">174</span>   * @param userNameKey Property key used to configure the login principal<a name="line.174"></a>
+<span class="sourceLineNo">175</span>   * @param hostname Current hostname to use in any credentials<a name="line.175"></a>
+<span class="sourceLineNo">176</span>   * @throws IOException underlying exception from SecurityUtil.login() call<a name="line.176"></a>
+<span class="sourceLineNo">177</span>   */<a name="line.177"></a>
+<span class="sourceLineNo">178</span>  public static void loginClient(Configuration conf, String keytabFileKey,<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      String userNameKey, String hostname) throws IOException {<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    login(conf, keytabFileKey, userNameKey, hostname,<a name="line.180"></a>
+<span class="sourceLineNo">181</span>          ZooKeeperSaslClient.LOGIN_CONTEXT_NAME_KEY,<a name="line.181"></a>
+<span class="sourceLineNo">182</span>          JaasConfiguration.CLIENT_KEYTAB_KERBEROS_CONFIG_NAME);<a name="line.182"></a>
+<span class="sourceLineNo">183</span>  }<a name="line.183"></a>
+<span class="sourceLineNo">184</span><a name="line.184"></a>
+<span class="sourceLineNo">185</span>  /**<a name="line.185"></a>
+<span class="sourceLineNo">186</span>   * Log in the current process using the given configuration keys for the<a name="line.186"></a>
+<span class="sourceLineNo">187</span>   * credential file and login principal.<a name="line.187"></a>
 <span class="sourceLineNo">188</span>   *<a name="line.188"></a>
-<span class="sourceLineNo">189</span>   * @param conf The configuration data to use<a name="line.189"></a>
-<span class="sourceLineNo">190</span>   * @param keytabFileKey Property key used to configure the path to the credential file<a name="line.190"></a>
-<span class="sourceLineNo">191</span>   * @param userNameKey Property key used to configure the login principal<a name="line.191"></a>
-<span class="sourceLineNo">192</span>   * @param hostname Current hostname to use in any credentials<a name="line.192"></a>
-<span class="sourceLineNo">193</span>   * @param loginContextProperty property name to expose the entry name<a name="line.193"></a>
-<span class="sourceLineNo">194</span>   * @param loginContextName jaas entry name<a name="line.194"></a>
-<span class="sourceLineNo">195</span>   * @throws IOException underlying exception from SecurityUtil.login() call<a name="line.195"></a>
-<span class="sourceLineNo">196</span>   */<a name="line.196"></a>
-<span class="sourceLineNo">197</span>  private static void login(Configuration conf, String keytabFileKey,<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      String userNameKey, String hostname,<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      String loginContextProperty, String loginContextName)<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      throws IOException {<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    if (!isSecureZooKeeper(conf))<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>    // User has specified a jaas.conf, keep this one as the good one.<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    // HBASE_OPTS="-Djava.security.auth.login.config=jaas.conf"<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    if (System.getProperty("java.security.auth.login.config") != null)<a name="line.206"></a>
-<span class="sourceLineNo">207</span>      return;<a name="line.207"></a>
+<span class="sourceLineNo">189</span>   * &lt;p&gt;&lt;strong&gt;This is only applicable when running on secure hbase&lt;/strong&gt;<a name="line.189"></a>
+<span class="sourceLineNo">190</span>   * On regular HBase (without security features), this will safely be ignored.<a name="line.190"></a>
+<span class="sourceLineNo">191</span>   * &lt;/p&gt;<a name="line.191"></a>
+<span class="sourceLineNo">192</span>   *<a name="line.192"></a>
+<span class="sourceLineNo">193</span>   * @param conf The configuration data to use<a name="line.193"></a>
+<span class="sourceLineNo">194</span>   * @param keytabFileKey Property key used to configure the path to the credential file<a name="line.194"></a>
+<span class="sourceLineNo">195</span>   * @param userNameKey Property key used to configure the login principal<a name="line.195"></a>
+<span class="sourceLineNo">196</span>   * @param hostname Current hostname to use in any credentials<a name="line.196"></a>
+<span class="sourceLineNo">197</span>   * @param loginContextProperty property name to expose the entry name<a name="line.197"></a>
+<span class="sourceLineNo">198</span>   * @param loginContextName jaas entry name<a name="line.198"></a>
+<span class="sourceLineNo">199</span>   * @throws IOException underlying exception from SecurityUtil.login() call<a name="line.199"></a>
+<span class="sourceLineNo">200</span>   */<a name="line.200"></a>
+<span class="sourceLineNo">201</span>  private static void login(Configuration conf, String keytabFileKey,<a name="line.201"></a>
+<span class="sourceLineNo">202</span>      String userNameKey, String hostname,<a name="line.202"></a>
+<span class="sourceLineNo">203</span>      String loginContextProperty, String loginContextName)<a name="line.203"></a>
+<span class="sourceLineNo">204</span>      throws IOException {<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    if (!isSecureZooKeeper(conf)) {<a name="line.205"></a>
+<span class="sourceLineNo">206</span>      return;<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    }<a name="line.207"></a>
 <span class="sourceLineNo">208</span><a name="line.208"></a>
-<span class="sourceLineNo">209</span>    // No keytab specified, no auth<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    String keytabFilename = conf.get(keytabFileKey);<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    if (keytabFilename == null) {<a name="line.211"></a>
-<span class="sourceLineNo">212</span>      LOG.warn("no keytab specified for: " + keytabFileKey);<a name="line.212"></a>
-<span class="sourceLineNo">213</span>      return;<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    }<a name="line.214"></a>
-<span class="sourceLineNo">215</span><a name="line.215"></a>
-<span class="sourceLineNo">216</span>    String principalConfig = conf.get(userNameKey, System.getProperty("user.name"));<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    String principalName = SecurityUtil.getServerPrincipal(principalConfig, hostname);<a name="line.217"></a>
-<span class="sourceLineNo">218</span><a name="line.218"></a>
-<span class="sourceLineNo">219</span>    // Initialize the "jaas.conf" for keyTab/principal,<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    // If keyTab is not specified use the Ticket Cache.<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    // and set the zookeeper login context name.<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    JaasConfiguration jaasConf = new JaasConfiguration(loginContextName,<a name="line.222"></a>
-<span class="sourceLineNo">223</span>        principalName, keytabFilename);<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    javax.security.auth.login.Configuration.setConfiguration(jaasConf);<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    System.setProperty(loginContextProperty, loginContextName);<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>  /**<a name="line.228"></a>
-<span class="sourceLineNo">229</span>   * A JAAS configuration that defines the login modules that we want to use for login.<a name="line.229"></a>
-<span class="sourceLineNo">230</span>   */<a name="line.230"></a>
-<span class="sourceLineNo">231</span>  private static class JaasConfiguration extends javax.security.auth.login.Configuration {<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    private static final String SERVER_KEYTAB_KERBEROS_CONFIG_NAME =<a name="line.232"></a>
-<span class="sourceLineNo">233</span>      "zookeeper-server-keytab-kerberos";<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    private static final String CLIENT_KEYTAB_KERBEROS_CONFIG_NAME =<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      "zookeeper-client-keytab-kerberos";<a name="line.235"></a>
-<span class="sourceLineNo">236</span><a name="line.236"></a>
-<span class="sourceLineNo">237</span>    private static final Map&lt;String, String&gt; BASIC_JAAS_OPTIONS = new HashMap&lt;&gt;();<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    static {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>      String jaasEnvVar = System.getenv("HBASE_JAAS_DEBUG");<a name="line.239"></a>
-<span class="sourceLineNo">240</span>      if (jaasEnvVar != null &amp;&amp; "true".equalsIgnoreCase(jaasEnvVar)) {<a name="line.240"></a>
-<span class="sourceLineNo">241</span>        BASIC_JAAS_OPTIONS.put("debug", "true");<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      }<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    }<a name="line.243"></a>
-<span class="sourceLineNo">244</span><a name="line.244"></a>
-<span class="sourceLineNo">245</span>    private static final Map&lt;String,String&gt; KEYTAB_KERBEROS_OPTIONS = new HashMap&lt;&gt;();<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    static {<a name="line.246"></a>
-<span class="sourceLineNo">247</span>      KEYTAB_KERBEROS_OPTIONS.put("doNotPrompt", "true");<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      KEYTAB_KERBEROS_OPTIONS.put("storeKey", "true");<a name="line.248"></a>
-<span class="sourceLineNo">249</span>      KEYTAB_KERBEROS_OPTIONS.put("refreshKrb5Config", "true");<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      KEYTAB_KERBEROS_OPTIONS.putAll(BASIC_JAAS_OPTIONS);<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>    private static final AppConfigurationEntry KEYTAB_KERBEROS_LOGIN =<a name="line.253"></a>
-<span class="sourceLineNo">254</span>      new AppConfigurationEntry(KerberosUtil.getKrb5LoginModuleName(),<a name="line.254"></a>
-<span class="sourceLineNo">255</span>                                LoginModuleControlFlag.REQUIRED,<a name="line.255"></a>
-<span class="sourceLineNo">256</span>                                KEYTAB_KERBEROS_OPTIONS);<a name="line.256"></a>
-<span class="sourceLineNo">257</span><a name="line.257"></a>
-<span class="sourceLineNo">258</span>    private static final AppConfigurationEntry[] KEYTAB_KERBEROS_CONF =<a name="line.258"></a>
-<span class="sourceLineNo">259</span>      new AppConfigurationEntry[]{KEYTAB_KERBEROS_LOGIN};<a name="line.259"></a>
-<span class="sourceLineNo">260</span><a name="line.260"></a>
-<span class="sourceLineNo">261</span>    private javax.security.auth.login.Configuration baseConfig;<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    private final String loginContextName;<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    private final boolean useTicketCache;<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    private final String keytabFile;<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    private final String principal;<a name="line.265"></a>
+<span class="sourceLineNo">209</span>    // User has specified a jaas.conf, keep this one as the good one.<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    // HBASE_OPTS="-Djava.security.auth.login.config=jaas.conf"<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    if (System.getProperty("java.security.auth.login.config") != null) {<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      return;<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>    // No keytab specified, no auth<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    String keytabFilename = conf.get(keytabFileKey);<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    if (keytabFilename == null) {<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      LOG.warn("no keytab specified for: " + keytabFileKey);<a name="line.218"></a>
+<span class="sourceLineNo">219</span>      return;<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    }<a name="line.220"></a>
+<span class="sourceLineNo">221</span><a name="line.221"></a>
+<span class="sourceLineNo">222</span>    String principalConfig = conf.get(userNameKey, System.getProperty("user.name"));<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    String principalName = SecurityUtil.getServerPrincipal(principalConfig, hostname);<a name="line.223"></a>
+<span class="sourceLineNo">224</span><a name="line.224"></a>
+<span class="sourceLineNo">225</span>    // Initialize the "jaas.conf" for keyTab/principal,<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    // If keyTab is not specified use the Ticket Cache.<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    // and set the zookeeper login context name.<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    JaasConfiguration jaasConf = new JaasConfiguration(loginContextName,<a name="line.228"></a>
+<span class="sourceLineNo">229</span>        principalName, keytabFilename);<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    javax.security.auth.login.Configuration.setConfiguration(jaasConf);<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    System.setProperty(loginContextProperty, loginContextName);<a name="line.231"></a>
+<span class="sourceLineNo">232</span>  }<a name="line.232"></a>
+<span class="sourceLineNo">233</span><a name="line.233"></a>
+<span class="sourceLineNo">234</span>  /**<a name="line.234"></a>
+<span class="sourceLineNo">235</span>   * A JAAS configuration that defines the login modules that we want to use for login.<a name="line.235"></a>
+<span class="sourceLineNo">236</span>   */<a name="line.236"></a>
+<span class="sourceLineNo">237</span>  private static class JaasConfiguration extends javax.security.auth.login.Configuration {<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    private static final String SERVER_KEYTAB_KERBEROS_CONFIG_NAME =<a name="line.238"></a>
+<span class="sourceLineNo">239</span>      "zookeeper-server-keytab-kerberos";<a name="line.239"></a>
+<span class="sourceLineNo">240</span>    private static final String CLIENT_KEYTAB_KERBEROS_CONFIG_NAME =<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      "zookeeper-client-keytab-kerberos";<a name="line.241"></a>
+<span class="sourceLineNo">242</span><a name="line.242"></a>
+<span class="sourceLineNo">243</span>    private static final Map&lt;String, String&gt; BASIC_JAAS_OPTIONS = new HashMap&lt;&gt;();<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    static {<a name="line.244"></a>
+<span class="sourceLineNo">245</span>      String jaasEnvVar = System.getenv("HBASE_JAAS_DEBUG");<a name="line.245"></a>
+<span class="sourceLineNo">246</span>      if (jaasEnvVar != null &amp;&amp; "true".equalsIgnoreCase(jaasEnvVar)) {<a name="line.246"></a>
+<span class="sourceLineNo">247</span>        BASIC_JAAS_OPTIONS.put("debug", "true");<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>    private static final Map&lt;String,String&gt; KEYTAB_KERBEROS_OPTIONS = new HashMap&lt;&gt;();<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    static {<a name="line.252"></a>
+<span class="sourceLineNo">253</span>      KEYTAB_KERBEROS_OPTIONS.put("doNotPrompt", "true");<a name="line.253"></a>
+<span class="sourceLineNo">254</span>      KEYTAB_KERBEROS_OPTIONS.put("storeKey", "true");<a name="line.254"></a>
+<span class="sourceLineNo">255</span>      KEYTAB_KERBEROS_OPTIONS.put("refreshKrb5Config", "true");<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      KEYTAB_KERBEROS_OPTIONS.putAll(BASIC_JAAS_OPTIONS);<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    }<a name="line.257"></a>
+<span class="sourceLineNo">258</span><a name="line.258"></a>
+<span class="sourceLineNo">259</span>    private static final AppConfigurationEntry KEYTAB_KERBEROS_LOGIN =<a name="line.259"></a>
+<span class="sourceLineNo">260</span>      new AppConfigurationEntry(KerberosUtil.getKrb5LoginModuleName(),<a name="line.260"></a>
+<span class="sourceLineNo">261</span>                                LoginModuleControlFlag.REQUIRED,<a name="line.261"></a>
+<span class="sourceLineNo">262</span>                                KEYTAB_KERBEROS_OPTIONS);<a name="line.262"></a>
+<span class="sourceLineNo">263</span><a name="line.263"></a>
+<span class="sourceLineNo">264</span>    private static final AppConfigurationEntry[] KEYTAB_KERBEROS_CONF =<a name="line.264"></a>
+<span class="sourceLineNo">265</span>      new AppConfigurationEntry[]{KEYTAB_KERBEROS_LOGIN};<a name="line.265"></a>
 <span class="sourceLineNo">266</span><a name="line.266"></a>
-<span class="sourceLineNo">267</span>    public JaasConfiguration(String loginContextName, String principal, String keytabFile) {<a name="line.267"></a>
-<span class="sourceLineNo">268</span>      this(loginContextName, principal, keytabFile, keytabFile == null || keytabFile.length() == 0);<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>    private JaasConfiguration(String loginContextName, String principal,<a name="line.271"></a>
-<span class="sourceLineNo">272</span>                             String keytabFile, boolean useTicketCache) {<a name="line.272"></a>
-<span class="sourceLineNo">273</span>      try {<a name="line.273"></a>
-<span class="sourceLineNo">274</span>        this.baseConfig = javax.security.auth.login.Configuration.getConfiguration();<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      } catch (SecurityException e) {<a name="line.275"></a>
-<span class="sourceLineNo">276</span>        this.baseConfig = null;<a name="line.276"></a>
-<span class="sourceLineNo">277</span>      }<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      this.loginContextName = loginContextName;<a name="line.278"></a>
-<span class="sourceLineNo">279</span>      this.useTicketCache = useTicketCache;<a name="line.279"></a>
-<span class="sourceLineNo">280</span>      this.keytabFile = keytabFile;<a name="line.280"></a>
-<span class="sourceLineNo">281</span>      this.principal = principal;<a name="line.281"></a>
-<span class="sourceLineNo">282</span>      LOG.info("JaasConfiguration loginContextName=" + loginContextName +<a name="line.282"></a>
-<span class="sourceLineNo">283</span>               " principal=" + principal + " useTicketCache=" + useTicketCache +<a name="line.283"></a>
-<span class="sourceLineNo">284</span>               " keytabFile=" + keytabFile);<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>    @Override<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    public AppConfigurationEntry[] getAppConfigurationEntry(String appName) {<a name="line.288"></a>
-<span class="sourceLineNo">289</span>      if (loginContextName.equals(appName)) {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        if (!useTicketCache) {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>          KEYTAB_KERBEROS_OPTIONS.put("keyTab", keytabFile);<a name="line.291"></a>
-<span class="sourceLineNo">292</span>          KEYTAB_KERBEROS_OPTIONS.put("useKeyTab", "true");<a name="line.292"></a>
-<span class="sourceLineNo">293</span>        }<a name="line.293"></a>
-<span class="sourceLineNo">294</span>        KEYTAB_KERBEROS_OPTIONS.put("principal", principal);<a name="line.294"></a>
-<span class="sourceLineNo">295</span>        KEYTAB_KERBEROS_OPTIONS.put("useTicketCache", useTicketCache ? "true" : "false");<a name="line.295"></a>
-<span class="sourceLineNo">296</span>        return KEYTAB_KERBEROS_CONF;<a name="line.296"></a>
-<span class="sourceLineNo">297</span>      }<a name="line.297"></a>
-<span class="sourceLineNo">298</span>      if (baseConfig != null) return baseConfig.getAppConfigurationEntry(appName);<a name="line.298"></a>
-<span class="sourceLineNo">299</span>      return(null);<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    }<a name="line.300"></a>
-<span class="sourceLineNo">301</span>  }<a name="line.301"></a>
-<span class="sourceLineNo">302</span><a name="line.302"></a>
-<span class="sourceLineNo">303</span>  //<a name="line.303"></a>
-<span class="sourceLineNo">304</span>  // Helper methods<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>   * Returns the full path of the immediate parent of the specified node.<a name="line.307"></a>
-<span class="sourceLineNo">308</span>   * @param node path to get parent of<a name="line.308"></a>
-<span class="sourceLineNo">309</span>   * @return parent of path, null if passed the root node or an invalid node<a name="line.309"></a>
-<span class="sourceLineNo">310</span>   */<a name="line.310"></a>
-<span class="sourceLineNo">311</span>  public static String getParent(String node) {<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    int idx = node.lastIndexOf(ZNodePaths.ZNODE_PATH_SEPARATOR);<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    return idx &lt;= 0 ? null : node.substring(0, idx);<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">267</span>    private javax.security.auth.login.Configuration baseConfig;<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    private final String loginContextName;<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    private final boolean useTicketCache;<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    private final String keytabFile;<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    private final String principal;<a name="line.271"></a>
+<span class="sourceLineNo">272</span><a name="line.272"></a>
+<span class="sourceLineNo">273</span>    public JaasConfiguration(String loginContextName, String principal, String keytabFile) {<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      this(loginContextName, principal, keytabFile, keytabFile == null || keytabFile.length() == 0);<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>    private JaasConfiguration(String loginContextName, String principal,<a name="line.277"></a>
+<span class="sourceLineNo">278</span>                             String keytabFile, boolean useTicketCache) {<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      try {<a name="line.279"></a>
+<span class="sourceLineNo">280</span>        this.baseConfig = javax.security.auth.login.Configuration.getConfiguration();<a name="line.280"></a>
+<span class="sourceLineNo">281</span>      } catch (SecurityException e) {<a name="line.281"></a>
+<span class="sourceLineNo">282</span>        this.baseConfig = null;<a name="line.282"></a>
+<span class="sourceLineNo">283</span>      }<a name="line.283"></a>
+<span class="sourceLineNo">284</span>      this.loginContextName = loginContextName;<a name="line.284"></a>
+<span class="sourceLineNo">285</span>      this.useTicketCache = useTicketCache;<a name="line.285"></a>
+<span class="sourceLineNo">286</span>      this.keytabFile = keytabFile;<a name="line.286"></a>
+<span class="sourceLineNo">287</span>      this.principal = principal;<a name="line.287"></a>
+<span class="sourceLineNo">288</span>      LOG.info("JaasConfiguration loginContextName=" + loginContextName +<a name="line.288"></a>
+<span class="sourceLineNo">289</span>               " principal=" + principal + " useTicketCache=" + useTicketCache +<a name="line.289"></a>
+<span class="sourceLineNo">290</span>               " keytabFile=" + keytabFile);<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    }<a name="line.291"></a>
+<span class="sourceLineNo">292</span><a name="line.292"></a>
+<span class="sourceLineNo">293</span>    @Override<a name="line.293"></a>
+<span class="sourceLineNo">294</span>    public AppConfigurationEntry[] getAppConfigurationEntry(String appName) {<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      if (loginContextName.equals(appName)) {<a name="line.295"></a>
+<span class="sourceLineNo">296</span>        if (!useTicketCache) {<a name="line.296"></a>
+<span class="sourceLineNo">297</span>          KEYTAB_KERBEROS_OPTIONS.put("keyTab", keytabFile);<a name="line.297"></a>
+<span class="sourceLineNo">298</span>          KEYTAB_KERBEROS_OPTIONS.put("useKeyTab", "true");<a name="line.298"></a>
+<span class="sourceLineNo">299</span>        }<a name="line.299"></a>
+<span class="sourceLineNo">300</span>        KEYTAB_KERBEROS_OPTIONS.put("principal", principal);<a name="line.300"></a>
+<span class="sourceLineNo">301</span>        KEYTAB_KERBEROS_OPTIONS.put("useTicketCache", useTicketCache ? "true" : "false");<a name="line.301"></a>
+<span class="sourceLineNo">302</span>        return KEYTAB_KERBEROS_CONF;<a name="line.302"></a>
+<span class="sourceLineNo">303</span>      }<a name="line.303"></a>
+<span class="sourceLineNo">304</span><a name="line.304"></a>
+<span class="sourceLineNo">305</span>      if (baseConfig != null) {<a name="line.305"></a>
+<span class="sourceLineNo">306</span>        return baseConfig.getAppConfigurationEntry(appName);<a name="line.306"></a>
+<span class="sourceLineNo">307</span>      }<a name="line.307"></a>
+<span class="sourceLineNo">308</span><a name="line.308"></a>
+<span class="sourceLineNo">309</span>      return(null);<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><a name="line.312"></a>
+<span class="sourceLineNo">313</span>  //<a name="line.313"></a>
+<span class="sourceLineNo">314</span>  // Helper methods<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>   * Get the name of the current node from the specified fully-qualified path.<a name="line.317"></a>
-<span class="sourceLineNo">318</span>   * @param path fully-qualified path<a name="line.318"></a>
-<span class="sourceLineNo">319</span>   * @return name of the current node<a name="line.319"></a>
+<span class="sourceLineNo">317</span>   * Returns the full path of the immediate parent of the specified node.<a name="line.317"></a>
+<span class="sourceLineNo">318</span>   * @param node path to get parent of<a name="line.318"></a>
+<span class="sourceLineNo">319</span>   * @return parent of path, null if passed the root node or an invalid node<a name="line.319"></a>
 <span class="sourceLineNo">320</span>   */<a name="line.320"></a>
-<span class="sourceLineNo">321</span>  public static String getNodeName(String path) {<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    return path.substring(path.lastIndexOf("/")+1);<a name="line.322"></a>
-<span class="sourceLineNo">323</span>  }<a name="line.323"></a>
-<span class="sourceLineNo">324</span><a name="line.324"></a>
-<span class="sourceLineNo">325</span>  //<a name="line.325"></a>
-<span class="sourceLineNo">326</span>  // Existence checks and watches<a name="line.326"></a>
-<span class="sourceLineNo">327</span>  //<a name="line.327"></a>
-<span class="sourceLineNo">328</span><a name="line.328"></a>
-<span class="sourceLineNo">329</span>  /**<a name="line.329"></a>
-<span class="sourceLineNo">330</span>   * Watch the specified znode for delete/create/change events.  The watcher is<a name="line.330"></a>
-<span class="sourceLineNo">331</span>   * set whether or not the node exists.  If the node already exists, the method<a name="line.331"></a>
-<span class="sourceLineNo">332</span>   * returns true.  If the node does not exist, the method returns false.<a name="line.332"></a>
-<span class="sourceLineNo">333</span>   *<a name="line.333"></a>
-<span class="sourceLineNo">334</span>   * @param zkw zk reference<a name="line.334"></a>
-<span class="sourceLineNo">335</span>   * @param znode path of node to watch<a name="line.335"></a>
-<span class="sourceLineNo">336</span>   * @return true if znode exists, false if does not exist or error<a name="line.336"></a>
-<span class="sourceLineNo">337</span>   * @throws KeeperException if unexpected zookeeper exception<a name="line.337"></a>
-<span class="sourceLineNo">338</span>   */<a name="line.338"></a>
-<span class="sourceLineNo">339</span>  public static boolean watchAndCheckExists(ZKWatcher zkw, String znode)<a name="line.339"></a>
-<span class="sourceLineNo">340</span>  throws KeeperException {<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    try {<a name="line.341"></a>
-<span class="sourceLineNo">342</span>      Stat s = zkw.getRecoverableZooKeeper().exists(znode, zkw);<a name="line.342"></a>
-<span class="sourceLineNo">343</span>      boolean exists = s != null ? true : false;<a name="line.343"></a>
-<span class="sourceLineNo">344</span>      if (exists) {<a name="line.344"></a>
-<span class="sourceLineNo">345</span>        LOG.debug(zkw.prefix("Set watcher on existing znode=" + znode));<a name="line.345"></a>
-<span class="sourceLineNo">346</span>      } else {<a name="line.346"></a>
-<span class="sourceLineNo">347</span>        LOG.debug(zkw.prefix("Set watcher on znode that does not yet exist, " + znode));<a name="line.347"></a>
-<span class="sourceLineNo">348</span>      }<a name="line.348"></a>
-<span class="sourceLineNo">349</span>      return exists;<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    } catch (KeeperException e) {<a name="line.350"></a>
-<span class="sourceLineNo">351</span>      LOG.warn(zkw.prefix("Unable to set watcher on znode " + znode), e);<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      zkw.keeperException(e);<a name="line.352"></a>
-<span class="sourceLineNo">353</span>      return false;<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    } catch (InterruptedException e) {<a name="line.354"></a>
-<span class="sourceLineNo">355</span>      LOG.warn(zkw.prefix("Unable to set watcher on znode " + znode), e);<a name="line.355"></a>
-<span class="sourceLineNo">356</span>      zkw.interruptedException(e);<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      return false;<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    }<a name="line.358"></a>
-<span class="sourceLineNo">359</span>  }<a name="line.359"></a>
-<span class="sourceLineNo">360</span><a name="line.360"></a>
-<span class="sourceLineNo">361</span>  /**<a name="line.361"></a>
-<span class="sourceLineNo">362</span>   * Watch the specified znode, but only if exists. Useful when watching<a name="line.362"></a>
-<span class="sourceLineNo">363</span>   * for deletions. Uses .getData() (and handles NoNodeException) instead<a name="line.363"></a>
-<span class="sourceLineNo">364</span>   * of .exists() to accomplish this, as .getData() will only set a watch if<a name="line.364"></a>
-<span class="sourceLineNo">365</span>   * the znode exists.<a name="line.365"></a>
-<span class="sourceLineNo">366</span>   * @param zkw zk reference<a name="line.366"></a>
-<span class="sourceLineNo">367</span>   * @param znode path of node to watch<a name="line.367"></a>
-<span class="sourceLineNo">368</span>   * @return true if the watch is set, false if node does not exists<a name="line.368"></a>
-<span class="sourceLineNo">369</span>   * @throws KeeperException if unexpected zookeeper exception<a name="line.369"></a>
-<span class="sourceLineNo">370</span>   */<a name="line.370"></a>
-<span class="sourceLineNo">371</span>  public static boolean setWatchIfNodeExists(ZKWatcher zkw, String znode)<a name="line.371"></a>
-<span class="sourceLineNo">372</span>      throws KeeperException {<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    try {<a name="line.373"></a>
-<span class="sourceLineNo">374</span>      zkw.getRecoverableZooKeeper().getData(znode, true, null);<a name="line.374"></a>
-<span class="sourceLineNo">375</span>      return true;<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    } catch (NoNodeException e) {<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      return false;<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    } catch (InterruptedException e) {<a name="line.378"></a>
-<span class="sourceLineNo">379</span>      LOG.warn(zkw.prefix("Unable to set watcher on znode " + znode), e);<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      zkw.interruptedException(e);<a name="line.380"></a>
-<span class="sourceLineNo">381</span>      return false;<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>   * Check if the specified node exists.  Sets no watches.<a name="line.386"></a>
-<span class="sourceLineNo">387</span>   *<a name="line.387"></a>
-<span class="sourceLineNo">388</span>   * @param zkw zk reference<a name="line.388"></a>
-<span class="sourceLineNo">389</span>   * @param znode path of node to watch<a name="line.389"></a>
-<span class="sourceLineNo">390</span>   * @return version of the node if it exists, -1 if does not exist<a name="line.390"></a>
-<span class="sourceLineNo">391</span>   * @throws KeeperException if unexpected zookeeper exception<a name="line.391"></a>
-<span class="sourceLineNo">392</span>   */<a name="line.392"></a>
-<span class="sourceLineNo">393</span>  public static int checkExists(ZKWatcher zkw, String znode)<a name="line.393"></a>
-<span class="sourceLineNo">394</span>  throws KeeperException {<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    try {<a name="line.395"></a>
-<span class="sourceLineNo">396</span>      Stat s = zkw.getRecoverableZooKeeper().exists(znode, null);<a name="line.396"></a>
-<span class="sourceLineNo">397</span>      return s != null ? s.getVersion() : -1;<a name="line.397"></a>
-<span class="sourceLineNo">398</span>    } catch (KeeperException e) {<a name="line.398"></a>
-<span class="sourceLineNo">399</span>      LOG.warn(zkw.prefix("Unable to set watcher on znode (" + znode + ")"), e);<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      zkw.keeperException(e);<a name="line.400"></a>
-<span class="sourceLineNo">401</span>      return -1;<a name="line.401"></a>
-<span class="sourceLineNo">402</span>    } catch (InterruptedException e) {<a name="line.402"></a>
-<span class="sourceLineNo">403</span>      LOG.warn(zkw.prefix("Unable to set watcher on znode (" + znode + ")"), e);<a name="line.403"></a>
-<span class="sourceLineNo">404</span>      zkw.interruptedException(e);<a name="line.404"></a>
-<span class="sourceLineNo">405</span>      return -1;<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    }<a name="line.406"></a>
-<span class="sourceLineNo">407</span>  }<a name="line.407"></a>
-<span class="sourceLineNo">408</span><a name="line.408"></a>
-<span class="sourceLineNo">409</span>  //<a name="line.409"></a>
-<span class="sourceLineNo">410</span>  // Znode listings<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>   * Lists the children znodes of the specified znode.  Also sets a watch on<a name="line.414"></a>
-<span class="sourceLineNo">415</span>   * the specified znode which will capture a NodeDeleted event on the specified<a name="line.415"></a>
-<span class="sourceLineNo">416</span>   * znode as well as NodeChildrenChanged if any children of the specified znode<a name="line.416"></a>
-<span class="sourceLineNo">417</span>   * are created or deleted.<a name="line.417"></a>
-<span class="sourceLineNo">418</span>   *<a name="line.418"></a>
-<span class="sourceLineNo">419</span>   * Returns null if the specified node does not exist.  Otherwise returns a<a name="line.419"></a>
-<span class="sourceLineNo">420</span>   * list of children of the specified node.  If the node exists but it has no<a name="line.420"></a>
-<span class="sourceLineNo">421</span>   * children, an empty list will be returned.<a name="line.421"></a>
-<span class="sourceLineNo">422</span>   *<a name="line.422"></a>
-<span class="sourceLineNo">423</span>   * @param zkw zk reference<a name="line.423"></a>
-<span class="sourceLineNo">424</span>   * @param znode path of node to list and watch children of<a name="line.424"></a>
-<span class="sourceLineNo">425</span>   * @return list of children of the specified node, an empty list if the node<a name="line.425"></a>
-<span class="sourceLineNo">426</span>   *          exists but has no children, and null if the node does not exist<a name="line.426"></a>
-<span class="sourceLineNo">427</span>   * @throws KeeperException if unexpected zookeeper exception<a name="line.427"></a>
-<span class="sourceLineNo">428</span>   */<a name="line.428"></a>
-<span class="sourceLineNo">429</span>  public static List&lt;String&gt; listChildrenAndWatchForNewChildren(<a name="line.429"></a>
-<span class="sourceLineNo">430</span>          ZKWatcher zkw, String znode)<a name="line.430"></a>
-<span class="sourceLineNo">431</span>  throws KeeperException {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>    try {<a name="line.432"></a>
-<span class="sourceLineNo">433</span>      List&lt;String&gt; children = zkw.getRecoverableZooKeeper().getChildren(znode, zkw);<a name="line.433"></a>
-<span class="sourceLineNo">434</span>      return children;<a name="line.434"></a>
-<span class="sourceLineNo">435</span>    } catch(KeeperException.NoNodeException ke) {<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      LOG.debug(zkw.prefix("Unable to list children of znode " + znode + " " +<a name="line.436"></a>
-<span class="sourceLineNo">437</span>          "because node does not exist (not an error)"));<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      return null;<a name="line.438"></a>
-<span class="sourceLineNo">439</span>    } catch (KeeperException e) {<a name="line.439"></a>
-<span class="sourceLineNo">440</span>      LOG.warn(zkw.prefix("Unable to list children of znode " + znode + " "), e);<a name="line.440"></a>
-<span class="sourceLineNo">441</span>      zkw.keeperException(e);<a name="line.441"></a>
-<span class="sourceLineNo">442</span>      return null;<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    } catch (InterruptedException e) {<a name="line.443"></a>
-<span class="sourceLineNo">444</span>      LOG.warn(zkw.prefix("Unable to list children of znode " + znode + " "), e);<a name="line.444"></a>
-<span class="sourceLineNo">445</span>      zkw.interruptedException(e);<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      return null;<a name="line.446"></a>
-<span class="sourceLineNo">447</span>    }<a name="line.447"></a>
-<span class="sourceLineNo">448</span>  }<a name="line.448"></a>
-<span class="sourceLineNo">449</span><a name="line.449"></a>
-<span class="sourceLineNo">450</span>  /**<a name="line.450"></a>
-<span class="sourceLineNo">451</span>   * List all the children of the specified znode, setting a watch for children<a name="line.451"></a>
-<span class="sourceLineNo">452</span>   * changes and also setting a watch on every individual child in order to get<a name="line.452"></a>
-<span class="sourceLineNo">453</span>   * the NodeCreated and NodeDeleted events.<a name="line.453"></a>
-<span class="sourceLineNo">454</span>   * @param zkw zookeeper reference<a name="line.454"></a>
-<span class="sourceLineNo">455</span>   * @param znode node to get children of and watch<a name="line.455"></a>
-<span class="sourceLineNo">456</span>   * @return list of znode names, null if the node doesn't exist<a name="line.456"></a>
-<span class="sourceLineNo">457</span>   * @throws KeeperException<a name="line.457"></a>
-<span class="sourceLineNo">458</span>   */<a name="line.458"></a>
-<span class="sourceLineNo">459</span>  public static List&lt;String&gt; listChildrenAndWatchThem(ZKWatcher zkw,<a name="line.459"></a>
-<span class="sourceLineNo">460</span>      String znode) throws KeeperException {<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    List&lt;String&gt; children = listChildrenAndWatchForNewChildren(zkw, znode);<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    if (children == null) {<a name="line.462"></a>
-<span class="sourceLineNo">463</span>      return null;<a name="line.463"></a>
-<span class="sourceLineNo">464</span>    }<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    for (String child : children) {<a name="line.465"></a>
-<span class="sourceLineNo">466</span>      watchAndCheckExists(zkw, ZNodePaths.joinZNode(znode, child));<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    }<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    return children;<a name="line.468"></a>
-<span class="sourceLineNo">469</span>  }<a name="line.469"></a>
-<span class="sourceLineNo">470</span><a name="line.470"></a>
-<span class="sourceLineNo">471</span>  /**<a name="line.471"></a>
-<span class="sourceLineNo">472</span>   * Lists the children of the specified znode without setting any watches.<a name="line.472"></a>
-<span class="sourceLineNo">473</span>   *<a name="line.473"></a>
-<span class="sourceLineNo">474</span>   * Sets no watches at all, this method is best effort.<a name="line.474"></a>
-<span class="sourceLineNo">475</span>   *<a name="line.475"></a>
-<span class="sourceLineNo">476</span>   * Returns an empty list if the node has no children.  Returns null if the<a name="line.476"></a>
-<span class="sourceLineNo">477</span>   * parent node itself does not exist.<a name="line.477"></a>
-<span class="sourceLineNo">478</span>   *<a name="line.478"></a>
-<span class="sourceLineNo">479</span>   * @param zkw zookeeper reference<a name="line.479"></a>
-<span class="sourceLineNo">480</span>   * @param znode node to get children<a name="line.480"></a>
-<span class="sourceLineNo">481</span>   * @return list of data of children of specified znode, empty if no children,<a name="line.481"></a>
-<span class="sourceLineNo">482</span>   *         null if parent does not exist<a name="line.482"></a>
-<span class="sourceLineNo">483</span>   * @throws KeeperException if unexpected zookeeper exception<a name="line.483"></a>
-<span class="sourceLineNo">484</span>   */<a name="line.484"></a>
-<span class="sourceLineNo">485</span>  public static List&lt;String&gt; listChildrenNoWatch(ZKWatcher zkw, String znode)<a name="line.485"></a>
-<span class="sourceLineNo">486</span>  throws KeeperException {<a name="line.486"></a>
-<span class="sourceLineNo">487</span>    List&lt;String&gt; children = null;<a name="line.487"></a>
-<span class="sourceLineNo">488</span>    try {<a name="line.488"></a>
-<span class="sourceLineNo">489</span>      // List the children without watching<a name="line.489"></a>
-<span class="sourceLineNo">490</span>      children = zkw.getRecoverableZooKeeper().getChildren(znode, null);<a name="line.490"></a>
-<span class="sourceLineNo">491</span>    } catch(KeeperException.NoNodeException nne) {<a name="line.491"></a>
-<span class="sourceLineNo">492</span>      return null;<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    } catch(InterruptedException ie) {<a name="line.493"></a>
-<span class="sourceLineNo">494</span>      zkw.interruptedException(ie);<a name="line.494"></a>
-<span class="sourceLineNo">495</span>    }<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    return children;<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>   * Simple class to hold a node path and node data.<a name="line.500"></a>
-<span class="sourceLineNo">501</span>   * @deprecated Unused<a name="line.501"></a>
-<span class="sourceLineNo">502</span>   */<a name="line.502"></a>
-<span class="sourceLineNo">503</span>  @Deprecated<a name="line.503"></a>
-<span class="sourceLineNo">504</span>  public static class NodeAndData {<a name="line.504"></a>
-<span class="sourceLineNo">505</span>    private String node;<a name="line.505"></a>
-<span class="sourceLineNo">506</span>    private byte [] data;<a name="line.506"></a>
-<span class="sourceLineNo">507</span>    public NodeAndData(String node, byte [] data) {<a name="line.507"></a>
-<span class="sourceLineNo">508</span>      this.node = node;<a name="line.508"></a>
-<span class="sourceLineNo">509</span>      this.data = data;<a name="line.509"></a>
-<span class="sourceLineNo">510</span>    }<a name="line.510"></a>
-<span class="sourceLineNo">511</span>    public String getNode() {<a name="line.511"></a>
-<span class="sourceLineNo">512</span>      return node;<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    }<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    public byte [] getData() {<a name="line.514"></a>
-<span class="sourceLineNo">515</span>      return data;<a name="line.515"></a>
-<span class="sourceLineNo">516</span>    }<a name="line.516"></a>
-<span class="sourceLineNo">517</span>    @Override<a name="line.517"></a>
-<span class="sourceLineNo">518</span>    public String toString() {<a name="line.518"></a>
-<span class="sourceLineNo">519</span>      return node;<a name="line.519"></a>
+<span class="sourceLineNo">321</span>  public static String getParent(String node) {<a name="line.321"></a>
+<span class="sourceLineNo">322</span>    int idx = node.lastIndexOf(ZNodePaths.ZNODE_PATH_SEPARATOR);<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    return idx &lt;= 0 ? null : node.substring(0, idx);<a name="line.323"></a>
+<span class="sourceLineNo">324</span>  }<a name="line.324"></a>
+<span class="sourceLineNo">325</span><a name="line.325"></a>
+<span class="sourceLineNo">326</span>  /**<a name="line.326"></a>
+<span class="sourceLineNo">327</span>   * Get the name of the current node from the specified fully-qualified path.<a name="line.327"></a>
+<span class="sourceLineNo">328</span>   * @param path fully-qualified path<a name="line.328"></a>
+<span class="sourceLineNo">329</span>   * @return name of the current node<a name="line.329"></a>
+<span class="sourceLineNo">330</span>   */<a name="line.330"></a>
+<span class="sourceLineNo">331</span>  public static String getNodeName(String path) {<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    return path.substring(path.lastIndexOf("/")+1);<a name="line.332"></a>
+<span class="sourceLineNo">333</span>  }<a name="line.333"></a>
+<span class="sourceLineNo">334</span><a name="line.334"></a>
+<span class="sourceLineNo">335</span>  //<a name="line.335"></a>
+<span class="sourceLineNo">336</span>  // Existence checks and watches<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>   * Watch the specified znode for delete/create/change events.  The watcher is<a name="line.340"></a>
+<span class="sourceLineNo">341</span>   * set whether or not the node exists.  If the node already exists, the method<a name="line.341"></a>
+<span class="sourceLineNo">342</span>   * returns true.  If the node does not exist, the method returns false.<a name="line.342"></a>
+<span class="sourceLineNo">343</span>   *<a name="line.343"></a>
+<span class="sourceLineNo">344</span>   * @param zkw zk reference<a name="line.344"></a>
+<span class="sourceLineNo">345</span>   * @param znode path of node to watch<a name="line.345"></a>
+<span class="sourceLineNo">346</span>   * @return true if znode exists, false if does not exist or error<a name="line.346"></a>
+<span class="sourceLineNo">347</span>   * @throws KeeperException if unexpected zookeeper exception<a name="line.347"></a>
+<span class="sourceLineNo">348</span>   */<a name="line.348"></a>
+<span class="sourceLineNo">349</span>  public static boolean watchAndCheckExists(ZKWatcher zkw, String znode)<a name="line.349"></a>
+<span class="sourceLineNo">350</span>  throws KeeperException {<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    try {<a name="line.351"></a>
+<span class="sourceLineNo">352</span>      Stat s = zkw.getRecoverableZooKeeper().exists(znode, zkw);<a name="line.352"></a>
+<span class="sourceLineNo">353</span>      boolean exists = s != null ? true : false;<a name="line.353"></a>
+<span class="sourceLineNo">354</span>      if (exists) {<a name="line.354"></a>
+<span class="sourceLineNo">355</span>        LOG.debug(zkw.prefix("Set watcher on existing znode=" + znode));<a name="line.355"></a>
+<span class="sourceLineNo">356</span>      } else {<a name="line.356"></a>
+<span class="sourceLineNo">357</span>        LOG.debug(zkw.prefix("Set watcher on znode that does not yet exist, " + znode));<a name="line.357"></a>
+<span class="sourceLineNo">358</span>      }<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      return exists;<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    } catch (KeeperException e) {<a name="line.360"></a>
+<span class="sourceLineNo">361</span>      LOG.warn(zkw.prefix("Unable to set watcher on znode " + znode), e);<a name="line.361"></a>
+<span class="sourceLineNo">362</span>      zkw.keeperException(e);<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      return false;<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    } catch (InterruptedException e) {<a name="line.364"></a>
+<span class="sourceLineNo">365</span>      LOG.warn(zkw.prefix("Unable to set watcher on znode " + znode), e);<a name="line.365"></a>
+<span class="sourceLineNo">366</span>      zkw.interruptedException(e);<a name="line.366"></a>
+<span class="sourceLineNo">367</span>      return false;<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>  /**<a name="line.371"></a>
+<span class="sourceLineNo">372</span>   * Watch the specified znode, but only if exists. Useful when watching<a name="line.372"></a>
+<span class="sourceLineNo">373</span>   * for deletions. Uses .getData() (and handles NoNodeException) instead<a name="line.373"></a>
+<span class="sourceLineNo">374</span>   * of .exists() to accomplish this, as .getData() will only set a watch if<a name="line.374"></a>
+<span class="sourceLineNo">375</span>   * the znode exists.<a name="line.375"></a>
+<span class="sourceLineNo">376</span>   * @param zkw zk reference<a name="line.376"></a>
+<span class="sourceLineNo">377</span>   * @param znode path of node to watch<a name="line.377"></a>
+<span class="sourceLineNo">378</span>   * @return true if the watch is set, false if node does not exists<a name="line.378"></a>
+<span class="sourceLineNo">379</span>   * @throws KeeperException if unexpected zookeeper exception<a name="line.379"></a>
+<span class="sourceLineNo">380</span>   */<a name="line.380"></a>
+<span class="sourceLineNo">381</span>  public static boolean setWatchIfNodeExists(ZKWatcher zkw, String znode)<a name="line.381"></a>
+<span class="sourceLineNo">382</span>      throws KeeperException {<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    try {<a name="line.383"></a>
+<span class="sourceLineNo">384</span>      zkw.getRecoverableZooKeeper().getData(znode, true, null);<a name="line.384"></a>
+<span class="sourceLineNo">385</span>      return true;<a name="line.385"></a>
+<span class="sourceLineNo">386</span>    } catch (NoNodeException e) {<a name="line.386"></a>
+<span class="sourceLineNo">387</span>      return false;<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    } catch (InterruptedException e) {<a name="line.388"></a>
+<span class="sourceLineNo">389</span>      LOG.warn(zkw.prefix("Unable to set watcher on znode " + znode), e);<a name="line.389"></a>
+<span class="sourceLineNo">390</span>      zkw.interruptedException(e);<a name="line.390"></a>
+<span class="sourceLineNo">391</span>      return false;<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">395</span>  /**<a name="line.395"></a>
+<span class="sourceLineNo">396</span>   * Check if the specified node exists.  Sets no watches.<a name="line.396"></a>
+<span class="sourceLineNo">397</span>   *<a name="line.397"></a>
+<span class="sourceLineNo">398</span>   * @param zkw zk reference<a name="line.398"></a>
+<span class="sourceLineNo">399</span>   * @param znode path of node to watch<a name="line.399"></a>
+<span class="sourceLineNo">400</span>   * @return version of the node if it exists, -1 if does not exist<a name="line.400"></a>
+<span class="sourceLineNo">401</span>   * @throws KeeperException if unexpected zookeeper exception<a name="line.401"></a>
+<span class="sourceLineNo">402</span>   */<a name="line.402"></a>
+<span class="sourceLineNo">403</span>  public static int checkExists(ZKWatcher zkw, String znode)<a name="line.403"></a>
+<span class="sourceLineNo">404</span>  throws KeeperException {<a name="line.404"></a>
+<span class="sourceLineNo">405</span>    try {<a name="line.405"></a>
+<span class="sourceLineNo">406</span>      Stat s = zkw.getRecoverableZooKeeper().exists(znode, null);<a name="line.406"></a>
+<span class="sourceLineNo">407</span>      return s != null ? s.getVersion() : -1;<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    } catch (KeeperException e) {<a name="line.408"></a>
+<span class="sourceLineNo">409</span>      LOG.warn(zkw.prefix("Unable to set watcher on znode (" + znode + ")"), e);<a name="line.409"></a>
+<span class="sourceLineNo">410</span>      zkw.keeperException(e);<a name="line.410"></a>
+<span class="sourceLineNo">411</span>      return -1;<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    } catch (InterruptedException e) {<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      LOG.warn(zkw.prefix("Unable to set watcher on znode (" + znode + ")"), e);<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      zkw.interruptedException(e);<a name="line.414"></a>
+<span class="sourceLineNo">415</span>      return -1;<a name="line.415"></a>
+<span class="sourceLineNo">416</span>    }<a name="line.416"></a>
+<span class="sourceLineNo">417</span>  }<a name="line.417"></a>
+<span class="sourceLineNo">418</span><a name="line.418"></a>
+<span class="sourceLineNo">419</span>  //<a name="line.419"></a>
+<span class="sourceLineNo">420</span>  // Znode listings<a name="line.420"></a>
+<span class="sourceLineNo">421</span>  //<a name="line.421"></a>
+<span class="sourceLineNo">422</span><a name="line.422"></a>
+<span class="sourceLineNo">423</span>  /**<a name="line.423"></a>
+<span class="sourceLineNo">424</span>   * Lists the children znodes of the specified znode.  Also sets a watch on<a name="line.424"></a>
+<span class="sourceLineNo">425</span>   * the specified znode which will capture a NodeDeleted event on the specified<a name="line.425"></a>
+<span class="sourceLineNo">426</span>   * znode as well as NodeChildrenChanged if any children of the specified znode<a name="line.426"></a>
+<span class="sourceLineNo">427</span>   * are created or deleted.<a name="line.427"></a>
+<span class="sourceLineNo">428</span>   *<a name="line.428"></a>
+<span class="sourceLineNo">429</span>   * Returns null if the specified node does not exist.  Otherwise returns a<a name="line.429"></a>
+<span class="sourceLineNo">430</span>   * list of children of the specified node.  If the node exists but it has no<a name="line.430"></a>
+<span class="sourceLineNo">431</span>   * children, an empty list will be returned.<a name="line.431"></a>
+<span class="sourceLineNo">432</span>   *<a name="line.432"></a>
+<span class="sourceLineNo">433</span>   * @param zkw zk reference<a name="line.433"></a>
+<span class="sourceLineNo">434</span>   * @param znode path of node to list and watch children of<a name="line.434"></a>
+<span class="sourceLineNo">435</span>   * @return list of children of the specified node, an empty list if the node<a name="line.435"></a>
+<span class="sourceLineNo">436</span>   *          exists but has no children, and null if the node does not exist<a name="line.436"></a>
+<span class="sourceLineNo">437</span>   * @throws KeeperException if unexpected zookeeper exception<a name="line.437"></a>
+<span class="sourceLineNo">438</span>   */<a name="line.438"></a>
+<span class="sourceLineNo">439</span>  public static List&lt;String&gt; listChildrenAndWatchForNewChildren(<a name="line.439"></a>
+<span class="sourceLineNo">440</span>          ZKWatcher zkw, String znode)<a name="line.440"></a>
+<span class="sourceLineNo">441</span>  throws KeeperException {<a name="line.441"></a>
+<span class="sourceLineNo">442</span>    try {<a name="line.442"></a>
+<span class="sourceLineNo">443</span>      List&lt;String&gt; children = zkw.getRecoverableZooKeeper().getChildren(znode, zkw);<a name="line.443"></a>
+<span class="sourceLineNo">444</span>      return children;<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    } catch(KeeperException.NoNodeException ke) {<a name="line.445"></a>
+<span class="sourceLineNo">446</span>      LOG.debug(zkw.prefix("Unable to list children of znode " + znode + " " +<a name="line.446"></a>
+<span class="sourceLineNo">447</span>          "because node does not exist (not an error)"));<a name="line.447"></a>
+<span class="sourceLineNo">448</span>      return null;<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    } catch (KeeperException e) {<a name="line.449"></a>
+<span class="sourceLineNo">450</span>      LOG.warn(zkw.prefix("Unable to list children of znode " + znode + " "), e);<a name="line.450"></a>
+<span class="sourceLineNo">451</span>      zkw.keeperException(e);<a name="line.451"></a>
+<span class="sourceLineNo">452</span>      return null;<a name="line.452"></a>
+<span class="sourceLineNo">453</span>    } catch (InterruptedException e) {<a name="line.453"></a>
+<span class="sourceLineNo">454</span>      LOG.warn(zkw.prefix("Unable to list children of znode " + znode + " "

<TRUNCATED>

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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/project-info.html
----------------------------------------------------------------------
diff --git a/project-info.html b/project-info.html
index 241a294..5a1710c 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="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -340,7 +340,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/project-reports.html
----------------------------------------------------------------------
diff --git a/project-reports.html b/project-reports.html
index e746aca..5af9f27 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="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Generated Reports</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -310,7 +310,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/project-summary.html
----------------------------------------------------------------------
diff --git a/project-summary.html b/project-summary.html
index 0484cbe..0155940 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="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Summary</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -336,7 +336,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/pseudo-distributed.html
----------------------------------------------------------------------
diff --git a/pseudo-distributed.html b/pseudo-distributed.html
index a72eedc..787314e 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="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
 Running Apache HBase (TM) in pseudo-distributed mode
@@ -313,7 +313,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/replication.html
----------------------------------------------------------------------
diff --git a/replication.html b/replication.html
index 0c480dc..1a12581 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="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Apache HBase (TM) Replication
@@ -308,7 +308,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/resources.html
----------------------------------------------------------------------
diff --git a/resources.html b/resources.html
index dfffa00..bd0bfac 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="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Other Apache HBase (TM) Resources</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -336,7 +336,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/source-repository.html
----------------------------------------------------------------------
diff --git a/source-repository.html b/source-repository.html
index b04b887..095d6fe 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="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Source Code Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -304,7 +304,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/sponsors.html
----------------------------------------------------------------------
diff --git a/sponsors.html b/sponsors.html
index 611c357..fad3fb2 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="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Apache HBase™ Sponsors</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -338,7 +338,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/supportingprojects.html
----------------------------------------------------------------------
diff --git a/supportingprojects.html b/supportingprojects.html
index 7d7894f..f5de38e 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="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Supporting Projects</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -525,7 +525,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/team-list.html
----------------------------------------------------------------------
diff --git a/team-list.html b/team-list.html
index 7a51915..a505393 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="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <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" />
@@ -717,7 +717,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/testdevapidocs/index-all.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/index-all.html b/testdevapidocs/index-all.html
index f9a9048..999e685 100644
--- a/testdevapidocs/index-all.html
+++ b/testdevapidocs/index-all.html
@@ -4162,7 +4162,9 @@
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/http/TestSSLHttpServer.html#clientSslFactory">clientSslFactory</a></span> - Static variable in class org.apache.hadoop.hbase.http.<a href="org/apache/hadoop/hbase/http/TestSSLHttpServer.html" title="class in org.apache.hadoop.hbase.http">TestSSLHttpServer</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/testclassification/ClientTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><span class="typeNameLink">ClientTests</span></a> - Interface in <a href="org/apache/hadoop/hbase/testclassification/package-summary.html">org.apache.hadoop.hbase.testclassification</a></dt>
-<dd>&nbsp;</dd>
+<dd>
+<div class="block">Tag a test as related to the client.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#clone-org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.FlushDescriptor-long-">clone(WALProtos.FlushDescriptor, long)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html" title="class in org.apache.hadoop.hbase.regionserver">TestHRegionReplayEvents</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/snapshot/TestSnapshotClientRetries.html#cloneAndAssertOneRetry-java.lang.String-org.apache.hadoop.hbase.TableName-">cloneAndAssertOneRetry(String, TableName)</a></span> - Method in class org.apache.hadoop.hbase.snapshot.<a href="org/apache/hadoop/hbase/snapshot/TestSnapshotClientRetries.html" title="class in org.apache.hadoop.hbase.snapshot">TestSnapshotClientRetries</a></dt>
@@ -5997,7 +5999,9 @@
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/RegionAsTable.html#coprocessorService-java.lang.Class-byte:A-byte:A-org.apache.hadoop.hbase.client.coprocessor.Batch.Call-org.apache.hadoop.hbase.client.coprocessor.Batch.Callback-">coprocessorService(Class&lt;T&gt;, byte[], byte[], Batch.Call&lt;T, R&gt;, Batch.Callback&lt;R&gt;)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/RegionAsTable.html" title="class in org.apache.hadoop.hbase.regionserver">RegionAsTable</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/testclassification/CoprocessorTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><span class="typeNameLink">CoprocessorTests</span></a> - Interface in <a href="org/apache/hadoop/hbase/testclassification/package-summary.html">org.apache.hadoop.hbase.testclassification</a></dt>
-<dd>&nbsp;</dd>
+<dd>
+<div class="block">Tag a test as related to coprocessors.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/visibility/TestVisibilityLabels.html#COPYRIGHT">COPYRIGHT</a></span> - Static variable in class org.apache.hadoop.hbase.security.visibility.<a href="org/apache/hadoop/hbase/security/visibility/TestVisibilityLabels.html" title="class in org.apache.hadoop.hbase.security.visibility">TestVisibilityLabels</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/visibility/TestVisibilityLabelsReplication.html#COPYRIGHT">COPYRIGHT</a></span> - Static variable in class org.apache.hadoop.hbase.security.visibility.<a href="org/apache/hadoop/hbase/security/visibility/TestVisibilityLabelsReplication.html" title="class in org.apache.hadoop.hbase.security.visibility">TestVisibilityLabelsReplication</a></dt>
@@ -11387,7 +11391,9 @@
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/filter/FilterTestingCluster.html#FilterTestingCluster--">FilterTestingCluster()</a></span> - Constructor for class org.apache.hadoop.hbase.filter.<a href="org/apache/hadoop/hbase/filter/FilterTestingCluster.html" title="class in org.apache.hadoop.hbase.filter">FilterTestingCluster</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/testclassification/FilterTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><span class="typeNameLink">FilterTests</span></a> - Interface in <a href="org/apache/hadoop/hbase/testclassification/package-summary.html">org.apache.hadoop.hbase.testclassification</a></dt>
-<dd>&nbsp;</dd>
+<dd>
+<div class="block">Tag a test as related to the <code>org.apache.hadoop.hbase.filter</code> package.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestFromClientSide3.html#find-org.apache.hadoop.hbase.TableName-">find(TableName)</a></span> - Static method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestFromClientSide3.html" title="class in org.apache.hadoop.hbase.client">TestFromClientSide3</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestFromClientSide3.html#find-org.apache.hadoop.hbase.TableName-java.lang.Class-">find(TableName, Class&lt;T&gt;)</a></span> - Static method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestFromClientSide3.html" title="class in org.apache.hadoop.hbase.client">TestFromClientSide3</a></dt>
@@ -11522,7 +11528,9 @@
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/filter/TestRegexComparator.TestCase.html#flags">flags</a></span> - Variable in class org.apache.hadoop.hbase.filter.<a href="org/apache/hadoop/hbase/filter/TestRegexComparator.TestCase.html" title="class in org.apache.hadoop.hbase.filter">TestRegexComparator.TestCase</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/testclassification/FlakeyTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><span class="typeNameLink">FlakeyTests</span></a> - Interface in <a href="org/apache/hadoop/hbase/testclassification/package-summary.html">org.apache.hadoop.hbase.testclassification</a></dt>
-<dd>&nbsp;</dd>
+<dd>
+<div class="block">Tag a test as failing commonly on public build infrastructure.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/hfile/RandomDistribution.Flat.html#Flat-java.util.Random-int-int-">Flat(Random, int, int)</a></span> - Constructor for class org.apache.hadoop.hbase.io.hfile.<a href="org/apache/hadoop/hbase/io/hfile/RandomDistribution.Flat.html" title="class in org.apache.hadoop.hbase.io.hfile">RandomDistribution.Flat</a></dt>
 <dd>
 <div class="block">Generate random integers from min (inclusive) to max (exclusive)
@@ -17904,7 +17912,8 @@
 <dt><a href="org/apache/hadoop/hbase/testclassification/IntegrationTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><span class="typeNameLink">IntegrationTests</span></a> - Interface in <a href="org/apache/hadoop/hbase/testclassification/package-summary.html">org.apache.hadoop.hbase.testclassification</a></dt>
 <dd>
 <div class="block">Tag a test as 'integration/system' test, meaning that the test class has the following
- characteristics: 
+ characteristics:
+ 
    Possibly takes hours to complete
    Can be run on a mini cluster or an actual cluster
    Can make changes to the given cluster (starting stopping daemons, etc)
@@ -18053,7 +18062,9 @@
 <div class="block">Presumes init will be called by a single thread prior to any access of other methods.</div>
 </dd>
 <dt><a href="org/apache/hadoop/hbase/testclassification/IOTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><span class="typeNameLink">IOTests</span></a> - Interface in <a href="org/apache/hadoop/hbase/testclassification/package-summary.html">org.apache.hadoop.hbase.testclassification</a></dt>
-<dd>&nbsp;</dd>
+<dd>
+<div class="block">Tag a test as related to the <code>org.apache.hadoop.hbase.io</code> package.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/wal/IOTestProvider.IOTestWAL.html#IOTestWAL-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.fs.Path-java.lang.String-java.lang.String-org.apache.hadoop.conf.Configuration-java.util.List-boolean-java.lang.String-java.lang.String-">IOTestWAL(FileSystem, Path, String, String, Configuration, List&lt;WALActionsListener&gt;, boolean, String, String)</a></span> - Constructor for class org.apache.hadoop.hbase.wal.<a href="org/apache/hadoop/hbase/wal/IOTestProvider.IOTestWAL.html" title="class in org.apache.hadoop.hbase.wal">IOTestProvider.IOTestWAL</a></dt>
 <dd>
 <div class="block">Create an edit log at the given <code>dir</code> location.</div>
@@ -19154,7 +19165,8 @@
 <dd>
 <div class="block">Tag a test as 'large', meaning that the test class has the following
  characteristics:
-  - executed in an isolated JVM.</div>
+ 
+  executed in an isolated JVM.</div>
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/hfile/NanoTimer.html#last">last</a></span> - Variable in class org.apache.hadoop.hbase.io.hfile.<a href="org/apache/hadoop/hbase/io/hfile/NanoTimer.html" title="class in org.apache.hadoop.hbase.io.hfile">NanoTimer</a></dt>
 <dd>&nbsp;</dd>
@@ -21283,7 +21295,9 @@
 <dt><a href="org/apache/hadoop/hbase/tool/MapreduceTestingShim.MapreduceV2Shim.html" title="class in org.apache.hadoop.hbase.tool"><span class="typeNameLink">MapreduceTestingShim.MapreduceV2Shim</span></a> - Class in <a href="org/apache/hadoop/hbase/tool/package-summary.html">org.apache.hadoop.hbase.tool</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/testclassification/MapReduceTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><span class="typeNameLink">MapReduceTests</span></a> - Interface in <a href="org/apache/hadoop/hbase/testclassification/package-summary.html">org.apache.hadoop.hbase.testclassification</a></dt>
-<dd>&nbsp;</dd>
+<dd>
+<div class="block">Tag a test as related to mapred or mapreduce.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/MapreduceTestingShim.MapreduceV1Shim.html#MapreduceV1Shim--">MapreduceV1Shim()</a></span> - Constructor for class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/MapreduceTestingShim.MapreduceV1Shim.html" title="class in org.apache.hadoop.hbase.mapreduce">MapreduceTestingShim.MapreduceV1Shim</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/tool/MapreduceTestingShim.MapreduceV1Shim.html#MapreduceV1Shim--">MapreduceV1Shim()</a></span> - Constructor for class org.apache.hadoop.hbase.tool.<a href="org/apache/hadoop/hbase/tool/MapreduceTestingShim.MapreduceV1Shim.html" title="class in org.apache.hadoop.hbase.tool">MapreduceTestingShim.MapreduceV1Shim</a></dt>
@@ -21436,7 +21450,9 @@
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/snapshot/TestSnapshotClientRetries.MasterSyncObserver.html#MasterSyncObserver--">MasterSyncObserver()</a></span> - Constructor for class org.apache.hadoop.hbase.snapshot.<a href="org/apache/hadoop/hbase/snapshot/TestSnapshotClientRetries.MasterSyncObserver.html" title="class in org.apache.hadoop.hbase.snapshot">TestSnapshotClientRetries.MasterSyncObserver</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/testclassification/MasterTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><span class="typeNameLink">MasterTests</span></a> - Interface in <a href="org/apache/hadoop/hbase/testclassification/package-summary.html">org.apache.hadoop.hbase.testclassification</a></dt>
-<dd>&nbsp;</dd>
+<dd>
+<div class="block">Tag a test as related to the master.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coprocessor/TestMasterCoprocessorExceptionWithAbort.MasterTracker.html#MasterTracker-org.apache.hadoop.hbase.zookeeper.ZKWatcher-java.lang.String-org.apache.hadoop.hbase.Abortable-">MasterTracker(ZKWatcher, String, Abortable)</a></span> - Constructor for class org.apache.hadoop.hbase.coprocessor.<a href="org/apache/hadoop/hbase/coprocessor/TestMasterCoprocessorExceptionWithAbort.MasterTracker.html" title="class in org.apache.hadoop.hbase.coprocessor">TestMasterCoprocessorExceptionWithAbort.MasterTracker</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coprocessor/TestMasterCoprocessorExceptionWithRemove.MasterTracker.html#MasterTracker-org.apache.hadoop.hbase.zookeeper.ZKWatcher-java.lang.String-org.apache.hadoop.hbase.Abortable-">MasterTracker(ZKWatcher, String, Abortable)</a></span> - Constructor for class org.apache.hadoop.hbase.coprocessor.<a href="org/apache/hadoop/hbase/coprocessor/TestMasterCoprocessorExceptionWithRemove.MasterTracker.html" title="class in org.apache.hadoop.hbase.coprocessor">TestMasterCoprocessorExceptionWithRemove.MasterTracker</a></dt>
@@ -21634,7 +21650,8 @@
 <dd>
 <div class="block">Tag a test as 'Medium', meaning that the test class has the following
  characteristics:
-  - executed in an isolated JVM.</div>
+ 
+  executed in an isolated JVM.</div>
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coprocessor/TestAppendTimeRange.html#mee">mee</a></span> - Static variable in class org.apache.hadoop.hbase.coprocessor.<a href="org/apache/hadoop/hbase/coprocessor/TestAppendTimeRange.html" title="class in org.apache.hadoop.hbase.coprocessor">TestAppendTimeRange</a></dt>
 <dd>&nbsp;</dd>
@@ -21817,7 +21834,9 @@
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/MetricsTableWrapperStub.html#MetricsTableWrapperStub-java.lang.String-">MetricsTableWrapperStub(String)</a></span> - Constructor for class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/MetricsTableWrapperStub.html" title="class in org.apache.hadoop.hbase.regionserver">MetricsTableWrapperStub</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/testclassification/MetricsTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><span class="typeNameLink">MetricsTests</span></a> - Interface in <a href="org/apache/hadoop/hbase/testclassification/package-summary.html">org.apache.hadoop.hbase.testclassification</a></dt>
-<dd>&nbsp;</dd>
+<dd>
+<div class="block">Tag a test that covers our metrics handling.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/HFilePerformanceEvaluation.RowOrientedBenchmark.html#mf">mf</a></span> - Variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/HFilePerformanceEvaluation.RowOrientedBenchmark.html" title="class in org.apache.hadoop.hbase">HFilePerformanceEvaluation.RowOrientedBenchmark</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/snapshot/TestSnapshotManager.html#mfs">mfs</a></span> - Variable in class org.apache.hadoop.hbase.master.snapshot.<a href="org/apache/hadoop/hbase/master/snapshot/TestSnapshotManager.html" title="class in org.apache.hadoop.hbase.master.snapshot">TestSnapshotManager</a></dt>
@@ -21933,7 +21952,9 @@
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html#minWordLen">minWordLen</a></span> - Variable in class org.apache.hadoop.hbase.io.hfile.<a href="org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html" title="class in org.apache.hadoop.hbase.io.hfile">TestHFileSeek.MyOptions</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/testclassification/MiscTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><span class="typeNameLink">MiscTests</span></a> - Interface in <a href="org/apache/hadoop/hbase/testclassification/package-summary.html">org.apache.hadoop.hbase.testclassification</a></dt>
-<dd>&nbsp;</dd>
+<dd>
+<div class="block">Tag a test as not easily falling into any of the below categories.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/hfile/TestHFileBlockIndex.BlockReaderWrapper.html#missCount">missCount</a></span> - Variable in class org.apache.hadoop.hbase.io.hfile.<a href="org/apache/hadoop/hbase/io/hfile/TestHFileBlockIndex.BlockReaderWrapper.html" title="class in org.apache.hadoop.hbase.io.hfile">TestHFileBlockIndex.BlockReaderWrapper</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/test/IntegrationTestBigLinkedList.html#MISSING_ROWS_TO_LOG">MISSING_ROWS_TO_LOG</a></span> - Static variable in class org.apache.hadoop.hbase.test.<a href="org/apache/hadoop/hbase/test/IntegrationTestBigLinkedList.html" title="class in org.apache.hadoop.hbase.test">IntegrationTestBigLinkedList</a></dt>
@@ -28708,7 +28729,9 @@
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coprocessor/TestClassLoading.html#regionServerSystemCoprocessors">regionServerSystemCoprocessors</a></span> - Static variable in class org.apache.hadoop.hbase.coprocessor.<a href="org/apache/hadoop/hbase/coprocessor/TestClassLoading.html" title="class in org.apache.hadoop.hbase.coprocessor">TestClassLoading</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/testclassification/RegionServerTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><span class="typeNameLink">RegionServerTests</span></a> - Interface in <a href="org/apache/hadoop/hbase/testclassification/package-summary.html">org.apache.hadoop.hbase.testclassification</a></dt>
-<dd>&nbsp;</dd>
+<dd>
+<div class="block">Tag a test as related to the regionserver.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestMetaCache.RegionServerWithFakeRpcServices.html#RegionServerWithFakeRpcServices-org.apache.hadoop.conf.Configuration-">RegionServerWithFakeRpcServices(Configuration)</a></span> - Constructor for class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestMetaCache.RegionServerWithFakeRpcServices.html" title="class in org.apache.hadoop.hbase.client">TestMetaCache.RegionServerWithFakeRpcServices</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestClientScannerRPCTimeout.RegionServerWithScanTimeout.html#RegionServerWithScanTimeout-org.apache.hadoop.conf.Configuration-">RegionServerWithScanTimeout(Configuration)</a></span> - Constructor for class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestClientScannerRPCTimeout.RegionServerWithScanTimeout.html" title="class in org.apache.hadoop.hbase.client">TestClientScannerRPCTimeout.RegionServerWithScanTimeout</a></dt>
@@ -28958,7 +28981,9 @@
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/ReplicationSourceDummy.html#ReplicationSourceDummy--">ReplicationSourceDummy()</a></span> - Constructor for class org.apache.hadoop.hbase.replication.<a href="org/apache/hadoop/hbase/replication/ReplicationSourceDummy.html" title="class in org.apache.hadoop.hbase.replication">ReplicationSourceDummy</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/testclassification/ReplicationTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><span class="typeNameLink">ReplicationTests</span></a> - Interface in <a href="org/apache/hadoop/hbase/testclassification/package-summary.html">org.apache.hadoop.hbase.testclassification</a></dt>
-<dd>&nbsp;</dd>
+<dd>
+<div class="block">Tag a test as related to replication.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/TestReplicationStateHBaseImpl.html#replicationZNode">replicationZNode</a></span> - Static variable in class org.apache.hadoop.hbase.replication.<a href="org/apache/hadoop/hbase/replication/TestReplicationStateHBaseImpl.html" title="class in org.apache.hadoop.hbase.replication">TestReplicationStateHBaseImpl</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/TestReplicationStateZKImpl.html#replicationZNode">replicationZNode</a></span> - Static variable in class org.apache.hadoop.hbase.replication.<a href="org/apache/hadoop/hbase/replication/TestReplicationStateZKImpl.html" title="class in org.apache.hadoop.hbase.replication">TestReplicationStateZKImpl</a></dt>
@@ -29355,7 +29380,9 @@
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/test/IntegrationTestBigLinkedListWithVisibility.html#RESTRICTED">RESTRICTED</a></span> - Static variable in class org.apache.hadoop.hbase.test.<a href="org/apache/hadoop/hbase/test/IntegrationTestBigLinkedListWithVisibility.html" title="class in org.apache.hadoop.hbase.test">IntegrationTestBigLinkedListWithVisibility</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/testclassification/RestTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><span class="typeNameLink">RestTests</span></a> - Interface in <a href="org/apache/hadoop/hbase/testclassification/package-summary.html">org.apache.hadoop.hbase.testclassification</a></dt>
-<dd>&nbsp;</dd>
+<dd>
+<div class="block">Tag a test as related to the REST capability of HBase.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coprocessor/TestRowProcessorEndpoint.RowProcessorEndpoint.FriendsOfFriendsProcessor.html#result">result</a></span> - Variable in class org.apache.hadoop.hbase.coprocessor.<a href="org/apache/hadoop/hbase/coprocessor/TestRowProcessorEndpoint.RowProcessorEndpoint.FriendsOfFriendsProcessor.html" title="class in org.apache.hadoop.hbase.coprocessor">TestRowProcessorEndpoint.RowProcessorEndpoint.FriendsOfFriendsProcessor</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestHStore.html#result">result</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestHStore.html" title="class in org.apache.hadoop.hbase.regionserver">TestHStore</a></dt>
@@ -30352,7 +30379,9 @@
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRegionServerReportForDuty.MyRegionServer.html#rpcStubCreatedFlag">rpcStubCreatedFlag</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRegionServerReportForDuty.MyRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionServerReportForDuty.MyRegionServer</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/testclassification/RPCTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><span class="typeNameLink">RPCTests</span></a> - Interface in <a href="org/apache/hadoop/hbase/testclassification/package-summary.html">org.apache.hadoop.hbase.testclassification</a></dt>
-<dd>&nbsp;</dd>
+<dd>
+<div class="block">Tag a test as related to RPC.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestClientScannerRPCTimeout.html#rpcTimeout">rpcTimeout</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestClientScannerRPCTimeout.html" title="class in org.apache.hadoop.hbase.client">TestClientScannerRPCTimeout</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestClientNoCluster.RpcTimeoutConnection.html#RpcTimeoutConnection-org.apache.hadoop.conf.Configuration-java.util.concurrent.ExecutorService-org.apache.hadoop.hbase.security.User-">RpcTimeoutConnection(Configuration, ExecutorService, User)</a></span> - Constructor for class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestClientNoCluster.RpcTimeoutConnection.html" title="class in org.apache.hadoop.hbase.client">TestClientNoCluster.RpcTimeoutConnection</a></dt>
@@ -31386,7 +31415,9 @@
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/LauncherSecurityManager.html#securityManager">securityManager</a></span> - Variable in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/LauncherSecurityManager.html" title="class in org.apache.hadoop.hbase.util">LauncherSecurityManager</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/testclassification/SecurityTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><span class="typeNameLink">SecurityTests</span></a> - Interface in <a href="org/apache/hadoop/hbase/testclassification/package-summary.html">org.apache.hadoop.hbase.testclassification</a></dt>
-<dd>&nbsp;</dd>
+<dd>
+<div class="block">Tag a test as related to security.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html#seed">seed</a></span> - Variable in class org.apache.hadoop.hbase.io.hfile.<a href="org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html" title="class in org.apache.hadoop.hbase.io.hfile">TestHFileSeek.MyOptions</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/TestFSUtils.html#seed">seed</a></span> - Static variable in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/TestFSUtils.html" title="class in org.apache.hadoop.hbase.util">TestFSUtils</a></dt>
@@ -34616,9 +34647,11 @@
 <dd>
 <div class="block">Tag a test as 'small', meaning that the test class has the following
  characteristics:
-  - can be run simultaneously with other small tests in the same JVM
-  - ideally, last less than 15 seconds
-  - does not use a cluster</div>
+ 
+  can be run simultaneously with other small tests in the same JVM
+  ideally, last less than 15 seconds
+  does not use a cluster
+ </div>
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestAsyncProcess.html#sn">sn</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestAsyncProcess.html" title="class in org.apache.hadoop.hbase.client">TestAsyncProcess</a></dt>
 <dd>&nbsp;</dd>
@@ -61786,9 +61819,15 @@ the order they are declared.</div>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/TestCoprocessorScanPolicy.ScanObserver.html#versions">versions</a></span> - Variable in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/TestCoprocessorScanPolicy.ScanObserver.html" title="class in org.apache.hadoop.hbase.util">TestCoprocessorScanPolicy.ScanObserver</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/testclassification/VerySlowMapReduceTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><span class="typeNameLink">VerySlowMapReduceTests</span></a> - Interface in <a href="org/apache/hadoop/hbase/testclassification/package-summary.html">org.apache.hadoop.hbase.testclassification</a></dt>
-<dd>&nbsp;</dd>
+<dd>
+<div class="block">Tag a test as related to  mapreduce and taking longer than 5 minutes to run on public build
+ infrastructure.</div>
+</dd>
 <dt><a href="org/apache/hadoop/hbase/testclassification/VerySlowRegionServerTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><span class="typeNameLink">VerySlowRegionServerTests</span></a> - Interface in <a href="org/apache/hadoop/hbase/testclassification/package-summary.html">org.apache.hadoop.hbase.testclassification</a></dt>
-<dd>&nbsp;</dd>
+<dd>
+<div class="block">Tag a test as region tests which takes longer than 5 minutes to run on public build
+ infrastructure.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/IntegrationTestIngestWithVisibilityLabels.html#VISIBILITY_EXPS">VISIBILITY_EXPS</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/IntegrationTestIngestWithVisibilityLabels.html" title="class in org.apache.hadoop.hbase">IntegrationTestIngestWithVisibilityLabels</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/test/IntegrationTestWithCellVisibilityLoadAndVerify.html#VISIBILITY_EXPS">VISIBILITY_EXPS</a></span> - Static variable in class org.apache.hadoop.hbase.test.<a href="org/apache/hadoop/hbase/test/IntegrationTestWithCellVisibilityLoadAndVerify.html" title="class in org.apache.hadoop.hbase.test">IntegrationTestWithCellVisibilityLoadAndVerify</a></dt>
@@ -62992,7 +63031,7 @@ the order they are declared.</div>
 <dt><a href="org/apache/hadoop/hbase/testclassification/ZKTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><span class="typeNameLink">ZKTests</span></a> - Interface in <a href="org/apache/hadoop/hbase/testclassification/package-summary.html">org.apache.hadoop.hbase.testclassification</a></dt>
 <dd>
 <div class="block">For tests which test the general logic of zookeeper related tools, such as
- <code>RecoverableZooKeeper</code>, not for tests which depend on zookeeper.</div>
+ <code>RecoverableZooKeeper</code>, not for tests which depend on ZooKeeper.</div>
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/TestReplicationStateBasic.html#zkTimeoutCount">zkTimeoutCount</a></span> - Static variable in class org.apache.hadoop.hbase.replication.<a href="org/apache/hadoop/hbase/replication/TestReplicationStateBasic.html" title="class in org.apache.hadoop.hbase.replication">TestReplicationStateBasic</a></dt>
 <dd>&nbsp;</dd>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/testdevapidocs/org/apache/hadoop/hbase/testclassification/ClientTests.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/testclassification/ClientTests.html b/testdevapidocs/org/apache/hadoop/hbase/testclassification/ClientTests.html
index ad6bc87..83ea1e0 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/testclassification/ClientTests.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/testclassification/ClientTests.html
@@ -96,6 +96,25 @@
 <hr>
 <br>
 <pre>public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/testclassification/ClientTests.html#line.40">ClientTests</a></pre>
+<div class="block">Tag a test as related to the client. This tests the hbase-client package and all of the client
+ tests in hbase-server.</div>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../org/apache/hadoop/hbase/testclassification/ClientTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>ClientTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/CoprocessorTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>CoprocessorTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/FilterTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>FilterTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/FlakeyTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>FlakeyTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/IOTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>IOTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/MapReduceTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>MapReduceTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/MasterTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>MasterTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/MiscTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>MiscTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/RegionServerTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>RegionServerTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/ReplicationTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>ReplicationTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/RPCTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>RPCTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/SecurityTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>SecurityTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/VerySlowRegionServerTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>VerySlowRegionServerTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/VerySlowMapReduceTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>VerySlowMapReduceTests</code></a></dd>
+</dl>
 </li>
 </ul>
 </div>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/testdevapidocs/org/apache/hadoop/hbase/testclassification/CoprocessorTests.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/testclassification/CoprocessorTests.html b/testdevapidocs/org/apache/hadoop/hbase/testclassification/CoprocessorTests.html
index 7727a4b..b796250 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/testclassification/CoprocessorTests.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/testclassification/CoprocessorTests.html
@@ -95,7 +95,25 @@
 <li class="blockList">
 <hr>
 <br>
-<pre>public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/testclassification/CoprocessorTests.html#line.40">CoprocessorTests</a></pre>
+<pre>public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/testclassification/CoprocessorTests.html#line.39">CoprocessorTests</a></pre>
+<div class="block">Tag a test as related to coprocessors.</div>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../org/apache/hadoop/hbase/testclassification/ClientTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>ClientTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/CoprocessorTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>CoprocessorTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/FilterTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>FilterTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/FlakeyTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>FlakeyTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/IOTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>IOTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/MapReduceTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>MapReduceTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/MasterTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>MasterTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/MiscTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>MiscTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/RegionServerTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>RegionServerTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/ReplicationTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>ReplicationTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/RPCTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>RPCTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/SecurityTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>SecurityTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/VerySlowRegionServerTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>VerySlowRegionServerTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/VerySlowMapReduceTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>VerySlowMapReduceTests</code></a></dd>
+</dl>
 </li>
 </ul>
 </div>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/testdevapidocs/org/apache/hadoop/hbase/testclassification/FilterTests.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/testclassification/FilterTests.html b/testdevapidocs/org/apache/hadoop/hbase/testclassification/FilterTests.html
index 5b04609..31e950d 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/testclassification/FilterTests.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/testclassification/FilterTests.html
@@ -95,7 +95,25 @@
 <li class="blockList">
 <hr>
 <br>
-<pre>public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/testclassification/FilterTests.html#line.40">FilterTests</a></pre>
+<pre>public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/testclassification/FilterTests.html#line.39">FilterTests</a></pre>
+<div class="block">Tag a test as related to the <code>org.apache.hadoop.hbase.filter</code> package.</div>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../org/apache/hadoop/hbase/testclassification/ClientTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>ClientTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/CoprocessorTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>CoprocessorTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/FilterTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>FilterTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/FlakeyTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>FlakeyTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/IOTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>IOTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/MapReduceTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>MapReduceTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/MasterTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>MasterTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/MiscTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>MiscTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/RegionServerTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>RegionServerTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/ReplicationTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>ReplicationTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/RPCTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>RPCTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/SecurityTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>SecurityTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/VerySlowRegionServerTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>VerySlowRegionServerTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/VerySlowMapReduceTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>VerySlowMapReduceTests</code></a></dd>
+</dl>
 </li>
 </ul>
 </div>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/testdevapidocs/org/apache/hadoop/hbase/testclassification/FlakeyTests.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/testclassification/FlakeyTests.html b/testdevapidocs/org/apache/hadoop/hbase/testclassification/FlakeyTests.html
index a4040f4..48c2b31 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/testclassification/FlakeyTests.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/testclassification/FlakeyTests.html
@@ -96,6 +96,24 @@
 <hr>
 <br>
 <pre>public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/testclassification/FlakeyTests.html#line.39">FlakeyTests</a></pre>
+<div class="block">Tag a test as failing commonly on public build infrastructure.</div>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../org/apache/hadoop/hbase/testclassification/ClientTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>ClientTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/CoprocessorTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>CoprocessorTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/FilterTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>FilterTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/FlakeyTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>FlakeyTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/IOTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>IOTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/MapReduceTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>MapReduceTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/MasterTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>MasterTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/MiscTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>MiscTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/RegionServerTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>RegionServerTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/ReplicationTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>ReplicationTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/RPCTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>RPCTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/SecurityTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>SecurityTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/VerySlowRegionServerTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>VerySlowRegionServerTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/VerySlowMapReduceTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>VerySlowMapReduceTests</code></a></dd>
+</dl>
 </li>
 </ul>
 </div>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/testdevapidocs/org/apache/hadoop/hbase/testclassification/IOTests.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/testclassification/IOTests.html b/testdevapidocs/org/apache/hadoop/hbase/testclassification/IOTests.html
index 6d741fb..3962cb3 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/testclassification/IOTests.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/testclassification/IOTests.html
@@ -96,6 +96,25 @@
 <hr>
 <br>
 <pre>public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/testclassification/IOTests.html#line.40">IOTests</a></pre>
+<div class="block">Tag a test as related to the <code>org.apache.hadoop.hbase.io</code> package. Things like HFile and
+ the like.</div>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../org/apache/hadoop/hbase/testclassification/ClientTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>ClientTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/CoprocessorTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>CoprocessorTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/FilterTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>FilterTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/FlakeyTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>FlakeyTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/IOTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>IOTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/MapReduceTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>MapReduceTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/MasterTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>MasterTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/MiscTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>MiscTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/RegionServerTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>RegionServerTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/ReplicationTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>ReplicationTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/RPCTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>RPCTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/SecurityTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>SecurityTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/VerySlowRegionServerTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>VerySlowRegionServerTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/VerySlowMapReduceTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>VerySlowMapReduceTests</code></a></dd>
+</dl>
 </li>
 </ul>
 </div>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/testdevapidocs/org/apache/hadoop/hbase/testclassification/IntegrationTests.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/testclassification/IntegrationTests.html b/testdevapidocs/org/apache/hadoop/hbase/testclassification/IntegrationTests.html
index 1bb9d48..a6c511c 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/testclassification/IntegrationTests.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/testclassification/IntegrationTests.html
@@ -95,9 +95,10 @@
 <li class="blockList">
 <hr>
 <br>
-<pre>public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/testclassification/IntegrationTests.html#line.38">IntegrationTests</a></pre>
+<pre>public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/testclassification/IntegrationTests.html#line.39">IntegrationTests</a></pre>
 <div class="block">Tag a test as 'integration/system' test, meaning that the test class has the following
- characteristics: <ul>
+ characteristics:
+ <ul>
   <li> Possibly takes hours to complete</li>
   <li> Can be run on a mini cluster or an actual cluster</li>
   <li> Can make changes to the given cluster (starting stopping daemons, etc)</li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/testdevapidocs/org/apache/hadoop/hbase/testclassification/LargeTests.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/testclassification/LargeTests.html b/testdevapidocs/org/apache/hadoop/hbase/testclassification/LargeTests.html
index 6a39383..cc86cb7 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/testclassification/LargeTests.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/testclassification/LargeTests.html
@@ -95,13 +95,15 @@
 <li class="blockList">
 <hr>
 <br>
-<pre>public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/testclassification/LargeTests.html#line.37">LargeTests</a></pre>
+<pre>public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/testclassification/LargeTests.html#line.38">LargeTests</a></pre>
 <div class="block">Tag a test as 'large', meaning that the test class has the following
  characteristics:
-  - executed in an isolated JVM. Tests can however be executed in different
-    JVM on the same machine simultaneously.
-  - will not have to be executed by the developer before submitting a bug
-  - ideally, last less than 2 minutes to help parallelization
+ <ul>
+  <li>executed in an isolated JVM. Tests can however be executed in different JVM on the same
+  machine simultaneously.</li>
+  <li>will not have to be executed by the developer before submitting a bug</li>
+  <li>ideally, last less than 2 minutes to help parallelization</li>
+ </ul>
 
   It the worst case compared to small or medium, use it only for tests that
     you cannot put in the other categories</div>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/testdevapidocs/org/apache/hadoop/hbase/testclassification/MapReduceTests.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/testclassification/MapReduceTests.html b/testdevapidocs/org/apache/hadoop/hbase/testclassification/MapReduceTests.html
index 7d5b6ad..318ac27 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/testclassification/MapReduceTests.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/testclassification/MapReduceTests.html
@@ -96,6 +96,24 @@
 <hr>
 <br>
 <pre>public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/testclassification/MapReduceTests.html#line.39">MapReduceTests</a></pre>
+<div class="block">Tag a test as related to mapred or mapreduce.</div>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../org/apache/hadoop/hbase/testclassification/ClientTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>ClientTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/CoprocessorTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>CoprocessorTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/FilterTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>FilterTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/FlakeyTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>FlakeyTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/IOTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>IOTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/MapReduceTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>MapReduceTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/MasterTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>MasterTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/MiscTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>MiscTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/RegionServerTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>RegionServerTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/ReplicationTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>ReplicationTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/RPCTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>RPCTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/SecurityTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>SecurityTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/VerySlowRegionServerTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>VerySlowRegionServerTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/VerySlowMapReduceTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>VerySlowMapReduceTests</code></a></dd>
+</dl>
 </li>
 </ul>
 </div>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/testdevapidocs/org/apache/hadoop/hbase/testclassification/MasterTests.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/testclassification/MasterTests.html b/testdevapidocs/org/apache/hadoop/hbase/testclassification/MasterTests.html
index 9910049..6f7b214 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/testclassification/MasterTests.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/testclassification/MasterTests.html
@@ -96,6 +96,24 @@
 <hr>
 <br>
 <pre>public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/testclassification/MasterTests.html#line.39">MasterTests</a></pre>
+<div class="block">Tag a test as related to the master.</div>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../org/apache/hadoop/hbase/testclassification/ClientTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>ClientTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/CoprocessorTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>CoprocessorTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/FilterTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>FilterTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/FlakeyTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>FlakeyTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/IOTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>IOTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/MapReduceTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>MapReduceTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/MasterTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>MasterTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/MiscTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>MiscTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/RegionServerTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>RegionServerTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/ReplicationTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>ReplicationTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/RPCTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>RPCTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/SecurityTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>SecurityTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/VerySlowRegionServerTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>VerySlowRegionServerTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/VerySlowMapReduceTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>VerySlowMapReduceTests</code></a></dd>
+</dl>
 </li>
 </ul>
 </div>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/testdevapidocs/org/apache/hadoop/hbase/testclassification/MediumTests.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/testclassification/MediumTests.html b/testdevapidocs/org/apache/hadoop/hbase/testclassification/MediumTests.html
index 7ddc0e4..d2fc98e 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/testclassification/MediumTests.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/testclassification/MediumTests.html
@@ -95,13 +95,15 @@
 <li class="blockList">
 <hr>
 <br>
-<pre>public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/testclassification/MediumTests.html#line.36">MediumTests</a></pre>
+<pre>public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/testclassification/MediumTests.html#line.37">MediumTests</a></pre>
 <div class="block">Tag a test as 'Medium', meaning that the test class has the following
  characteristics:
-  - executed in an isolated JVM. Tests can however be executed in different
-    JVM on the same machine simultaneously.
-  - will have to be executed by the developer before submitting a bug
-  - ideally, last less than 1 minutes to help parallelization
+ <ul>
+  <li>executed in an isolated JVM. Tests can however be executed in different JVM on the same
+  machine simultaneously.</li>
+  <li>will have to be executed by the developer before submitting a bug</li>
+  <li>ideally, last less than 1 minutes to help parallelization</li>
+ </ul>
 
   Use it for tests that cannot be tagged as 'Small'.</div>
 <dl>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/testdevapidocs/org/apache/hadoop/hbase/testclassification/MetricsTests.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/testclassification/MetricsTests.html b/testdevapidocs/org/apache/hadoop/hbase/testclassification/MetricsTests.html
index b71c810..37d9fb0 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/testclassification/MetricsTests.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/testclassification/MetricsTests.html
@@ -96,6 +96,7 @@
 <hr>
 <br>
 <pre>public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/testclassification/MetricsTests.html#line.24">MetricsTests</a></pre>
+<div class="block">Tag a test that covers our metrics handling.</div>
 </li>
 </ul>
 </div>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/testdevapidocs/org/apache/hadoop/hbase/testclassification/MiscTests.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/testclassification/MiscTests.html b/testdevapidocs/org/apache/hadoop/hbase/testclassification/MiscTests.html
index edeaa18..11614fc 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/testclassification/MiscTests.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/testclassification/MiscTests.html
@@ -96,6 +96,24 @@
 <hr>
 <br>
 <pre>public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/testclassification/MiscTests.html#line.39">MiscTests</a></pre>
+<div class="block">Tag a test as not easily falling into any of the below categories.</div>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../org/apache/hadoop/hbase/testclassification/ClientTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>ClientTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/CoprocessorTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>CoprocessorTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/FilterTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>FilterTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/FlakeyTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>FlakeyTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/IOTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>IOTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/MapReduceTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>MapReduceTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/MasterTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>MasterTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/MiscTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>MiscTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/RegionServerTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>RegionServerTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/ReplicationTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>ReplicationTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/RPCTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>RPCTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/SecurityTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>SecurityTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/VerySlowRegionServerTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>VerySlowRegionServerTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/VerySlowMapReduceTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>VerySlowMapReduceTests</code></a></dd>
+</dl>
 </li>
 </ul>
 </div>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/testdevapidocs/org/apache/hadoop/hbase/testclassification/RPCTests.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/testclassification/RPCTests.html b/testdevapidocs/org/apache/hadoop/hbase/testclassification/RPCTests.html
index 5bc48c2..7caa42c 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/testclassification/RPCTests.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/testclassification/RPCTests.html
@@ -96,6 +96,24 @@
 <hr>
 <br>
 <pre>public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/testclassification/RPCTests.html#line.39">RPCTests</a></pre>
+<div class="block">Tag a test as related to RPC.</div>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../org/apache/hadoop/hbase/testclassification/ClientTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>ClientTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/CoprocessorTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>CoprocessorTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/FilterTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>FilterTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/FlakeyTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>FlakeyTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/IOTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>IOTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/MapReduceTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>MapReduceTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/MasterTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>MasterTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/MiscTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>MiscTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/RegionServerTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>RegionServerTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/ReplicationTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>ReplicationTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/RPCTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>RPCTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/SecurityTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>SecurityTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/VerySlowRegionServerTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>VerySlowRegionServerTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/VerySlowMapReduceTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>VerySlowMapReduceTests</code></a></dd>
+</dl>
 </li>
 </ul>
 </div>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/testdevapidocs/org/apache/hadoop/hbase/testclassification/RegionServerTests.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/testclassification/RegionServerTests.html b/testdevapidocs/org/apache/hadoop/hbase/testclassification/RegionServerTests.html
index a1f6819..36d54df 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/testclassification/RegionServerTests.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/testclassification/RegionServerTests.html
@@ -95,7 +95,25 @@
 <li class="blockList">
 <hr>
 <br>
-<pre>public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/testclassification/RegionServerTests.html#line.40">RegionServerTests</a></pre>
+<pre>public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/testclassification/RegionServerTests.html#line.39">RegionServerTests</a></pre>
+<div class="block">Tag a test as related to the regionserver.</div>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../org/apache/hadoop/hbase/testclassification/ClientTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>ClientTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/CoprocessorTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>CoprocessorTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/FilterTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>FilterTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/FlakeyTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>FlakeyTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/IOTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>IOTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/MapReduceTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>MapReduceTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/MasterTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>MasterTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/MiscTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>MiscTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/RegionServerTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>RegionServerTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/ReplicationTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>ReplicationTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/RPCTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>RPCTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/SecurityTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>SecurityTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/VerySlowRegionServerTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>VerySlowRegionServerTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/VerySlowMapReduceTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>VerySlowMapReduceTests</code></a></dd>
+</dl>
 </li>
 </ul>
 </div>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/testdevapidocs/org/apache/hadoop/hbase/testclassification/ReplicationTests.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/testclassification/ReplicationTests.html b/testdevapidocs/org/apache/hadoop/hbase/testclassification/ReplicationTests.html
index 2e79b06..4633bc1 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/testclassification/ReplicationTests.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/testclassification/ReplicationTests.html
@@ -96,6 +96,24 @@
 <hr>
 <br>
 <pre>public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/testclassification/ReplicationTests.html#line.39">ReplicationTests</a></pre>
+<div class="block">Tag a test as related to replication.</div>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../org/apache/hadoop/hbase/testclassification/ClientTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>ClientTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/CoprocessorTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>CoprocessorTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/FilterTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>FilterTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/FlakeyTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>FlakeyTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/IOTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>IOTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/MapReduceTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>MapReduceTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/MasterTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>MasterTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/MiscTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>MiscTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/RegionServerTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>RegionServerTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/ReplicationTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>ReplicationTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/RPCTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>RPCTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/SecurityTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>SecurityTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/VerySlowRegionServerTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>VerySlowRegionServerTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/VerySlowMapReduceTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>VerySlowMapReduceTests</code></a></dd>
+</dl>
 </li>
 </ul>
 </div>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/testdevapidocs/org/apache/hadoop/hbase/testclassification/RestTests.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/testclassification/RestTests.html b/testdevapidocs/org/apache/hadoop/hbase/testclassification/RestTests.html
index e4e0280..e7703ac 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/testclassification/RestTests.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/testclassification/RestTests.html
@@ -95,7 +95,25 @@
 <li class="blockList">
 <hr>
 <br>
-<pre>public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/testclassification/RestTests.html#line.40">RestTests</a></pre>
+<pre>public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/testclassification/RestTests.html#line.39">RestTests</a></pre>
+<div class="block">Tag a test as related to the REST capability of HBase.</div>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../org/apache/hadoop/hbase/testclassification/ClientTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>ClientTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/CoprocessorTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>CoprocessorTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/FilterTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>FilterTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/FlakeyTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>FlakeyTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/IOTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>IOTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/MapReduceTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>MapReduceTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/MasterTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>MasterTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/MiscTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>MiscTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/RegionServerTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>RegionServerTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/ReplicationTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>ReplicationTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/RPCTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>RPCTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/SecurityTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>SecurityTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/VerySlowRegionServerTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>VerySlowRegionServerTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/VerySlowMapReduceTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>VerySlowMapReduceTests</code></a></dd>
+</dl>
 </li>
 </ul>
 </div>


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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKUtil.NodeAndData.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKUtil.NodeAndData.html b/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKUtil.NodeAndData.html
index d782297..1d818e8 100644
--- a/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKUtil.NodeAndData.html
+++ b/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKUtil.NodeAndData.html
@@ -117,7 +117,7 @@ var activeTableTab = "activeTableTab";
 </div>
 <br>
 <pre><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.504">ZKUtil.NodeAndData</a>
+public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.514">ZKUtil.NodeAndData</a>
 extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 <div class="block">Simple class to hold a node path and node data.</div>
 </li>
@@ -237,7 +237,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>node</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.NodeAndData.html#line.505">node</a></pre>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.NodeAndData.html#line.515">node</a></pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
 </li>
 </ul>
@@ -247,7 +247,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>data</h4>
-<pre>private&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.NodeAndData.html#line.506">data</a></pre>
+<pre>private&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.NodeAndData.html#line.516">data</a></pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
 </li>
 </ul>
@@ -265,7 +265,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>NodeAndData</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.NodeAndData.html#line.507">NodeAndData</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;node,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.NodeAndData.html#line.517">NodeAndData</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;node,
                    byte[]&nbsp;data)</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
 </li>
@@ -284,7 +284,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getNode</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.NodeAndData.html#line.511">getNode</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.NodeAndData.html#line.521">getNode</a>()</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
 </li>
 </ul>
@@ -294,7 +294,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getData</h4>
-<pre>public&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.NodeAndData.html#line.514">getData</a>()</pre>
+<pre>public&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.NodeAndData.html#line.524">getData</a>()</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
 </li>
 </ul>
@@ -304,7 +304,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>toString</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.NodeAndData.html#line.518">toString</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.NodeAndData.html#line.528">toString</a>()</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
@@ -318,7 +318,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>isEmpty</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.NodeAndData.html#line.521">isEmpty</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.NodeAndData.html#line.531">isEmpty</a>()</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.CreateAndFailSilent.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.CreateAndFailSilent.html b/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.CreateAndFailSilent.html
index 7f84ef0..78df77c 100644
--- a/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.CreateAndFailSilent.html
+++ b/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.CreateAndFailSilent.html
@@ -118,7 +118,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.html#line.1509">ZKUtil.ZKUtilOp.CreateAndFailSilent</a>
+<pre>public static final class <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.html#line.1518">ZKUtil.ZKUtilOp.CreateAndFailSilent</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKUtil.ZKUtilOp</a></pre>
 <div class="block">ZKUtilOp representing createAndFailSilent in ZooKeeper
  (attempt to create node, ignore error if already exists)</div>
@@ -241,7 +241,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilO
 <ul class="blockListLast">
 <li class="blockList">
 <h4>data</h4>
-<pre>private&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.CreateAndFailSilent.html#line.1510">data</a></pre>
+<pre>private&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.CreateAndFailSilent.html#line.1519">data</a></pre>
 </li>
 </ul>
 </li>
@@ -258,7 +258,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilO
 <ul class="blockListLast">
 <li class="blockList">
 <h4>CreateAndFailSilent</h4>
-<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.CreateAndFailSilent.html#line.1512">CreateAndFailSilent</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path,
+<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.CreateAndFailSilent.html#line.1521">CreateAndFailSilent</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path,
                             byte[]&nbsp;data)</pre>
 </li>
 </ul>
@@ -276,7 +276,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilO
 <ul class="blockList">
 <li class="blockList">
 <h4>getData</h4>
-<pre>public&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.CreateAndFailSilent.html#line.1517">getData</a>()</pre>
+<pre>public&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.CreateAndFailSilent.html#line.1526">getData</a>()</pre>
 </li>
 </ul>
 <a name="equals-java.lang.Object-">
@@ -285,7 +285,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilO
 <ul class="blockList">
 <li class="blockList">
 <h4>equals</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.CreateAndFailSilent.html#line.1522">equals</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;o)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.CreateAndFailSilent.html#line.1531">equals</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;o)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a></code>&nbsp;in class&nbsp;<code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>
@@ -298,7 +298,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilO
 <ul class="blockListLast">
 <li class="blockList">
 <h4>hashCode</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.CreateAndFailSilent.html#line.1531">hashCode</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.CreateAndFailSilent.html#line.1544">hashCode</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a></code>&nbsp;in class&nbsp;<code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.DeleteNodeFailSilent.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.DeleteNodeFailSilent.html b/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.DeleteNodeFailSilent.html
index ec364dc..8b93330 100644
--- a/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.DeleteNodeFailSilent.html
+++ b/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.DeleteNodeFailSilent.html
@@ -118,7 +118,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.html#line.1541">ZKUtil.ZKUtilOp.DeleteNodeFailSilent</a>
+<pre>public static final class <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.html#line.1554">ZKUtil.ZKUtilOp.DeleteNodeFailSilent</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKUtil.ZKUtilOp</a></pre>
 <div class="block">ZKUtilOp representing deleteNodeFailSilent in ZooKeeper
  (attempt to delete node, ignore error if node doesn't exist)</div>
@@ -217,7 +217,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilO
 <ul class="blockListLast">
 <li class="blockList">
 <h4>DeleteNodeFailSilent</h4>
-<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.DeleteNodeFailSilent.html#line.1542">DeleteNodeFailSilent</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path)</pre>
+<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.DeleteNodeFailSilent.html#line.1555">DeleteNodeFailSilent</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path)</pre>
 </li>
 </ul>
 </li>
@@ -234,7 +234,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilO
 <ul class="blockList">
 <li class="blockList">
 <h4>equals</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.DeleteNodeFailSilent.html#line.1547">equals</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;o)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.DeleteNodeFailSilent.html#line.1560">equals</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;o)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a></code>&nbsp;in class&nbsp;<code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>
@@ -247,7 +247,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilO
 <ul class="blockListLast">
 <li class="blockList">
 <h4>hashCode</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.DeleteNodeFailSilent.html#line.1555">hashCode</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.DeleteNodeFailSilent.html#line.1572">hashCode</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a></code>&nbsp;in class&nbsp;<code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.SetData.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.SetData.html b/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.SetData.html
index e142f58..33b3d96 100644
--- a/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.SetData.html
+++ b/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.SetData.html
@@ -118,7 +118,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.html#line.1563">ZKUtil.ZKUtilOp.SetData</a>
+<pre>public static final class <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.html#line.1580">ZKUtil.ZKUtilOp.SetData</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKUtil.ZKUtilOp</a></pre>
 <div class="block">ZKUtilOp representing setData in ZooKeeper</div>
 </li>
@@ -240,7 +240,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilO
 <ul class="blockListLast">
 <li class="blockList">
 <h4>data</h4>
-<pre>private&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.SetData.html#line.1564">data</a></pre>
+<pre>private&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.SetData.html#line.1581">data</a></pre>
 </li>
 </ul>
 </li>
@@ -257,7 +257,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilO
 <ul class="blockListLast">
 <li class="blockList">
 <h4>SetData</h4>
-<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.SetData.html#line.1566">SetData</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path,
+<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.SetData.html#line.1583">SetData</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path,
                 byte[]&nbsp;data)</pre>
 </li>
 </ul>
@@ -275,7 +275,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilO
 <ul class="blockList">
 <li class="blockList">
 <h4>getData</h4>
-<pre>public&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.SetData.html#line.1571">getData</a>()</pre>
+<pre>public&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.SetData.html#line.1588">getData</a>()</pre>
 </li>
 </ul>
 <a name="equals-java.lang.Object-">
@@ -284,7 +284,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilO
 <ul class="blockList">
 <li class="blockList">
 <h4>equals</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.SetData.html#line.1576">equals</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;o)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.SetData.html#line.1593">equals</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;o)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a></code>&nbsp;in class&nbsp;<code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>
@@ -297,7 +297,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilO
 <ul class="blockListLast">
 <li class="blockList">
 <h4>hashCode</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.SetData.html#line.1585">hashCode</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.SetData.html#line.1606">hashCode</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a></code>&nbsp;in class&nbsp;<code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.html b/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.html
index 86c4871..37f8969 100644
--- a/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.html
+++ b/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.html
@@ -117,7 +117,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public abstract static class <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.1470">ZKUtil.ZKUtilOp</a>
+<pre>public abstract static class <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html#line.1479">ZKUtil.ZKUtilOp</a>
 extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 <div class="block">Represents an action taken by ZKUtil, e.g. createAndFailSilent.
  These actions are higher-level than ZKOp actions, which represent
@@ -259,7 +259,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>path</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.html#line.1471">path</a></pre>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.html#line.1480">path</a></pre>
 </li>
 </ul>
 </li>
@@ -276,7 +276,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ZKUtilOp</h4>
-<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.html#line.1473">ZKUtilOp</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path)</pre>
+<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.html#line.1482">ZKUtilOp</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path)</pre>
 </li>
 </ul>
 </li>
@@ -293,7 +293,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>createAndFailSilent</h4>
-<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKUtil.ZKUtilOp</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.html#line.1480">createAndFailSilent</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path,
+<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKUtil.ZKUtilOp</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.html#line.1489">createAndFailSilent</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path,
                                                   byte[]&nbsp;data)</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -307,7 +307,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteNodeFailSilent</h4>
-<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKUtil.ZKUtilOp</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.html#line.1487">deleteNodeFailSilent</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path)</pre>
+<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKUtil.ZKUtilOp</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.html#line.1496">deleteNodeFailSilent</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path)</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>a deleteNodeFailSilent ZKUtilOP</dd>
@@ -320,7 +320,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>setData</h4>
-<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKUtil.ZKUtilOp</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.html#line.1494">setData</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path,
+<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKUtil.ZKUtilOp</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.html#line.1503">setData</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path,
                                       byte[]&nbsp;data)</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -334,7 +334,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getPath</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.html#line.1501">getPath</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.html#line.1510">getPath</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>path to znode where the ZKOp will occur</dd>


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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.SetData.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.SetData.html b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.SetData.html
index 81f531b..04be024 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.SetData.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.SetData.html
@@ -53,2036 +53,2078 @@
 <span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.AuthUtil;<a name="line.45"></a>
 <span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.46"></a>
 <span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.HConstants;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.security.Superusers;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.shaded.com.google.protobuf.InvalidProtocolBufferException;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil.ZKUtilOp.CreateAndFailSilent;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil.ZKUtilOp.DeleteNodeFailSilent;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil.ZKUtilOp.SetData;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.security.SecurityUtil;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.security.UserGroupInformation;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.security.authentication.util.KerberosUtil;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.zookeeper.AsyncCallback;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.zookeeper.CreateMode;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.zookeeper.KeeperException;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.zookeeper.KeeperException.NoNodeException;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.zookeeper.Op;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.zookeeper.Watcher;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.zookeeper.ZooDefs.Ids;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.zookeeper.ZooDefs.Perms;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.zookeeper.ZooKeeper;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.zookeeper.client.ZooKeeperSaslClient;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.zookeeper.data.ACL;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.zookeeper.data.Id;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.zookeeper.data.Stat;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.zookeeper.proto.CreateRequest;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.zookeeper.proto.DeleteRequest;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.zookeeper.proto.SetDataRequest;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.zookeeper.server.ZooKeeperSaslServer;<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> * Internal HBase utility class for ZooKeeper.<a name="line.81"></a>
-<span class="sourceLineNo">082</span> *<a name="line.82"></a>
-<span class="sourceLineNo">083</span> * &lt;p&gt;Contains only static methods and constants.<a name="line.83"></a>
-<span class="sourceLineNo">084</span> *<a name="line.84"></a>
-<span class="sourceLineNo">085</span> * &lt;p&gt;Methods all throw {@link KeeperException} if there is an unexpected<a name="line.85"></a>
-<span class="sourceLineNo">086</span> * zookeeper exception, so callers of these methods must handle appropriately.<a name="line.86"></a>
-<span class="sourceLineNo">087</span> * If ZK is required for the operation, the server will need to be aborted.<a name="line.87"></a>
-<span class="sourceLineNo">088</span> */<a name="line.88"></a>
-<span class="sourceLineNo">089</span>@InterfaceAudience.Private<a name="line.89"></a>
-<span class="sourceLineNo">090</span>public class ZKUtil {<a name="line.90"></a>
-<span class="sourceLineNo">091</span>  private static final Log LOG = LogFactory.getLog(ZKUtil.class);<a name="line.91"></a>
-<span class="sourceLineNo">092</span><a name="line.92"></a>
-<span class="sourceLineNo">093</span>  private static int zkDumpConnectionTimeOut;<a name="line.93"></a>
-<span class="sourceLineNo">094</span><a name="line.94"></a>
-<span class="sourceLineNo">095</span>  /**<a name="line.95"></a>
-<span class="sourceLineNo">096</span>   * Creates a new connection to ZooKeeper, pulling settings and ensemble config<a name="line.96"></a>
-<span class="sourceLineNo">097</span>   * from the specified configuration object using methods from {@link ZKConfig}.<a name="line.97"></a>
-<span class="sourceLineNo">098</span>   *<a name="line.98"></a>
-<span class="sourceLineNo">099</span>   * Sets the connection status monitoring watcher to the specified watcher.<a name="line.99"></a>
-<span class="sourceLineNo">100</span>   *<a name="line.100"></a>
-<span class="sourceLineNo">101</span>   * @param conf configuration to pull ensemble and other settings from<a name="line.101"></a>
-<span class="sourceLineNo">102</span>   * @param watcher watcher to monitor connection changes<a name="line.102"></a>
-<span class="sourceLineNo">103</span>   * @return connection to zookeeper<a name="line.103"></a>
-<span class="sourceLineNo">104</span>   * @throws IOException if unable to connect to zk or config problem<a name="line.104"></a>
-<span class="sourceLineNo">105</span>   */<a name="line.105"></a>
-<span class="sourceLineNo">106</span>  public static RecoverableZooKeeper connect(Configuration conf, Watcher watcher)<a name="line.106"></a>
-<span class="sourceLineNo">107</span>  throws IOException {<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    String ensemble = ZKConfig.getZKQuorumServersString(conf);<a name="line.108"></a>
-<span class="sourceLineNo">109</span>    return connect(conf, ensemble, watcher);<a name="line.109"></a>
-<span class="sourceLineNo">110</span>  }<a name="line.110"></a>
-<span class="sourceLineNo">111</span><a name="line.111"></a>
-<span class="sourceLineNo">112</span>  public static RecoverableZooKeeper connect(Configuration conf, String ensemble,<a name="line.112"></a>
-<span class="sourceLineNo">113</span>      Watcher watcher)<a name="line.113"></a>
-<span class="sourceLineNo">114</span>  throws IOException {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    return connect(conf, ensemble, watcher, null);<a name="line.115"></a>
-<span class="sourceLineNo">116</span>  }<a name="line.116"></a>
-<span class="sourceLineNo">117</span><a name="line.117"></a>
-<span class="sourceLineNo">118</span>  public static RecoverableZooKeeper connect(Configuration conf, String ensemble,<a name="line.118"></a>
-<span class="sourceLineNo">119</span>      Watcher watcher, final String identifier)<a name="line.119"></a>
-<span class="sourceLineNo">120</span>  throws IOException {<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    if(ensemble == null) {<a name="line.121"></a>
-<span class="sourceLineNo">122</span>      throw new IOException("Unable to determine ZooKeeper ensemble");<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    }<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    int timeout = conf.getInt(HConstants.ZK_SESSION_TIMEOUT,<a name="line.124"></a>
-<span class="sourceLineNo">125</span>        HConstants.DEFAULT_ZK_SESSION_TIMEOUT);<a name="line.125"></a>
-<span class="sourceLineNo">126</span>    if (LOG.isTraceEnabled()) {<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      LOG.trace(identifier + " opening connection to ZooKeeper ensemble=" + ensemble);<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    }<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    int retry = conf.getInt("zookeeper.recovery.retry", 3);<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    int retryIntervalMillis =<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      conf.getInt("zookeeper.recovery.retry.intervalmill", 1000);<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    int maxSleepTime = conf.getInt("zookeeper.recovery.retry.maxsleeptime", 60000);<a name="line.132"></a>
-<span class="sourceLineNo">133</span>    zkDumpConnectionTimeOut = conf.getInt("zookeeper.dump.connection.timeout",<a name="line.133"></a>
-<span class="sourceLineNo">134</span>        1000);<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    return new RecoverableZooKeeper(ensemble, timeout, watcher,<a name="line.135"></a>
-<span class="sourceLineNo">136</span>        retry, retryIntervalMillis, maxSleepTime, identifier);<a name="line.136"></a>
-<span class="sourceLineNo">137</span>  }<a name="line.137"></a>
-<span class="sourceLineNo">138</span><a name="line.138"></a>
-<span class="sourceLineNo">139</span>  /**<a name="line.139"></a>
-<span class="sourceLineNo">140</span>   * Log in the current zookeeper server process using the given configuration<a name="line.140"></a>
-<span class="sourceLineNo">141</span>   * keys for the credential file and login principal.<a name="line.141"></a>
-<span class="sourceLineNo">142</span>   *<a name="line.142"></a>
-<span class="sourceLineNo">143</span>   * &lt;p&gt;&lt;strong&gt;This is only applicable when running on secure hbase&lt;/strong&gt;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>   * On regular HBase (without security features), this will safely be ignored.<a name="line.144"></a>
-<span class="sourceLineNo">145</span>   * &lt;/p&gt;<a name="line.145"></a>
+<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.security.Superusers;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil.ZKUtilOp.CreateAndFailSilent;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil.ZKUtilOp.DeleteNodeFailSilent;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil.ZKUtilOp.SetData;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.security.SecurityUtil;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.security.UserGroupInformation;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.security.authentication.util.KerberosUtil;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.zookeeper.AsyncCallback;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.zookeeper.CreateMode;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.zookeeper.KeeperException;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.zookeeper.KeeperException.NoNodeException;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.zookeeper.Op;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.zookeeper.Watcher;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.zookeeper.ZooDefs.Ids;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.zookeeper.ZooDefs.Perms;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.zookeeper.ZooKeeper;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.zookeeper.client.ZooKeeperSaslClient;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.zookeeper.data.ACL;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.zookeeper.data.Id;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.zookeeper.data.Stat;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.zookeeper.proto.CreateRequest;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.zookeeper.proto.DeleteRequest;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.zookeeper.proto.SetDataRequest;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.zookeeper.server.ZooKeeperSaslServer;<a name="line.75"></a>
+<span class="sourceLineNo">076</span><a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.shaded.com.google.protobuf.InvalidProtocolBufferException;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos;<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> * Internal HBase utility class for ZooKeeper.<a name="line.82"></a>
+<span class="sourceLineNo">083</span> *<a name="line.83"></a>
+<span class="sourceLineNo">084</span> * &lt;p&gt;Contains only static methods and constants.<a name="line.84"></a>
+<span class="sourceLineNo">085</span> *<a name="line.85"></a>
+<span class="sourceLineNo">086</span> * &lt;p&gt;Methods all throw {@link KeeperException} if there is an unexpected<a name="line.86"></a>
+<span class="sourceLineNo">087</span> * zookeeper exception, so callers of these methods must handle appropriately.<a name="line.87"></a>
+<span class="sourceLineNo">088</span> * If ZK is required for the operation, the server will need to be aborted.<a name="line.88"></a>
+<span class="sourceLineNo">089</span> */<a name="line.89"></a>
+<span class="sourceLineNo">090</span>@InterfaceAudience.Private<a name="line.90"></a>
+<span class="sourceLineNo">091</span>public final class ZKUtil {<a name="line.91"></a>
+<span class="sourceLineNo">092</span>  private static final Log LOG = LogFactory.getLog(ZKUtil.class);<a name="line.92"></a>
+<span class="sourceLineNo">093</span><a name="line.93"></a>
+<span class="sourceLineNo">094</span>  private static int zkDumpConnectionTimeOut;<a name="line.94"></a>
+<span class="sourceLineNo">095</span><a name="line.95"></a>
+<span class="sourceLineNo">096</span>  private ZKUtil() {<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>   * Creates a new connection to ZooKeeper, pulling settings and ensemble config<a name="line.100"></a>
+<span class="sourceLineNo">101</span>   * from the specified configuration object using methods from {@link ZKConfig}.<a name="line.101"></a>
+<span class="sourceLineNo">102</span>   *<a name="line.102"></a>
+<span class="sourceLineNo">103</span>   * Sets the connection status monitoring watcher to the specified watcher.<a name="line.103"></a>
+<span class="sourceLineNo">104</span>   *<a name="line.104"></a>
+<span class="sourceLineNo">105</span>   * @param conf configuration to pull ensemble and other settings from<a name="line.105"></a>
+<span class="sourceLineNo">106</span>   * @param watcher watcher to monitor connection changes<a name="line.106"></a>
+<span class="sourceLineNo">107</span>   * @return connection to zookeeper<a name="line.107"></a>
+<span class="sourceLineNo">108</span>   * @throws IOException if unable to connect to zk or config problem<a name="line.108"></a>
+<span class="sourceLineNo">109</span>   */<a name="line.109"></a>
+<span class="sourceLineNo">110</span>  public static RecoverableZooKeeper connect(Configuration conf, Watcher watcher)<a name="line.110"></a>
+<span class="sourceLineNo">111</span>  throws IOException {<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    String ensemble = ZKConfig.getZKQuorumServersString(conf);<a name="line.112"></a>
+<span class="sourceLineNo">113</span>    return connect(conf, ensemble, watcher);<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>  public static RecoverableZooKeeper connect(Configuration conf, String ensemble,<a name="line.116"></a>
+<span class="sourceLineNo">117</span>      Watcher watcher)<a name="line.117"></a>
+<span class="sourceLineNo">118</span>  throws IOException {<a name="line.118"></a>
+<span class="sourceLineNo">119</span>    return connect(conf, ensemble, watcher, null);<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>  public static RecoverableZooKeeper connect(Configuration conf, String ensemble,<a name="line.122"></a>
+<span class="sourceLineNo">123</span>      Watcher watcher, final String identifier)<a name="line.123"></a>
+<span class="sourceLineNo">124</span>  throws IOException {<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    if(ensemble == null) {<a name="line.125"></a>
+<span class="sourceLineNo">126</span>      throw new IOException("Unable to determine ZooKeeper ensemble");<a name="line.126"></a>
+<span class="sourceLineNo">127</span>    }<a name="line.127"></a>
+<span class="sourceLineNo">128</span>    int timeout = conf.getInt(HConstants.ZK_SESSION_TIMEOUT,<a name="line.128"></a>
+<span class="sourceLineNo">129</span>        HConstants.DEFAULT_ZK_SESSION_TIMEOUT);<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    if (LOG.isTraceEnabled()) {<a name="line.130"></a>
+<span class="sourceLineNo">131</span>      LOG.trace(identifier + " opening connection to ZooKeeper ensemble=" + ensemble);<a name="line.131"></a>
+<span class="sourceLineNo">132</span>    }<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    int retry = conf.getInt("zookeeper.recovery.retry", 3);<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    int retryIntervalMillis =<a name="line.134"></a>
+<span class="sourceLineNo">135</span>      conf.getInt("zookeeper.recovery.retry.intervalmill", 1000);<a name="line.135"></a>
+<span class="sourceLineNo">136</span>    int maxSleepTime = conf.getInt("zookeeper.recovery.retry.maxsleeptime", 60000);<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    zkDumpConnectionTimeOut = conf.getInt("zookeeper.dump.connection.timeout",<a name="line.137"></a>
+<span class="sourceLineNo">138</span>        1000);<a name="line.138"></a>
+<span class="sourceLineNo">139</span>    return new RecoverableZooKeeper(ensemble, timeout, watcher,<a name="line.139"></a>
+<span class="sourceLineNo">140</span>        retry, retryIntervalMillis, maxSleepTime, identifier);<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>   * Log in the current zookeeper server process using the given configuration<a name="line.144"></a>
+<span class="sourceLineNo">145</span>   * keys for the credential file and login principal.<a name="line.145"></a>
 <span class="sourceLineNo">146</span>   *<a name="line.146"></a>
-<span class="sourceLineNo">147</span>   * @param conf The configuration data to use<a name="line.147"></a>
-<span class="sourceLineNo">148</span>   * @param keytabFileKey Property key used to configure the path to the credential file<a name="line.148"></a>
-<span class="sourceLineNo">149</span>   * @param userNameKey Property key used to configure the login principal<a name="line.149"></a>
-<span class="sourceLineNo">150</span>   * @param hostname Current hostname to use in any credentials<a name="line.150"></a>
-<span class="sourceLineNo">151</span>   * @throws IOException underlying exception from SecurityUtil.login() call<a name="line.151"></a>
-<span class="sourceLineNo">152</span>   */<a name="line.152"></a>
-<span class="sourceLineNo">153</span>  public static void loginServer(Configuration conf, String keytabFileKey,<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      String userNameKey, String hostname) throws IOException {<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    login(conf, keytabFileKey, userNameKey, hostname,<a name="line.155"></a>
-<span class="sourceLineNo">156</span>          ZooKeeperSaslServer.LOGIN_CONTEXT_NAME_KEY,<a name="line.156"></a>
-<span class="sourceLineNo">157</span>          JaasConfiguration.SERVER_KEYTAB_KERBEROS_CONFIG_NAME);<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>  /**<a name="line.160"></a>
-<span class="sourceLineNo">161</span>   * Log in the current zookeeper client using the given configuration<a name="line.161"></a>
-<span class="sourceLineNo">162</span>   * keys for the credential file and login principal.<a name="line.162"></a>
-<span class="sourceLineNo">163</span>   *<a name="line.163"></a>
-<span class="sourceLineNo">164</span>   * &lt;p&gt;&lt;strong&gt;This is only applicable when running on secure hbase&lt;/strong&gt;<a name="line.164"></a>
-<span class="sourceLineNo">165</span>   * On regular HBase (without security features), this will safely be ignored.<a name="line.165"></a>
-<span class="sourceLineNo">166</span>   * &lt;/p&gt;<a name="line.166"></a>
+<span class="sourceLineNo">147</span>   * &lt;p&gt;&lt;strong&gt;This is only applicable when running on secure hbase&lt;/strong&gt;<a name="line.147"></a>
+<span class="sourceLineNo">148</span>   * On regular HBase (without security features), this will safely be ignored.<a name="line.148"></a>
+<span class="sourceLineNo">149</span>   * &lt;/p&gt;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>   *<a name="line.150"></a>
+<span class="sourceLineNo">151</span>   * @param conf The configuration data to use<a name="line.151"></a>
+<span class="sourceLineNo">152</span>   * @param keytabFileKey Property key used to configure the path to the credential file<a name="line.152"></a>
+<span class="sourceLineNo">153</span>   * @param userNameKey Property key used to configure the login principal<a name="line.153"></a>
+<span class="sourceLineNo">154</span>   * @param hostname Current hostname to use in any credentials<a name="line.154"></a>
+<span class="sourceLineNo">155</span>   * @throws IOException underlying exception from SecurityUtil.login() call<a name="line.155"></a>
+<span class="sourceLineNo">156</span>   */<a name="line.156"></a>
+<span class="sourceLineNo">157</span>  public static void loginServer(Configuration conf, String keytabFileKey,<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      String userNameKey, String hostname) throws IOException {<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    login(conf, keytabFileKey, userNameKey, hostname,<a name="line.159"></a>
+<span class="sourceLineNo">160</span>          ZooKeeperSaslServer.LOGIN_CONTEXT_NAME_KEY,<a name="line.160"></a>
+<span class="sourceLineNo">161</span>          JaasConfiguration.SERVER_KEYTAB_KERBEROS_CONFIG_NAME);<a name="line.161"></a>
+<span class="sourceLineNo">162</span>  }<a name="line.162"></a>
+<span class="sourceLineNo">163</span><a name="line.163"></a>
+<span class="sourceLineNo">164</span>  /**<a name="line.164"></a>
+<span class="sourceLineNo">165</span>   * Log in the current zookeeper client using the given configuration<a name="line.165"></a>
+<span class="sourceLineNo">166</span>   * keys for the credential file and login principal.<a name="line.166"></a>
 <span class="sourceLineNo">167</span>   *<a name="line.167"></a>
-<span class="sourceLineNo">168</span>   * @param conf The configuration data to use<a name="line.168"></a>
-<span class="sourceLineNo">169</span>   * @param keytabFileKey Property key used to configure the path to the credential file<a name="line.169"></a>
-<span class="sourceLineNo">170</span>   * @param userNameKey Property key used to configure the login principal<a name="line.170"></a>
-<span class="sourceLineNo">171</span>   * @param hostname Current hostname to use in any credentials<a name="line.171"></a>
-<span class="sourceLineNo">172</span>   * @throws IOException underlying exception from SecurityUtil.login() call<a name="line.172"></a>
-<span class="sourceLineNo">173</span>   */<a name="line.173"></a>
-<span class="sourceLineNo">174</span>  public static void loginClient(Configuration conf, String keytabFileKey,<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      String userNameKey, String hostname) throws IOException {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    login(conf, keytabFileKey, userNameKey, hostname,<a name="line.176"></a>
-<span class="sourceLineNo">177</span>          ZooKeeperSaslClient.LOGIN_CONTEXT_NAME_KEY,<a name="line.177"></a>
-<span class="sourceLineNo">178</span>          JaasConfiguration.CLIENT_KEYTAB_KERBEROS_CONFIG_NAME);<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>   * Log in the current process using the given configuration keys for the<a name="line.182"></a>
-<span class="sourceLineNo">183</span>   * credential file and login principal.<a name="line.183"></a>
-<span class="sourceLineNo">184</span>   *<a name="line.184"></a>
-<span class="sourceLineNo">185</span>   * &lt;p&gt;&lt;strong&gt;This is only applicable when running on secure hbase&lt;/strong&gt;<a name="line.185"></a>
-<span class="sourceLineNo">186</span>   * On regular HBase (without security features), this will safely be ignored.<a name="line.186"></a>
-<span class="sourceLineNo">187</span>   * &lt;/p&gt;<a name="line.187"></a>
+<span class="sourceLineNo">168</span>   * &lt;p&gt;&lt;strong&gt;This is only applicable when running on secure hbase&lt;/strong&gt;<a name="line.168"></a>
+<span class="sourceLineNo">169</span>   * On regular HBase (without security features), this will safely be ignored.<a name="line.169"></a>
+<span class="sourceLineNo">170</span>   * &lt;/p&gt;<a name="line.170"></a>
+<span class="sourceLineNo">171</span>   *<a name="line.171"></a>
+<span class="sourceLineNo">172</span>   * @param conf The configuration data to use<a name="line.172"></a>
+<span class="sourceLineNo">173</span>   * @param keytabFileKey Property key used to configure the path to the credential file<a name="line.173"></a>
+<span class="sourceLineNo">174</span>   * @param userNameKey Property key used to configure the login principal<a name="line.174"></a>
+<span class="sourceLineNo">175</span>   * @param hostname Current hostname to use in any credentials<a name="line.175"></a>
+<span class="sourceLineNo">176</span>   * @throws IOException underlying exception from SecurityUtil.login() call<a name="line.176"></a>
+<span class="sourceLineNo">177</span>   */<a name="line.177"></a>
+<span class="sourceLineNo">178</span>  public static void loginClient(Configuration conf, String keytabFileKey,<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      String userNameKey, String hostname) throws IOException {<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    login(conf, keytabFileKey, userNameKey, hostname,<a name="line.180"></a>
+<span class="sourceLineNo">181</span>          ZooKeeperSaslClient.LOGIN_CONTEXT_NAME_KEY,<a name="line.181"></a>
+<span class="sourceLineNo">182</span>          JaasConfiguration.CLIENT_KEYTAB_KERBEROS_CONFIG_NAME);<a name="line.182"></a>
+<span class="sourceLineNo">183</span>  }<a name="line.183"></a>
+<span class="sourceLineNo">184</span><a name="line.184"></a>
+<span class="sourceLineNo">185</span>  /**<a name="line.185"></a>
+<span class="sourceLineNo">186</span>   * Log in the current process using the given configuration keys for the<a name="line.186"></a>
+<span class="sourceLineNo">187</span>   * credential file and login principal.<a name="line.187"></a>
 <span class="sourceLineNo">188</span>   *<a name="line.188"></a>
-<span class="sourceLineNo">189</span>   * @param conf The configuration data to use<a name="line.189"></a>
-<span class="sourceLineNo">190</span>   * @param keytabFileKey Property key used to configure the path to the credential file<a name="line.190"></a>
-<span class="sourceLineNo">191</span>   * @param userNameKey Property key used to configure the login principal<a name="line.191"></a>
-<span class="sourceLineNo">192</span>   * @param hostname Current hostname to use in any credentials<a name="line.192"></a>
-<span class="sourceLineNo">193</span>   * @param loginContextProperty property name to expose the entry name<a name="line.193"></a>
-<span class="sourceLineNo">194</span>   * @param loginContextName jaas entry name<a name="line.194"></a>
-<span class="sourceLineNo">195</span>   * @throws IOException underlying exception from SecurityUtil.login() call<a name="line.195"></a>
-<span class="sourceLineNo">196</span>   */<a name="line.196"></a>
-<span class="sourceLineNo">197</span>  private static void login(Configuration conf, String keytabFileKey,<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      String userNameKey, String hostname,<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      String loginContextProperty, String loginContextName)<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      throws IOException {<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    if (!isSecureZooKeeper(conf))<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>    // User has specified a jaas.conf, keep this one as the good one.<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    // HBASE_OPTS="-Djava.security.auth.login.config=jaas.conf"<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    if (System.getProperty("java.security.auth.login.config") != null)<a name="line.206"></a>
-<span class="sourceLineNo">207</span>      return;<a name="line.207"></a>
+<span class="sourceLineNo">189</span>   * &lt;p&gt;&lt;strong&gt;This is only applicable when running on secure hbase&lt;/strong&gt;<a name="line.189"></a>
+<span class="sourceLineNo">190</span>   * On regular HBase (without security features), this will safely be ignored.<a name="line.190"></a>
+<span class="sourceLineNo">191</span>   * &lt;/p&gt;<a name="line.191"></a>
+<span class="sourceLineNo">192</span>   *<a name="line.192"></a>
+<span class="sourceLineNo">193</span>   * @param conf The configuration data to use<a name="line.193"></a>
+<span class="sourceLineNo">194</span>   * @param keytabFileKey Property key used to configure the path to the credential file<a name="line.194"></a>
+<span class="sourceLineNo">195</span>   * @param userNameKey Property key used to configure the login principal<a name="line.195"></a>
+<span class="sourceLineNo">196</span>   * @param hostname Current hostname to use in any credentials<a name="line.196"></a>
+<span class="sourceLineNo">197</span>   * @param loginContextProperty property name to expose the entry name<a name="line.197"></a>
+<span class="sourceLineNo">198</span>   * @param loginContextName jaas entry name<a name="line.198"></a>
+<span class="sourceLineNo">199</span>   * @throws IOException underlying exception from SecurityUtil.login() call<a name="line.199"></a>
+<span class="sourceLineNo">200</span>   */<a name="line.200"></a>
+<span class="sourceLineNo">201</span>  private static void login(Configuration conf, String keytabFileKey,<a name="line.201"></a>
+<span class="sourceLineNo">202</span>      String userNameKey, String hostname,<a name="line.202"></a>
+<span class="sourceLineNo">203</span>      String loginContextProperty, String loginContextName)<a name="line.203"></a>
+<span class="sourceLineNo">204</span>      throws IOException {<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    if (!isSecureZooKeeper(conf)) {<a name="line.205"></a>
+<span class="sourceLineNo">206</span>      return;<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    }<a name="line.207"></a>
 <span class="sourceLineNo">208</span><a name="line.208"></a>
-<span class="sourceLineNo">209</span>    // No keytab specified, no auth<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    String keytabFilename = conf.get(keytabFileKey);<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    if (keytabFilename == null) {<a name="line.211"></a>
-<span class="sourceLineNo">212</span>      LOG.warn("no keytab specified for: " + keytabFileKey);<a name="line.212"></a>
-<span class="sourceLineNo">213</span>      return;<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    }<a name="line.214"></a>
-<span class="sourceLineNo">215</span><a name="line.215"></a>
-<span class="sourceLineNo">216</span>    String principalConfig = conf.get(userNameKey, System.getProperty("user.name"));<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    String principalName = SecurityUtil.getServerPrincipal(principalConfig, hostname);<a name="line.217"></a>
-<span class="sourceLineNo">218</span><a name="line.218"></a>
-<span class="sourceLineNo">219</span>    // Initialize the "jaas.conf" for keyTab/principal,<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    // If keyTab is not specified use the Ticket Cache.<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    // and set the zookeeper login context name.<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    JaasConfiguration jaasConf = new JaasConfiguration(loginContextName,<a name="line.222"></a>
-<span class="sourceLineNo">223</span>        principalName, keytabFilename);<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    javax.security.auth.login.Configuration.setConfiguration(jaasConf);<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    System.setProperty(loginContextProperty, loginContextName);<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>  /**<a name="line.228"></a>
-<span class="sourceLineNo">229</span>   * A JAAS configuration that defines the login modules that we want to use for login.<a name="line.229"></a>
-<span class="sourceLineNo">230</span>   */<a name="line.230"></a>
-<span class="sourceLineNo">231</span>  private static class JaasConfiguration extends javax.security.auth.login.Configuration {<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    private static final String SERVER_KEYTAB_KERBEROS_CONFIG_NAME =<a name="line.232"></a>
-<span class="sourceLineNo">233</span>      "zookeeper-server-keytab-kerberos";<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    private static final String CLIENT_KEYTAB_KERBEROS_CONFIG_NAME =<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      "zookeeper-client-keytab-kerberos";<a name="line.235"></a>
-<span class="sourceLineNo">236</span><a name="line.236"></a>
-<span class="sourceLineNo">237</span>    private static final Map&lt;String, String&gt; BASIC_JAAS_OPTIONS = new HashMap&lt;&gt;();<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    static {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>      String jaasEnvVar = System.getenv("HBASE_JAAS_DEBUG");<a name="line.239"></a>
-<span class="sourceLineNo">240</span>      if (jaasEnvVar != null &amp;&amp; "true".equalsIgnoreCase(jaasEnvVar)) {<a name="line.240"></a>
-<span class="sourceLineNo">241</span>        BASIC_JAAS_OPTIONS.put("debug", "true");<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      }<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    }<a name="line.243"></a>
-<span class="sourceLineNo">244</span><a name="line.244"></a>
-<span class="sourceLineNo">245</span>    private static final Map&lt;String,String&gt; KEYTAB_KERBEROS_OPTIONS = new HashMap&lt;&gt;();<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    static {<a name="line.246"></a>
-<span class="sourceLineNo">247</span>      KEYTAB_KERBEROS_OPTIONS.put("doNotPrompt", "true");<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      KEYTAB_KERBEROS_OPTIONS.put("storeKey", "true");<a name="line.248"></a>
-<span class="sourceLineNo">249</span>      KEYTAB_KERBEROS_OPTIONS.put("refreshKrb5Config", "true");<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      KEYTAB_KERBEROS_OPTIONS.putAll(BASIC_JAAS_OPTIONS);<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>    private static final AppConfigurationEntry KEYTAB_KERBEROS_LOGIN =<a name="line.253"></a>
-<span class="sourceLineNo">254</span>      new AppConfigurationEntry(KerberosUtil.getKrb5LoginModuleName(),<a name="line.254"></a>
-<span class="sourceLineNo">255</span>                                LoginModuleControlFlag.REQUIRED,<a name="line.255"></a>
-<span class="sourceLineNo">256</span>                                KEYTAB_KERBEROS_OPTIONS);<a name="line.256"></a>
-<span class="sourceLineNo">257</span><a name="line.257"></a>
-<span class="sourceLineNo">258</span>    private static final AppConfigurationEntry[] KEYTAB_KERBEROS_CONF =<a name="line.258"></a>
-<span class="sourceLineNo">259</span>      new AppConfigurationEntry[]{KEYTAB_KERBEROS_LOGIN};<a name="line.259"></a>
-<span class="sourceLineNo">260</span><a name="line.260"></a>
-<span class="sourceLineNo">261</span>    private javax.security.auth.login.Configuration baseConfig;<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    private final String loginContextName;<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    private final boolean useTicketCache;<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    private final String keytabFile;<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    private final String principal;<a name="line.265"></a>
+<span class="sourceLineNo">209</span>    // User has specified a jaas.conf, keep this one as the good one.<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    // HBASE_OPTS="-Djava.security.auth.login.config=jaas.conf"<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    if (System.getProperty("java.security.auth.login.config") != null) {<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      return;<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>    // No keytab specified, no auth<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    String keytabFilename = conf.get(keytabFileKey);<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    if (keytabFilename == null) {<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      LOG.warn("no keytab specified for: " + keytabFileKey);<a name="line.218"></a>
+<span class="sourceLineNo">219</span>      return;<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    }<a name="line.220"></a>
+<span class="sourceLineNo">221</span><a name="line.221"></a>
+<span class="sourceLineNo">222</span>    String principalConfig = conf.get(userNameKey, System.getProperty("user.name"));<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    String principalName = SecurityUtil.getServerPrincipal(principalConfig, hostname);<a name="line.223"></a>
+<span class="sourceLineNo">224</span><a name="line.224"></a>
+<span class="sourceLineNo">225</span>    // Initialize the "jaas.conf" for keyTab/principal,<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    // If keyTab is not specified use the Ticket Cache.<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    // and set the zookeeper login context name.<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    JaasConfiguration jaasConf = new JaasConfiguration(loginContextName,<a name="line.228"></a>
+<span class="sourceLineNo">229</span>        principalName, keytabFilename);<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    javax.security.auth.login.Configuration.setConfiguration(jaasConf);<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    System.setProperty(loginContextProperty, loginContextName);<a name="line.231"></a>
+<span class="sourceLineNo">232</span>  }<a name="line.232"></a>
+<span class="sourceLineNo">233</span><a name="line.233"></a>
+<span class="sourceLineNo">234</span>  /**<a name="line.234"></a>
+<span class="sourceLineNo">235</span>   * A JAAS configuration that defines the login modules that we want to use for login.<a name="line.235"></a>
+<span class="sourceLineNo">236</span>   */<a name="line.236"></a>
+<span class="sourceLineNo">237</span>  private static class JaasConfiguration extends javax.security.auth.login.Configuration {<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    private static final String SERVER_KEYTAB_KERBEROS_CONFIG_NAME =<a name="line.238"></a>
+<span class="sourceLineNo">239</span>      "zookeeper-server-keytab-kerberos";<a name="line.239"></a>
+<span class="sourceLineNo">240</span>    private static final String CLIENT_KEYTAB_KERBEROS_CONFIG_NAME =<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      "zookeeper-client-keytab-kerberos";<a name="line.241"></a>
+<span class="sourceLineNo">242</span><a name="line.242"></a>
+<span class="sourceLineNo">243</span>    private static final Map&lt;String, String&gt; BASIC_JAAS_OPTIONS = new HashMap&lt;&gt;();<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    static {<a name="line.244"></a>
+<span class="sourceLineNo">245</span>      String jaasEnvVar = System.getenv("HBASE_JAAS_DEBUG");<a name="line.245"></a>
+<span class="sourceLineNo">246</span>      if (jaasEnvVar != null &amp;&amp; "true".equalsIgnoreCase(jaasEnvVar)) {<a name="line.246"></a>
+<span class="sourceLineNo">247</span>        BASIC_JAAS_OPTIONS.put("debug", "true");<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>    private static final Map&lt;String,String&gt; KEYTAB_KERBEROS_OPTIONS = new HashMap&lt;&gt;();<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    static {<a name="line.252"></a>
+<span class="sourceLineNo">253</span>      KEYTAB_KERBEROS_OPTIONS.put("doNotPrompt", "true");<a name="line.253"></a>
+<span class="sourceLineNo">254</span>      KEYTAB_KERBEROS_OPTIONS.put("storeKey", "true");<a name="line.254"></a>
+<span class="sourceLineNo">255</span>      KEYTAB_KERBEROS_OPTIONS.put("refreshKrb5Config", "true");<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      KEYTAB_KERBEROS_OPTIONS.putAll(BASIC_JAAS_OPTIONS);<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    }<a name="line.257"></a>
+<span class="sourceLineNo">258</span><a name="line.258"></a>
+<span class="sourceLineNo">259</span>    private static final AppConfigurationEntry KEYTAB_KERBEROS_LOGIN =<a name="line.259"></a>
+<span class="sourceLineNo">260</span>      new AppConfigurationEntry(KerberosUtil.getKrb5LoginModuleName(),<a name="line.260"></a>
+<span class="sourceLineNo">261</span>                                LoginModuleControlFlag.REQUIRED,<a name="line.261"></a>
+<span class="sourceLineNo">262</span>                                KEYTAB_KERBEROS_OPTIONS);<a name="line.262"></a>
+<span class="sourceLineNo">263</span><a name="line.263"></a>
+<span class="sourceLineNo">264</span>    private static final AppConfigurationEntry[] KEYTAB_KERBEROS_CONF =<a name="line.264"></a>
+<span class="sourceLineNo">265</span>      new AppConfigurationEntry[]{KEYTAB_KERBEROS_LOGIN};<a name="line.265"></a>
 <span class="sourceLineNo">266</span><a name="line.266"></a>
-<span class="sourceLineNo">267</span>    public JaasConfiguration(String loginContextName, String principal, String keytabFile) {<a name="line.267"></a>
-<span class="sourceLineNo">268</span>      this(loginContextName, principal, keytabFile, keytabFile == null || keytabFile.length() == 0);<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>    private JaasConfiguration(String loginContextName, String principal,<a name="line.271"></a>
-<span class="sourceLineNo">272</span>                             String keytabFile, boolean useTicketCache) {<a name="line.272"></a>
-<span class="sourceLineNo">273</span>      try {<a name="line.273"></a>
-<span class="sourceLineNo">274</span>        this.baseConfig = javax.security.auth.login.Configuration.getConfiguration();<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      } catch (SecurityException e) {<a name="line.275"></a>
-<span class="sourceLineNo">276</span>        this.baseConfig = null;<a name="line.276"></a>
-<span class="sourceLineNo">277</span>      }<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      this.loginContextName = loginContextName;<a name="line.278"></a>
-<span class="sourceLineNo">279</span>      this.useTicketCache = useTicketCache;<a name="line.279"></a>
-<span class="sourceLineNo">280</span>      this.keytabFile = keytabFile;<a name="line.280"></a>
-<span class="sourceLineNo">281</span>      this.principal = principal;<a name="line.281"></a>
-<span class="sourceLineNo">282</span>      LOG.info("JaasConfiguration loginContextName=" + loginContextName +<a name="line.282"></a>
-<span class="sourceLineNo">283</span>               " principal=" + principal + " useTicketCache=" + useTicketCache +<a name="line.283"></a>
-<span class="sourceLineNo">284</span>               " keytabFile=" + keytabFile);<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>    @Override<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    public AppConfigurationEntry[] getAppConfigurationEntry(String appName) {<a name="line.288"></a>
-<span class="sourceLineNo">289</span>      if (loginContextName.equals(appName)) {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        if (!useTicketCache) {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>          KEYTAB_KERBEROS_OPTIONS.put("keyTab", keytabFile);<a name="line.291"></a>
-<span class="sourceLineNo">292</span>          KEYTAB_KERBEROS_OPTIONS.put("useKeyTab", "true");<a name="line.292"></a>
-<span class="sourceLineNo">293</span>        }<a name="line.293"></a>
-<span class="sourceLineNo">294</span>        KEYTAB_KERBEROS_OPTIONS.put("principal", principal);<a name="line.294"></a>
-<span class="sourceLineNo">295</span>        KEYTAB_KERBEROS_OPTIONS.put("useTicketCache", useTicketCache ? "true" : "false");<a name="line.295"></a>
-<span class="sourceLineNo">296</span>        return KEYTAB_KERBEROS_CONF;<a name="line.296"></a>
-<span class="sourceLineNo">297</span>      }<a name="line.297"></a>
-<span class="sourceLineNo">298</span>      if (baseConfig != null) return baseConfig.getAppConfigurationEntry(appName);<a name="line.298"></a>
-<span class="sourceLineNo">299</span>      return(null);<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    }<a name="line.300"></a>
-<span class="sourceLineNo">301</span>  }<a name="line.301"></a>
-<span class="sourceLineNo">302</span><a name="line.302"></a>
-<span class="sourceLineNo">303</span>  //<a name="line.303"></a>
-<span class="sourceLineNo">304</span>  // Helper methods<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>   * Returns the full path of the immediate parent of the specified node.<a name="line.307"></a>
-<span class="sourceLineNo">308</span>   * @param node path to get parent of<a name="line.308"></a>
-<span class="sourceLineNo">309</span>   * @return parent of path, null if passed the root node or an invalid node<a name="line.309"></a>
-<span class="sourceLineNo">310</span>   */<a name="line.310"></a>
-<span class="sourceLineNo">311</span>  public static String getParent(String node) {<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    int idx = node.lastIndexOf(ZNodePaths.ZNODE_PATH_SEPARATOR);<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    return idx &lt;= 0 ? null : node.substring(0, idx);<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">267</span>    private javax.security.auth.login.Configuration baseConfig;<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    private final String loginContextName;<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    private final boolean useTicketCache;<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    private final String keytabFile;<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    private final String principal;<a name="line.271"></a>
+<span class="sourceLineNo">272</span><a name="line.272"></a>
+<span class="sourceLineNo">273</span>    public JaasConfiguration(String loginContextName, String principal, String keytabFile) {<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      this(loginContextName, principal, keytabFile, keytabFile == null || keytabFile.length() == 0);<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>    private JaasConfiguration(String loginContextName, String principal,<a name="line.277"></a>
+<span class="sourceLineNo">278</span>                             String keytabFile, boolean useTicketCache) {<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      try {<a name="line.279"></a>
+<span class="sourceLineNo">280</span>        this.baseConfig = javax.security.auth.login.Configuration.getConfiguration();<a name="line.280"></a>
+<span class="sourceLineNo">281</span>      } catch (SecurityException e) {<a name="line.281"></a>
+<span class="sourceLineNo">282</span>        this.baseConfig = null;<a name="line.282"></a>
+<span class="sourceLineNo">283</span>      }<a name="line.283"></a>
+<span class="sourceLineNo">284</span>      this.loginContextName = loginContextName;<a name="line.284"></a>
+<span class="sourceLineNo">285</span>      this.useTicketCache = useTicketCache;<a name="line.285"></a>
+<span class="sourceLineNo">286</span>      this.keytabFile = keytabFile;<a name="line.286"></a>
+<span class="sourceLineNo">287</span>      this.principal = principal;<a name="line.287"></a>
+<span class="sourceLineNo">288</span>      LOG.info("JaasConfiguration loginContextName=" + loginContextName +<a name="line.288"></a>
+<span class="sourceLineNo">289</span>               " principal=" + principal + " useTicketCache=" + useTicketCache +<a name="line.289"></a>
+<span class="sourceLineNo">290</span>               " keytabFile=" + keytabFile);<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    }<a name="line.291"></a>
+<span class="sourceLineNo">292</span><a name="line.292"></a>
+<span class="sourceLineNo">293</span>    @Override<a name="line.293"></a>
+<span class="sourceLineNo">294</span>    public AppConfigurationEntry[] getAppConfigurationEntry(String appName) {<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      if (loginContextName.equals(appName)) {<a name="line.295"></a>
+<span class="sourceLineNo">296</span>        if (!useTicketCache) {<a name="line.296"></a>
+<span class="sourceLineNo">297</span>          KEYTAB_KERBEROS_OPTIONS.put("keyTab", keytabFile);<a name="line.297"></a>
+<span class="sourceLineNo">298</span>          KEYTAB_KERBEROS_OPTIONS.put("useKeyTab", "true");<a name="line.298"></a>
+<span class="sourceLineNo">299</span>        }<a name="line.299"></a>
+<span class="sourceLineNo">300</span>        KEYTAB_KERBEROS_OPTIONS.put("principal", principal);<a name="line.300"></a>
+<span class="sourceLineNo">301</span>        KEYTAB_KERBEROS_OPTIONS.put("useTicketCache", useTicketCache ? "true" : "false");<a name="line.301"></a>
+<span class="sourceLineNo">302</span>        return KEYTAB_KERBEROS_CONF;<a name="line.302"></a>
+<span class="sourceLineNo">303</span>      }<a name="line.303"></a>
+<span class="sourceLineNo">304</span><a name="line.304"></a>
+<span class="sourceLineNo">305</span>      if (baseConfig != null) {<a name="line.305"></a>
+<span class="sourceLineNo">306</span>        return baseConfig.getAppConfigurationEntry(appName);<a name="line.306"></a>
+<span class="sourceLineNo">307</span>      }<a name="line.307"></a>
+<span class="sourceLineNo">308</span><a name="line.308"></a>
+<span class="sourceLineNo">309</span>      return(null);<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><a name="line.312"></a>
+<span class="sourceLineNo">313</span>  //<a name="line.313"></a>
+<span class="sourceLineNo">314</span>  // Helper methods<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>   * Get the name of the current node from the specified fully-qualified path.<a name="line.317"></a>
-<span class="sourceLineNo">318</span>   * @param path fully-qualified path<a name="line.318"></a>
-<span class="sourceLineNo">319</span>   * @return name of the current node<a name="line.319"></a>
+<span class="sourceLineNo">317</span>   * Returns the full path of the immediate parent of the specified node.<a name="line.317"></a>
+<span class="sourceLineNo">318</span>   * @param node path to get parent of<a name="line.318"></a>
+<span class="sourceLineNo">319</span>   * @return parent of path, null if passed the root node or an invalid node<a name="line.319"></a>
 <span class="sourceLineNo">320</span>   */<a name="line.320"></a>
-<span class="sourceLineNo">321</span>  public static String getNodeName(String path) {<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    return path.substring(path.lastIndexOf("/")+1);<a name="line.322"></a>
-<span class="sourceLineNo">323</span>  }<a name="line.323"></a>
-<span class="sourceLineNo">324</span><a name="line.324"></a>
-<span class="sourceLineNo">325</span>  //<a name="line.325"></a>
-<span class="sourceLineNo">326</span>  // Existence checks and watches<a name="line.326"></a>
-<span class="sourceLineNo">327</span>  //<a name="line.327"></a>
-<span class="sourceLineNo">328</span><a name="line.328"></a>
-<span class="sourceLineNo">329</span>  /**<a name="line.329"></a>
-<span class="sourceLineNo">330</span>   * Watch the specified znode for delete/create/change events.  The watcher is<a name="line.330"></a>
-<span class="sourceLineNo">331</span>   * set whether or not the node exists.  If the node already exists, the method<a name="line.331"></a>
-<span class="sourceLineNo">332</span>   * returns true.  If the node does not exist, the method returns false.<a name="line.332"></a>
-<span class="sourceLineNo">333</span>   *<a name="line.333"></a>
-<span class="sourceLineNo">334</span>   * @param zkw zk reference<a name="line.334"></a>
-<span class="sourceLineNo">335</span>   * @param znode path of node to watch<a name="line.335"></a>
-<span class="sourceLineNo">336</span>   * @return true if znode exists, false if does not exist or error<a name="line.336"></a>
-<span class="sourceLineNo">337</span>   * @throws KeeperException if unexpected zookeeper exception<a name="line.337"></a>
-<span class="sourceLineNo">338</span>   */<a name="line.338"></a>
-<span class="sourceLineNo">339</span>  public static boolean watchAndCheckExists(ZKWatcher zkw, String znode)<a name="line.339"></a>
-<span class="sourceLineNo">340</span>  throws KeeperException {<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    try {<a name="line.341"></a>
-<span class="sourceLineNo">342</span>      Stat s = zkw.getRecoverableZooKeeper().exists(znode, zkw);<a name="line.342"></a>
-<span class="sourceLineNo">343</span>      boolean exists = s != null ? true : false;<a name="line.343"></a>
-<span class="sourceLineNo">344</span>      if (exists) {<a name="line.344"></a>
-<span class="sourceLineNo">345</span>        LOG.debug(zkw.prefix("Set watcher on existing znode=" + znode));<a name="line.345"></a>
-<span class="sourceLineNo">346</span>      } else {<a name="line.346"></a>
-<span class="sourceLineNo">347</span>        LOG.debug(zkw.prefix("Set watcher on znode that does not yet exist, " + znode));<a name="line.347"></a>
-<span class="sourceLineNo">348</span>      }<a name="line.348"></a>
-<span class="sourceLineNo">349</span>      return exists;<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    } catch (KeeperException e) {<a name="line.350"></a>
-<span class="sourceLineNo">351</span>      LOG.warn(zkw.prefix("Unable to set watcher on znode " + znode), e);<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      zkw.keeperException(e);<a name="line.352"></a>
-<span class="sourceLineNo">353</span>      return false;<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    } catch (InterruptedException e) {<a name="line.354"></a>
-<span class="sourceLineNo">355</span>      LOG.warn(zkw.prefix("Unable to set watcher on znode " + znode), e);<a name="line.355"></a>
-<span class="sourceLineNo">356</span>      zkw.interruptedException(e);<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      return false;<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    }<a name="line.358"></a>
-<span class="sourceLineNo">359</span>  }<a name="line.359"></a>
-<span class="sourceLineNo">360</span><a name="line.360"></a>
-<span class="sourceLineNo">361</span>  /**<a name="line.361"></a>
-<span class="sourceLineNo">362</span>   * Watch the specified znode, but only if exists. Useful when watching<a name="line.362"></a>
-<span class="sourceLineNo">363</span>   * for deletions. Uses .getData() (and handles NoNodeException) instead<a name="line.363"></a>
-<span class="sourceLineNo">364</span>   * of .exists() to accomplish this, as .getData() will only set a watch if<a name="line.364"></a>
-<span class="sourceLineNo">365</span>   * the znode exists.<a name="line.365"></a>
-<span class="sourceLineNo">366</span>   * @param zkw zk reference<a name="line.366"></a>
-<span class="sourceLineNo">367</span>   * @param znode path of node to watch<a name="line.367"></a>
-<span class="sourceLineNo">368</span>   * @return true if the watch is set, false if node does not exists<a name="line.368"></a>
-<span class="sourceLineNo">369</span>   * @throws KeeperException if unexpected zookeeper exception<a name="line.369"></a>
-<span class="sourceLineNo">370</span>   */<a name="line.370"></a>
-<span class="sourceLineNo">371</span>  public static boolean setWatchIfNodeExists(ZKWatcher zkw, String znode)<a name="line.371"></a>
-<span class="sourceLineNo">372</span>      throws KeeperException {<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    try {<a name="line.373"></a>
-<span class="sourceLineNo">374</span>      zkw.getRecoverableZooKeeper().getData(znode, true, null);<a name="line.374"></a>
-<span class="sourceLineNo">375</span>      return true;<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    } catch (NoNodeException e) {<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      return false;<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    } catch (InterruptedException e) {<a name="line.378"></a>
-<span class="sourceLineNo">379</span>      LOG.warn(zkw.prefix("Unable to set watcher on znode " + znode), e);<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      zkw.interruptedException(e);<a name="line.380"></a>
-<span class="sourceLineNo">381</span>      return false;<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>   * Check if the specified node exists.  Sets no watches.<a name="line.386"></a>
-<span class="sourceLineNo">387</span>   *<a name="line.387"></a>
-<span class="sourceLineNo">388</span>   * @param zkw zk reference<a name="line.388"></a>
-<span class="sourceLineNo">389</span>   * @param znode path of node to watch<a name="line.389"></a>
-<span class="sourceLineNo">390</span>   * @return version of the node if it exists, -1 if does not exist<a name="line.390"></a>
-<span class="sourceLineNo">391</span>   * @throws KeeperException if unexpected zookeeper exception<a name="line.391"></a>
-<span class="sourceLineNo">392</span>   */<a name="line.392"></a>
-<span class="sourceLineNo">393</span>  public static int checkExists(ZKWatcher zkw, String znode)<a name="line.393"></a>
-<span class="sourceLineNo">394</span>  throws KeeperException {<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    try {<a name="line.395"></a>
-<span class="sourceLineNo">396</span>      Stat s = zkw.getRecoverableZooKeeper().exists(znode, null);<a name="line.396"></a>
-<span class="sourceLineNo">397</span>      return s != null ? s.getVersion() : -1;<a name="line.397"></a>
-<span class="sourceLineNo">398</span>    } catch (KeeperException e) {<a name="line.398"></a>
-<span class="sourceLineNo">399</span>      LOG.warn(zkw.prefix("Unable to set watcher on znode (" + znode + ")"), e);<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      zkw.keeperException(e);<a name="line.400"></a>
-<span class="sourceLineNo">401</span>      return -1;<a name="line.401"></a>
-<span class="sourceLineNo">402</span>    } catch (InterruptedException e) {<a name="line.402"></a>
-<span class="sourceLineNo">403</span>      LOG.warn(zkw.prefix("Unable to set watcher on znode (" + znode + ")"), e);<a name="line.403"></a>
-<span class="sourceLineNo">404</span>      zkw.interruptedException(e);<a name="line.404"></a>
-<span class="sourceLineNo">405</span>      return -1;<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    }<a name="line.406"></a>
-<span class="sourceLineNo">407</span>  }<a name="line.407"></a>
-<span class="sourceLineNo">408</span><a name="line.408"></a>
-<span class="sourceLineNo">409</span>  //<a name="line.409"></a>
-<span class="sourceLineNo">410</span>  // Znode listings<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>   * Lists the children znodes of the specified znode.  Also sets a watch on<a name="line.414"></a>
-<span class="sourceLineNo">415</span>   * the specified znode which will capture a NodeDeleted event on the specified<a name="line.415"></a>
-<span class="sourceLineNo">416</span>   * znode as well as NodeChildrenChanged if any children of the specified znode<a name="line.416"></a>
-<span class="sourceLineNo">417</span>   * are created or deleted.<a name="line.417"></a>
-<span class="sourceLineNo">418</span>   *<a name="line.418"></a>
-<span class="sourceLineNo">419</span>   * Returns null if the specified node does not exist.  Otherwise returns a<a name="line.419"></a>
-<span class="sourceLineNo">420</span>   * list of children of the specified node.  If the node exists but it has no<a name="line.420"></a>
-<span class="sourceLineNo">421</span>   * children, an empty list will be returned.<a name="line.421"></a>
-<span class="sourceLineNo">422</span>   *<a name="line.422"></a>
-<span class="sourceLineNo">423</span>   * @param zkw zk reference<a name="line.423"></a>
-<span class="sourceLineNo">424</span>   * @param znode path of node to list and watch children of<a name="line.424"></a>
-<span class="sourceLineNo">425</span>   * @return list of children of the specified node, an empty list if the node<a name="line.425"></a>
-<span class="sourceLineNo">426</span>   *          exists but has no children, and null if the node does not exist<a name="line.426"></a>
-<span class="sourceLineNo">427</span>   * @throws KeeperException if unexpected zookeeper exception<a name="line.427"></a>
-<span class="sourceLineNo">428</span>   */<a name="line.428"></a>
-<span class="sourceLineNo">429</span>  public static List&lt;String&gt; listChildrenAndWatchForNewChildren(<a name="line.429"></a>
-<span class="sourceLineNo">430</span>          ZKWatcher zkw, String znode)<a name="line.430"></a>
-<span class="sourceLineNo">431</span>  throws KeeperException {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>    try {<a name="line.432"></a>
-<span class="sourceLineNo">433</span>      List&lt;String&gt; children = zkw.getRecoverableZooKeeper().getChildren(znode, zkw);<a name="line.433"></a>
-<span class="sourceLineNo">434</span>      return children;<a name="line.434"></a>
-<span class="sourceLineNo">435</span>    } catch(KeeperException.NoNodeException ke) {<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      LOG.debug(zkw.prefix("Unable to list children of znode " + znode + " " +<a name="line.436"></a>
-<span class="sourceLineNo">437</span>          "because node does not exist (not an error)"));<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      return null;<a name="line.438"></a>
-<span class="sourceLineNo">439</span>    } catch (KeeperException e) {<a name="line.439"></a>
-<span class="sourceLineNo">440</span>      LOG.warn(zkw.prefix("Unable to list children of znode " + znode + " "), e);<a name="line.440"></a>
-<span class="sourceLineNo">441</span>      zkw.keeperException(e);<a name="line.441"></a>
-<span class="sourceLineNo">442</span>      return null;<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    } catch (InterruptedException e) {<a name="line.443"></a>
-<span class="sourceLineNo">444</span>      LOG.warn(zkw.prefix("Unable to list children of znode " + znode + " "), e);<a name="line.444"></a>
-<span class="sourceLineNo">445</span>      zkw.interruptedException(e);<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      return null;<a name="line.446"></a>
-<span class="sourceLineNo">447</span>    }<a name="line.447"></a>
-<span class="sourceLineNo">448</span>  }<a name="line.448"></a>
-<span class="sourceLineNo">449</span><a name="line.449"></a>
-<span class="sourceLineNo">450</span>  /**<a name="line.450"></a>
-<span class="sourceLineNo">451</span>   * List all the children of the specified znode, setting a watch for children<a name="line.451"></a>
-<span class="sourceLineNo">452</span>   * changes and also setting a watch on every individual child in order to get<a name="line.452"></a>
-<span class="sourceLineNo">453</span>   * the NodeCreated and NodeDeleted events.<a name="line.453"></a>
-<span class="sourceLineNo">454</span>   * @param zkw zookeeper reference<a name="line.454"></a>
-<span class="sourceLineNo">455</span>   * @param znode node to get children of and watch<a name="line.455"></a>
-<span class="sourceLineNo">456</span>   * @return list of znode names, null if the node doesn't exist<a name="line.456"></a>
-<span class="sourceLineNo">457</span>   * @throws KeeperException<a name="line.457"></a>
-<span class="sourceLineNo">458</span>   */<a name="line.458"></a>
-<span class="sourceLineNo">459</span>  public static List&lt;String&gt; listChildrenAndWatchThem(ZKWatcher zkw,<a name="line.459"></a>
-<span class="sourceLineNo">460</span>      String znode) throws KeeperException {<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    List&lt;String&gt; children = listChildrenAndWatchForNewChildren(zkw, znode);<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    if (children == null) {<a name="line.462"></a>
-<span class="sourceLineNo">463</span>      return null;<a name="line.463"></a>
-<span class="sourceLineNo">464</span>    }<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    for (String child : children) {<a name="line.465"></a>
-<span class="sourceLineNo">466</span>      watchAndCheckExists(zkw, ZNodePaths.joinZNode(znode, child));<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    }<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    return children;<a name="line.468"></a>
-<span class="sourceLineNo">469</span>  }<a name="line.469"></a>
-<span class="sourceLineNo">470</span><a name="line.470"></a>
-<span class="sourceLineNo">471</span>  /**<a name="line.471"></a>
-<span class="sourceLineNo">472</span>   * Lists the children of the specified znode without setting any watches.<a name="line.472"></a>
-<span class="sourceLineNo">473</span>   *<a name="line.473"></a>
-<span class="sourceLineNo">474</span>   * Sets no watches at all, this method is best effort.<a name="line.474"></a>
-<span class="sourceLineNo">475</span>   *<a name="line.475"></a>
-<span class="sourceLineNo">476</span>   * Returns an empty list if the node has no children.  Returns null if the<a name="line.476"></a>
-<span class="sourceLineNo">477</span>   * parent node itself does not exist.<a name="line.477"></a>
-<span class="sourceLineNo">478</span>   *<a name="line.478"></a>
-<span class="sourceLineNo">479</span>   * @param zkw zookeeper reference<a name="line.479"></a>
-<span class="sourceLineNo">480</span>   * @param znode node to get children<a name="line.480"></a>
-<span class="sourceLineNo">481</span>   * @return list of data of children of specified znode, empty if no children,<a name="line.481"></a>
-<span class="sourceLineNo">482</span>   *         null if parent does not exist<a name="line.482"></a>
-<span class="sourceLineNo">483</span>   * @throws KeeperException if unexpected zookeeper exception<a name="line.483"></a>
-<span class="sourceLineNo">484</span>   */<a name="line.484"></a>
-<span class="sourceLineNo">485</span>  public static List&lt;String&gt; listChildrenNoWatch(ZKWatcher zkw, String znode)<a name="line.485"></a>
-<span class="sourceLineNo">486</span>  throws KeeperException {<a name="line.486"></a>
-<span class="sourceLineNo">487</span>    List&lt;String&gt; children = null;<a name="line.487"></a>
-<span class="sourceLineNo">488</span>    try {<a name="line.488"></a>
-<span class="sourceLineNo">489</span>      // List the children without watching<a name="line.489"></a>
-<span class="sourceLineNo">490</span>      children = zkw.getRecoverableZooKeeper().getChildren(znode, null);<a name="line.490"></a>
-<span class="sourceLineNo">491</span>    } catch(KeeperException.NoNodeException nne) {<a name="line.491"></a>
-<span class="sourceLineNo">492</span>      return null;<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    } catch(InterruptedException ie) {<a name="line.493"></a>
-<span class="sourceLineNo">494</span>      zkw.interruptedException(ie);<a name="line.494"></a>
-<span class="sourceLineNo">495</span>    }<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    return children;<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>   * Simple class to hold a node path and node data.<a name="line.500"></a>
-<span class="sourceLineNo">501</span>   * @deprecated Unused<a name="line.501"></a>
-<span class="sourceLineNo">502</span>   */<a name="line.502"></a>
-<span class="sourceLineNo">503</span>  @Deprecated<a name="line.503"></a>
-<span class="sourceLineNo">504</span>  public static class NodeAndData {<a name="line.504"></a>
-<span class="sourceLineNo">505</span>    private String node;<a name="line.505"></a>
-<span class="sourceLineNo">506</span>    private byte [] data;<a name="line.506"></a>
-<span class="sourceLineNo">507</span>    public NodeAndData(String node, byte [] data) {<a name="line.507"></a>
-<span class="sourceLineNo">508</span>      this.node = node;<a name="line.508"></a>
-<span class="sourceLineNo">509</span>      this.data = data;<a name="line.509"></a>
-<span class="sourceLineNo">510</span>    }<a name="line.510"></a>
-<span class="sourceLineNo">511</span>    public String getNode() {<a name="line.511"></a>
-<span class="sourceLineNo">512</span>      return node;<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    }<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    public byte [] getData() {<a name="line.514"></a>
-<span class="sourceLineNo">515</span>      return data;<a name="line.515"></a>
-<span class="sourceLineNo">516</span>    }<a name="line.516"></a>
-<span class="sourceLineNo">517</span>    @Override<a name="line.517"></a>
-<span class="sourceLineNo">518</span>    public String toString() {<a name="line.518"></a>
-<span class="sourceLineNo">519</span>      return node;<a name="line.519"></a>
+<span class="sourceLineNo">321</span>  public static String getParent(String node) {<a name="line.321"></a>
+<span class="sourceLineNo">322</span>    int idx = node.lastIndexOf(ZNodePaths.ZNODE_PATH_SEPARATOR);<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    return idx &lt;= 0 ? null : node.substring(0, idx);<a name="line.323"></a>
+<span class="sourceLineNo">324</span>  }<a name="line.324"></a>
+<span class="sourceLineNo">325</span><a name="line.325"></a>
+<span class="sourceLineNo">326</span>  /**<a name="line.326"></a>
+<span class="sourceLineNo">327</span>   * Get the name of the current node from the specified fully-qualified path.<a name="line.327"></a>
+<span class="sourceLineNo">328</span>   * @param path fully-qualified path<a name="line.328"></a>
+<span class="sourceLineNo">329</span>   * @return name of the current node<a name="line.329"></a>
+<span class="sourceLineNo">330</span>   */<a name="line.330"></a>
+<span class="sourceLineNo">331</span>  public static String getNodeName(String path) {<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    return path.substring(path.lastIndexOf("/")+1);<a name="line.332"></a>
+<span class="sourceLineNo">333</span>  }<a name="line.333"></a>
+<span class="sourceLineNo">334</span><a name="line.334"></a>
+<span class="sourceLineNo">335</span>  //<a name="line.335"></a>
+<span class="sourceLineNo">336</span>  // Existence checks and watches<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>   * Watch the specified znode for delete/create/change events.  The watcher is<a name="line.340"></a>
+<span class="sourceLineNo">341</span>   * set whether or not the node exists.  If the node already exists, the method<a name="line.341"></a>
+<span class="sourceLineNo">342</span>   * returns true.  If the node does not exist, the method returns false.<a name="line.342"></a>
+<span class="sourceLineNo">343</span>   *<a name="line.343"></a>
+<span class="sourceLineNo">344</span>   * @param zkw zk reference<a name="line.344"></a>
+<span class="sourceLineNo">345</span>   * @param znode path of node to watch<a name="line.345"></a>
+<span class="sourceLineNo">346</span>   * @return true if znode exists, false if does not exist or error<a name="line.346"></a>
+<span class="sourceLineNo">347</span>   * @throws KeeperException if unexpected zookeeper exception<a name="line.347"></a>
+<span class="sourceLineNo">348</span>   */<a name="line.348"></a>
+<span class="sourceLineNo">349</span>  public static boolean watchAndCheckExists(ZKWatcher zkw, String znode)<a name="line.349"></a>
+<span class="sourceLineNo">350</span>  throws KeeperException {<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    try {<a name="line.351"></a>
+<span class="sourceLineNo">352</span>      Stat s = zkw.getRecoverableZooKeeper().exists(znode, zkw);<a name="line.352"></a>
+<span class="sourceLineNo">353</span>      boolean exists = s != null ? true : false;<a name="line.353"></a>
+<span class="sourceLineNo">354</span>      if (exists) {<a name="line.354"></a>
+<span class="sourceLineNo">355</span>        LOG.debug(zkw.prefix("Set watcher on existing znode=" + znode));<a name="line.355"></a>
+<span class="sourceLineNo">356</span>      } else {<a name="line.356"></a>
+<span class="sourceLineNo">357</span>        LOG.debug(zkw.prefix("Set watcher on znode that does not yet exist, " + znode));<a name="line.357"></a>
+<span class="sourceLineNo">358</span>      }<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      return exists;<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    } catch (KeeperException e) {<a name="line.360"></a>
+<span class="sourceLineNo">361</span>      LOG.warn(zkw.prefix("Unable to set watcher on znode " + znode), e);<a name="line.361"></a>
+<span class="sourceLineNo">362</span>      zkw.keeperException(e);<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      return false;<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    } catch (InterruptedException e) {<a name="line.364"></a>
+<span class="sourceLineNo">365</span>      LOG.warn(zkw.prefix("Unable to set watcher on znode " + znode), e);<a name="line.365"></a>
+<span class="sourceLineNo">366</span>      zkw.interruptedException(e);<a name="line.366"></a>
+<span class="sourceLineNo">367</span>      return false;<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>  /**<a name="line.371"></a>
+<span class="sourceLineNo">372</span>   * Watch the specified znode, but only if exists. Useful when watching<a name="line.372"></a>
+<span class="sourceLineNo">373</span>   * for deletions. Uses .getData() (and handles NoNodeException) instead<a name="line.373"></a>
+<span class="sourceLineNo">374</span>   * of .exists() to accomplish this, as .getData() will only set a watch if<a name="line.374"></a>
+<span class="sourceLineNo">375</span>   * the znode exists.<a name="line.375"></a>
+<span class="sourceLineNo">376</span>   * @param zkw zk reference<a name="line.376"></a>
+<span class="sourceLineNo">377</span>   * @param znode path of node to watch<a name="line.377"></a>
+<span class="sourceLineNo">378</span>   * @return true if the watch is set, false if node does not exists<a name="line.378"></a>
+<span class="sourceLineNo">379</span>   * @throws KeeperException if unexpected zookeeper exception<a name="line.379"></a>
+<span class="sourceLineNo">380</span>   */<a name="line.380"></a>
+<span class="sourceLineNo">381</span>  public static boolean setWatchIfNodeExists(ZKWatcher zkw, String znode)<a name="line.381"></a>
+<span class="sourceLineNo">382</span>      throws KeeperException {<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    try {<a name="line.383"></a>
+<span class="sourceLineNo">384</span>      zkw.getRecoverableZooKeeper().getData(znode, true, null);<a name="line.384"></a>
+<span class="sourceLineNo">385</span>      return true;<a name="line.385"></a>
+<span class="sourceLineNo">386</span>    } catch (NoNodeException e) {<a name="line.386"></a>
+<span class="sourceLineNo">387</span>      return false;<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    } catch (InterruptedException e) {<a name="line.388"></a>
+<span class="sourceLineNo">389</span>      LOG.warn(zkw.prefix("Unable to set watcher on znode " + znode), e);<a name="line.389"></a>
+<span class="sourceLineNo">390</span>      zkw.interruptedException(e);<a name="line.390"></a>
+<span class="sourceLineNo">391</span>      return false;<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">395</span>  /**<a name="line.395"></a>
+<span class="sourceLineNo">396</span>   * Check if the specified node exists.  Sets no watches.<a name="line.396"></a>
+<span class="sourceLineNo">397</span>   *<a name="line.397"></a>
+<span class="sourceLineNo">398</span>   * @param zkw zk reference<a name="line.398"></a>
+<span class="sourceLineNo">399</span>   * @param znode path of node to watch<a name="line.399"></a>
+<span class="sourceLineNo">400</span>   * @return version of the node if it exists, -1 if does not exist<a name="line.400"></a>
+<span class="sourceLineNo">401</span>   * @throws KeeperException if unexpected zookeeper exception<a name="line.401"></a>
+<span class="sourceLineNo">402</span>   */<a name="line.402"></a>
+<span class="sourceLineNo">403</span>  public static int checkExists(ZKWatcher zkw, String znode)<a name="line.403"></a>
+<span class="sourceLineNo">404</span>  throws KeeperException {<a name="line.404"></a>
+<span class="sourceLineNo">405</span>    try {<a name="line.405"></a>
+<span class="sourceLineNo">406</span>      Stat s = zkw.getRecoverableZooKeeper().exists(znode, null);<a name="line.406"></a>
+<span class="sourceLineNo">407</span>      return s != null ? s.getVersion() : -1;<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    } catch (KeeperException e) {<a name="line.408"></a>
+<span class="sourceLineNo">409</span>      LOG.warn(zkw.prefix("Unable to set watcher on znode (" + znode + ")"), e);<a name="line.409"></a>
+<span class="sourceLineNo">410</span>      zkw.keeperException(e);<a name="line.410"></a>
+<span class="sourceLineNo">411</span>      return -1;<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    } catch (InterruptedException e) {<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      LOG.warn(zkw.prefix("Unable to set watcher on znode (" + znode + ")"), e);<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      zkw.interruptedException(e);<a name="line.414"></a>
+<span class="sourceLineNo">415</span>      return -1;<a name="line.415"></a>
+<span class="sourceLineNo">416</span>    }<a name="line.416"></a>
+<span class="sourceLineNo">417</span>  }<a name="line.417"></a>
+<span class="sourceLineNo">418</span><a name="line.418"></a>
+<span class="sourceLineNo">419</span>  //<a name="line.419"></a>
+<span class="sourceLineNo">420</span>  // Znode listings<a name="line.420"></a>
+<span class="sourceLineNo">421</span>  //<a name="line.421"></a>
+<span class="sourceLineNo">422</span><a name="line.422"></a>
+<span class="sourceLineNo">423</span>  /**<a name="line.423"></a>
+<span class="sourceLineNo">424</span>   * Lists the children znodes of the specified znode.  Also sets a watch on<a name="line.424"></a>
+<span class="sourceLineNo">425</span>   * the specified znode which will capture a NodeDeleted event on the specified<a name="line.425"></a>
+<span class="sourceLineNo">426</span>   * znode as well as NodeChildrenChanged if any children of the specified znode<a name="line.426"></a>
+<span class="sourceLineNo">427</span>   * are created or deleted.<a name="line.427"></a>
+<span class="sourceLineNo">428</span>   *<a name="line.428"></a>
+<span class="sourceLineNo">429</span>   * Returns null if the specified node does not exist.  Otherwise returns a<a name="line.429"></a>
+<span class="sourceLineNo">430</span>   * list of children of the specified node.  If the node exists but it has no<a name="line.430"></a>
+<span class="sourceLineNo">431</span>   * children, an empty list will be returned.<a name="line.431"></a>
+<span class="sourceLineNo">432</span>   *<a name="line.432"></a>
+<span class="sourceLineNo">433</span>   * @param zkw zk reference<a name="line.433"></a>
+<span class="sourceLineNo">434</span>   * @param znode path of node to list and watch children of<a name="line.434"></a>
+<span class="sourceLineNo">435</span>   * @return list of children of the specified node, an empty list if the node<a name="line.435"></a>
+<span class="sourceLineNo">436</span>   *          exists but has no children, and null if the node does not exist<a name="line.436"></a>
+<span class="sourceLineNo">437</span>   * @throws KeeperException if unexpected zookeeper exception<a name="line.437"></a>
+<span class="sourceLineNo">438</span>   */<a name="line.438"></a>
+<span class="sourceLineNo">439</span>  public static List&lt;String&gt; listChildrenAndWatchForNewChildren(<a name="line.439"></a>
+<span class="sourceLineNo">440</span>          ZKWatcher zkw, String znode)<a name="line.440"></a>
+<span class="sourceLineNo">441</span>  throws KeeperException {<a name="line.441"></a>
+<span class="sourceLineNo">442</span>    try {<a name="line.442"></a>
+<span class="sourceLineNo">443</span>      List&lt;String&gt; children = zkw.getRecoverableZooKeeper().getChildren(znode, zkw);<a name="line.443"></a>
+<span class="sourceLineNo">444</span>      return children;<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    } catch(KeeperException.NoNodeException ke) {<a name="line.445"></a>
+<span class="sourceLineNo">446</span>      LOG.debug(zkw.prefix("Unable to list children of znode " + znode + " " +<a name="line.446"></a>
+<span class="sourceLineNo">447</span>          "because node does not exist (not an error)"));<a name="line.447"></a>
+<span class="sourceLineNo">448</span>      return null;<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    } catch (KeeperException e) {<a name="line.449"></a>
+<span class="sourceLineNo">450</span>      LOG.warn(zkw.prefix("Unable to list children of znode " + znode + " "), e);<a name="line.450"></a>
+<span class="sourceLineNo">451</span>      zkw.keeperException(e);<a name="line.451"></a>
+<span class="sourceLineNo">452</span>      return null;<a name="line.452"></a>
+<span class="sourceLineNo">453</span>    } catch (InterruptedException e) {<a name="line.453"></a>
+<span class="sourceLineNo">454</span>      LOG.warn(zkw.prefix("Unable to list children

<TRUNCATED>

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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.DeleteNodeFailSilent.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.DeleteNodeFailSilent.html b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.DeleteNodeFailSilent.html
index 81f531b..04be024 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.DeleteNodeFailSilent.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.DeleteNodeFailSilent.html
@@ -53,2036 +53,2078 @@
 <span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.AuthUtil;<a name="line.45"></a>
 <span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.46"></a>
 <span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.HConstants;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.security.Superusers;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.shaded.com.google.protobuf.InvalidProtocolBufferException;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil.ZKUtilOp.CreateAndFailSilent;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil.ZKUtilOp.DeleteNodeFailSilent;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil.ZKUtilOp.SetData;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.security.SecurityUtil;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.security.UserGroupInformation;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.security.authentication.util.KerberosUtil;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.zookeeper.AsyncCallback;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.zookeeper.CreateMode;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.zookeeper.KeeperException;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.zookeeper.KeeperException.NoNodeException;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.zookeeper.Op;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.zookeeper.Watcher;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.zookeeper.ZooDefs.Ids;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.zookeeper.ZooDefs.Perms;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.zookeeper.ZooKeeper;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.zookeeper.client.ZooKeeperSaslClient;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.zookeeper.data.ACL;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.zookeeper.data.Id;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.zookeeper.data.Stat;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.zookeeper.proto.CreateRequest;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.zookeeper.proto.DeleteRequest;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.zookeeper.proto.SetDataRequest;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.zookeeper.server.ZooKeeperSaslServer;<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> * Internal HBase utility class for ZooKeeper.<a name="line.81"></a>
-<span class="sourceLineNo">082</span> *<a name="line.82"></a>
-<span class="sourceLineNo">083</span> * &lt;p&gt;Contains only static methods and constants.<a name="line.83"></a>
-<span class="sourceLineNo">084</span> *<a name="line.84"></a>
-<span class="sourceLineNo">085</span> * &lt;p&gt;Methods all throw {@link KeeperException} if there is an unexpected<a name="line.85"></a>
-<span class="sourceLineNo">086</span> * zookeeper exception, so callers of these methods must handle appropriately.<a name="line.86"></a>
-<span class="sourceLineNo">087</span> * If ZK is required for the operation, the server will need to be aborted.<a name="line.87"></a>
-<span class="sourceLineNo">088</span> */<a name="line.88"></a>
-<span class="sourceLineNo">089</span>@InterfaceAudience.Private<a name="line.89"></a>
-<span class="sourceLineNo">090</span>public class ZKUtil {<a name="line.90"></a>
-<span class="sourceLineNo">091</span>  private static final Log LOG = LogFactory.getLog(ZKUtil.class);<a name="line.91"></a>
-<span class="sourceLineNo">092</span><a name="line.92"></a>
-<span class="sourceLineNo">093</span>  private static int zkDumpConnectionTimeOut;<a name="line.93"></a>
-<span class="sourceLineNo">094</span><a name="line.94"></a>
-<span class="sourceLineNo">095</span>  /**<a name="line.95"></a>
-<span class="sourceLineNo">096</span>   * Creates a new connection to ZooKeeper, pulling settings and ensemble config<a name="line.96"></a>
-<span class="sourceLineNo">097</span>   * from the specified configuration object using methods from {@link ZKConfig}.<a name="line.97"></a>
-<span class="sourceLineNo">098</span>   *<a name="line.98"></a>
-<span class="sourceLineNo">099</span>   * Sets the connection status monitoring watcher to the specified watcher.<a name="line.99"></a>
-<span class="sourceLineNo">100</span>   *<a name="line.100"></a>
-<span class="sourceLineNo">101</span>   * @param conf configuration to pull ensemble and other settings from<a name="line.101"></a>
-<span class="sourceLineNo">102</span>   * @param watcher watcher to monitor connection changes<a name="line.102"></a>
-<span class="sourceLineNo">103</span>   * @return connection to zookeeper<a name="line.103"></a>
-<span class="sourceLineNo">104</span>   * @throws IOException if unable to connect to zk or config problem<a name="line.104"></a>
-<span class="sourceLineNo">105</span>   */<a name="line.105"></a>
-<span class="sourceLineNo">106</span>  public static RecoverableZooKeeper connect(Configuration conf, Watcher watcher)<a name="line.106"></a>
-<span class="sourceLineNo">107</span>  throws IOException {<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    String ensemble = ZKConfig.getZKQuorumServersString(conf);<a name="line.108"></a>
-<span class="sourceLineNo">109</span>    return connect(conf, ensemble, watcher);<a name="line.109"></a>
-<span class="sourceLineNo">110</span>  }<a name="line.110"></a>
-<span class="sourceLineNo">111</span><a name="line.111"></a>
-<span class="sourceLineNo">112</span>  public static RecoverableZooKeeper connect(Configuration conf, String ensemble,<a name="line.112"></a>
-<span class="sourceLineNo">113</span>      Watcher watcher)<a name="line.113"></a>
-<span class="sourceLineNo">114</span>  throws IOException {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    return connect(conf, ensemble, watcher, null);<a name="line.115"></a>
-<span class="sourceLineNo">116</span>  }<a name="line.116"></a>
-<span class="sourceLineNo">117</span><a name="line.117"></a>
-<span class="sourceLineNo">118</span>  public static RecoverableZooKeeper connect(Configuration conf, String ensemble,<a name="line.118"></a>
-<span class="sourceLineNo">119</span>      Watcher watcher, final String identifier)<a name="line.119"></a>
-<span class="sourceLineNo">120</span>  throws IOException {<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    if(ensemble == null) {<a name="line.121"></a>
-<span class="sourceLineNo">122</span>      throw new IOException("Unable to determine ZooKeeper ensemble");<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    }<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    int timeout = conf.getInt(HConstants.ZK_SESSION_TIMEOUT,<a name="line.124"></a>
-<span class="sourceLineNo">125</span>        HConstants.DEFAULT_ZK_SESSION_TIMEOUT);<a name="line.125"></a>
-<span class="sourceLineNo">126</span>    if (LOG.isTraceEnabled()) {<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      LOG.trace(identifier + " opening connection to ZooKeeper ensemble=" + ensemble);<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    }<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    int retry = conf.getInt("zookeeper.recovery.retry", 3);<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    int retryIntervalMillis =<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      conf.getInt("zookeeper.recovery.retry.intervalmill", 1000);<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    int maxSleepTime = conf.getInt("zookeeper.recovery.retry.maxsleeptime", 60000);<a name="line.132"></a>
-<span class="sourceLineNo">133</span>    zkDumpConnectionTimeOut = conf.getInt("zookeeper.dump.connection.timeout",<a name="line.133"></a>
-<span class="sourceLineNo">134</span>        1000);<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    return new RecoverableZooKeeper(ensemble, timeout, watcher,<a name="line.135"></a>
-<span class="sourceLineNo">136</span>        retry, retryIntervalMillis, maxSleepTime, identifier);<a name="line.136"></a>
-<span class="sourceLineNo">137</span>  }<a name="line.137"></a>
-<span class="sourceLineNo">138</span><a name="line.138"></a>
-<span class="sourceLineNo">139</span>  /**<a name="line.139"></a>
-<span class="sourceLineNo">140</span>   * Log in the current zookeeper server process using the given configuration<a name="line.140"></a>
-<span class="sourceLineNo">141</span>   * keys for the credential file and login principal.<a name="line.141"></a>
-<span class="sourceLineNo">142</span>   *<a name="line.142"></a>
-<span class="sourceLineNo">143</span>   * &lt;p&gt;&lt;strong&gt;This is only applicable when running on secure hbase&lt;/strong&gt;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>   * On regular HBase (without security features), this will safely be ignored.<a name="line.144"></a>
-<span class="sourceLineNo">145</span>   * &lt;/p&gt;<a name="line.145"></a>
+<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.security.Superusers;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil.ZKUtilOp.CreateAndFailSilent;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil.ZKUtilOp.DeleteNodeFailSilent;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil.ZKUtilOp.SetData;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.security.SecurityUtil;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.security.UserGroupInformation;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.security.authentication.util.KerberosUtil;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.zookeeper.AsyncCallback;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.zookeeper.CreateMode;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.zookeeper.KeeperException;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.zookeeper.KeeperException.NoNodeException;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.zookeeper.Op;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.zookeeper.Watcher;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.zookeeper.ZooDefs.Ids;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.zookeeper.ZooDefs.Perms;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.zookeeper.ZooKeeper;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.zookeeper.client.ZooKeeperSaslClient;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.zookeeper.data.ACL;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.zookeeper.data.Id;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.zookeeper.data.Stat;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.zookeeper.proto.CreateRequest;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.zookeeper.proto.DeleteRequest;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.zookeeper.proto.SetDataRequest;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.zookeeper.server.ZooKeeperSaslServer;<a name="line.75"></a>
+<span class="sourceLineNo">076</span><a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.shaded.com.google.protobuf.InvalidProtocolBufferException;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos;<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> * Internal HBase utility class for ZooKeeper.<a name="line.82"></a>
+<span class="sourceLineNo">083</span> *<a name="line.83"></a>
+<span class="sourceLineNo">084</span> * &lt;p&gt;Contains only static methods and constants.<a name="line.84"></a>
+<span class="sourceLineNo">085</span> *<a name="line.85"></a>
+<span class="sourceLineNo">086</span> * &lt;p&gt;Methods all throw {@link KeeperException} if there is an unexpected<a name="line.86"></a>
+<span class="sourceLineNo">087</span> * zookeeper exception, so callers of these methods must handle appropriately.<a name="line.87"></a>
+<span class="sourceLineNo">088</span> * If ZK is required for the operation, the server will need to be aborted.<a name="line.88"></a>
+<span class="sourceLineNo">089</span> */<a name="line.89"></a>
+<span class="sourceLineNo">090</span>@InterfaceAudience.Private<a name="line.90"></a>
+<span class="sourceLineNo">091</span>public final class ZKUtil {<a name="line.91"></a>
+<span class="sourceLineNo">092</span>  private static final Log LOG = LogFactory.getLog(ZKUtil.class);<a name="line.92"></a>
+<span class="sourceLineNo">093</span><a name="line.93"></a>
+<span class="sourceLineNo">094</span>  private static int zkDumpConnectionTimeOut;<a name="line.94"></a>
+<span class="sourceLineNo">095</span><a name="line.95"></a>
+<span class="sourceLineNo">096</span>  private ZKUtil() {<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>   * Creates a new connection to ZooKeeper, pulling settings and ensemble config<a name="line.100"></a>
+<span class="sourceLineNo">101</span>   * from the specified configuration object using methods from {@link ZKConfig}.<a name="line.101"></a>
+<span class="sourceLineNo">102</span>   *<a name="line.102"></a>
+<span class="sourceLineNo">103</span>   * Sets the connection status monitoring watcher to the specified watcher.<a name="line.103"></a>
+<span class="sourceLineNo">104</span>   *<a name="line.104"></a>
+<span class="sourceLineNo">105</span>   * @param conf configuration to pull ensemble and other settings from<a name="line.105"></a>
+<span class="sourceLineNo">106</span>   * @param watcher watcher to monitor connection changes<a name="line.106"></a>
+<span class="sourceLineNo">107</span>   * @return connection to zookeeper<a name="line.107"></a>
+<span class="sourceLineNo">108</span>   * @throws IOException if unable to connect to zk or config problem<a name="line.108"></a>
+<span class="sourceLineNo">109</span>   */<a name="line.109"></a>
+<span class="sourceLineNo">110</span>  public static RecoverableZooKeeper connect(Configuration conf, Watcher watcher)<a name="line.110"></a>
+<span class="sourceLineNo">111</span>  throws IOException {<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    String ensemble = ZKConfig.getZKQuorumServersString(conf);<a name="line.112"></a>
+<span class="sourceLineNo">113</span>    return connect(conf, ensemble, watcher);<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>  public static RecoverableZooKeeper connect(Configuration conf, String ensemble,<a name="line.116"></a>
+<span class="sourceLineNo">117</span>      Watcher watcher)<a name="line.117"></a>
+<span class="sourceLineNo">118</span>  throws IOException {<a name="line.118"></a>
+<span class="sourceLineNo">119</span>    return connect(conf, ensemble, watcher, null);<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>  public static RecoverableZooKeeper connect(Configuration conf, String ensemble,<a name="line.122"></a>
+<span class="sourceLineNo">123</span>      Watcher watcher, final String identifier)<a name="line.123"></a>
+<span class="sourceLineNo">124</span>  throws IOException {<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    if(ensemble == null) {<a name="line.125"></a>
+<span class="sourceLineNo">126</span>      throw new IOException("Unable to determine ZooKeeper ensemble");<a name="line.126"></a>
+<span class="sourceLineNo">127</span>    }<a name="line.127"></a>
+<span class="sourceLineNo">128</span>    int timeout = conf.getInt(HConstants.ZK_SESSION_TIMEOUT,<a name="line.128"></a>
+<span class="sourceLineNo">129</span>        HConstants.DEFAULT_ZK_SESSION_TIMEOUT);<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    if (LOG.isTraceEnabled()) {<a name="line.130"></a>
+<span class="sourceLineNo">131</span>      LOG.trace(identifier + " opening connection to ZooKeeper ensemble=" + ensemble);<a name="line.131"></a>
+<span class="sourceLineNo">132</span>    }<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    int retry = conf.getInt("zookeeper.recovery.retry", 3);<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    int retryIntervalMillis =<a name="line.134"></a>
+<span class="sourceLineNo">135</span>      conf.getInt("zookeeper.recovery.retry.intervalmill", 1000);<a name="line.135"></a>
+<span class="sourceLineNo">136</span>    int maxSleepTime = conf.getInt("zookeeper.recovery.retry.maxsleeptime", 60000);<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    zkDumpConnectionTimeOut = conf.getInt("zookeeper.dump.connection.timeout",<a name="line.137"></a>
+<span class="sourceLineNo">138</span>        1000);<a name="line.138"></a>
+<span class="sourceLineNo">139</span>    return new RecoverableZooKeeper(ensemble, timeout, watcher,<a name="line.139"></a>
+<span class="sourceLineNo">140</span>        retry, retryIntervalMillis, maxSleepTime, identifier);<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>   * Log in the current zookeeper server process using the given configuration<a name="line.144"></a>
+<span class="sourceLineNo">145</span>   * keys for the credential file and login principal.<a name="line.145"></a>
 <span class="sourceLineNo">146</span>   *<a name="line.146"></a>
-<span class="sourceLineNo">147</span>   * @param conf The configuration data to use<a name="line.147"></a>
-<span class="sourceLineNo">148</span>   * @param keytabFileKey Property key used to configure the path to the credential file<a name="line.148"></a>
-<span class="sourceLineNo">149</span>   * @param userNameKey Property key used to configure the login principal<a name="line.149"></a>
-<span class="sourceLineNo">150</span>   * @param hostname Current hostname to use in any credentials<a name="line.150"></a>
-<span class="sourceLineNo">151</span>   * @throws IOException underlying exception from SecurityUtil.login() call<a name="line.151"></a>
-<span class="sourceLineNo">152</span>   */<a name="line.152"></a>
-<span class="sourceLineNo">153</span>  public static void loginServer(Configuration conf, String keytabFileKey,<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      String userNameKey, String hostname) throws IOException {<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    login(conf, keytabFileKey, userNameKey, hostname,<a name="line.155"></a>
-<span class="sourceLineNo">156</span>          ZooKeeperSaslServer.LOGIN_CONTEXT_NAME_KEY,<a name="line.156"></a>
-<span class="sourceLineNo">157</span>          JaasConfiguration.SERVER_KEYTAB_KERBEROS_CONFIG_NAME);<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>  /**<a name="line.160"></a>
-<span class="sourceLineNo">161</span>   * Log in the current zookeeper client using the given configuration<a name="line.161"></a>
-<span class="sourceLineNo">162</span>   * keys for the credential file and login principal.<a name="line.162"></a>
-<span class="sourceLineNo">163</span>   *<a name="line.163"></a>
-<span class="sourceLineNo">164</span>   * &lt;p&gt;&lt;strong&gt;This is only applicable when running on secure hbase&lt;/strong&gt;<a name="line.164"></a>
-<span class="sourceLineNo">165</span>   * On regular HBase (without security features), this will safely be ignored.<a name="line.165"></a>
-<span class="sourceLineNo">166</span>   * &lt;/p&gt;<a name="line.166"></a>
+<span class="sourceLineNo">147</span>   * &lt;p&gt;&lt;strong&gt;This is only applicable when running on secure hbase&lt;/strong&gt;<a name="line.147"></a>
+<span class="sourceLineNo">148</span>   * On regular HBase (without security features), this will safely be ignored.<a name="line.148"></a>
+<span class="sourceLineNo">149</span>   * &lt;/p&gt;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>   *<a name="line.150"></a>
+<span class="sourceLineNo">151</span>   * @param conf The configuration data to use<a name="line.151"></a>
+<span class="sourceLineNo">152</span>   * @param keytabFileKey Property key used to configure the path to the credential file<a name="line.152"></a>
+<span class="sourceLineNo">153</span>   * @param userNameKey Property key used to configure the login principal<a name="line.153"></a>
+<span class="sourceLineNo">154</span>   * @param hostname Current hostname to use in any credentials<a name="line.154"></a>
+<span class="sourceLineNo">155</span>   * @throws IOException underlying exception from SecurityUtil.login() call<a name="line.155"></a>
+<span class="sourceLineNo">156</span>   */<a name="line.156"></a>
+<span class="sourceLineNo">157</span>  public static void loginServer(Configuration conf, String keytabFileKey,<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      String userNameKey, String hostname) throws IOException {<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    login(conf, keytabFileKey, userNameKey, hostname,<a name="line.159"></a>
+<span class="sourceLineNo">160</span>          ZooKeeperSaslServer.LOGIN_CONTEXT_NAME_KEY,<a name="line.160"></a>
+<span class="sourceLineNo">161</span>          JaasConfiguration.SERVER_KEYTAB_KERBEROS_CONFIG_NAME);<a name="line.161"></a>
+<span class="sourceLineNo">162</span>  }<a name="line.162"></a>
+<span class="sourceLineNo">163</span><a name="line.163"></a>
+<span class="sourceLineNo">164</span>  /**<a name="line.164"></a>
+<span class="sourceLineNo">165</span>   * Log in the current zookeeper client using the given configuration<a name="line.165"></a>
+<span class="sourceLineNo">166</span>   * keys for the credential file and login principal.<a name="line.166"></a>
 <span class="sourceLineNo">167</span>   *<a name="line.167"></a>
-<span class="sourceLineNo">168</span>   * @param conf The configuration data to use<a name="line.168"></a>
-<span class="sourceLineNo">169</span>   * @param keytabFileKey Property key used to configure the path to the credential file<a name="line.169"></a>
-<span class="sourceLineNo">170</span>   * @param userNameKey Property key used to configure the login principal<a name="line.170"></a>
-<span class="sourceLineNo">171</span>   * @param hostname Current hostname to use in any credentials<a name="line.171"></a>
-<span class="sourceLineNo">172</span>   * @throws IOException underlying exception from SecurityUtil.login() call<a name="line.172"></a>
-<span class="sourceLineNo">173</span>   */<a name="line.173"></a>
-<span class="sourceLineNo">174</span>  public static void loginClient(Configuration conf, String keytabFileKey,<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      String userNameKey, String hostname) throws IOException {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    login(conf, keytabFileKey, userNameKey, hostname,<a name="line.176"></a>
-<span class="sourceLineNo">177</span>          ZooKeeperSaslClient.LOGIN_CONTEXT_NAME_KEY,<a name="line.177"></a>
-<span class="sourceLineNo">178</span>          JaasConfiguration.CLIENT_KEYTAB_KERBEROS_CONFIG_NAME);<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>   * Log in the current process using the given configuration keys for the<a name="line.182"></a>
-<span class="sourceLineNo">183</span>   * credential file and login principal.<a name="line.183"></a>
-<span class="sourceLineNo">184</span>   *<a name="line.184"></a>
-<span class="sourceLineNo">185</span>   * &lt;p&gt;&lt;strong&gt;This is only applicable when running on secure hbase&lt;/strong&gt;<a name="line.185"></a>
-<span class="sourceLineNo">186</span>   * On regular HBase (without security features), this will safely be ignored.<a name="line.186"></a>
-<span class="sourceLineNo">187</span>   * &lt;/p&gt;<a name="line.187"></a>
+<span class="sourceLineNo">168</span>   * &lt;p&gt;&lt;strong&gt;This is only applicable when running on secure hbase&lt;/strong&gt;<a name="line.168"></a>
+<span class="sourceLineNo">169</span>   * On regular HBase (without security features), this will safely be ignored.<a name="line.169"></a>
+<span class="sourceLineNo">170</span>   * &lt;/p&gt;<a name="line.170"></a>
+<span class="sourceLineNo">171</span>   *<a name="line.171"></a>
+<span class="sourceLineNo">172</span>   * @param conf The configuration data to use<a name="line.172"></a>
+<span class="sourceLineNo">173</span>   * @param keytabFileKey Property key used to configure the path to the credential file<a name="line.173"></a>
+<span class="sourceLineNo">174</span>   * @param userNameKey Property key used to configure the login principal<a name="line.174"></a>
+<span class="sourceLineNo">175</span>   * @param hostname Current hostname to use in any credentials<a name="line.175"></a>
+<span class="sourceLineNo">176</span>   * @throws IOException underlying exception from SecurityUtil.login() call<a name="line.176"></a>
+<span class="sourceLineNo">177</span>   */<a name="line.177"></a>
+<span class="sourceLineNo">178</span>  public static void loginClient(Configuration conf, String keytabFileKey,<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      String userNameKey, String hostname) throws IOException {<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    login(conf, keytabFileKey, userNameKey, hostname,<a name="line.180"></a>
+<span class="sourceLineNo">181</span>          ZooKeeperSaslClient.LOGIN_CONTEXT_NAME_KEY,<a name="line.181"></a>
+<span class="sourceLineNo">182</span>          JaasConfiguration.CLIENT_KEYTAB_KERBEROS_CONFIG_NAME);<a name="line.182"></a>
+<span class="sourceLineNo">183</span>  }<a name="line.183"></a>
+<span class="sourceLineNo">184</span><a name="line.184"></a>
+<span class="sourceLineNo">185</span>  /**<a name="line.185"></a>
+<span class="sourceLineNo">186</span>   * Log in the current process using the given configuration keys for the<a name="line.186"></a>
+<span class="sourceLineNo">187</span>   * credential file and login principal.<a name="line.187"></a>
 <span class="sourceLineNo">188</span>   *<a name="line.188"></a>
-<span class="sourceLineNo">189</span>   * @param conf The configuration data to use<a name="line.189"></a>
-<span class="sourceLineNo">190</span>   * @param keytabFileKey Property key used to configure the path to the credential file<a name="line.190"></a>
-<span class="sourceLineNo">191</span>   * @param userNameKey Property key used to configure the login principal<a name="line.191"></a>
-<span class="sourceLineNo">192</span>   * @param hostname Current hostname to use in any credentials<a name="line.192"></a>
-<span class="sourceLineNo">193</span>   * @param loginContextProperty property name to expose the entry name<a name="line.193"></a>
-<span class="sourceLineNo">194</span>   * @param loginContextName jaas entry name<a name="line.194"></a>
-<span class="sourceLineNo">195</span>   * @throws IOException underlying exception from SecurityUtil.login() call<a name="line.195"></a>
-<span class="sourceLineNo">196</span>   */<a name="line.196"></a>
-<span class="sourceLineNo">197</span>  private static void login(Configuration conf, String keytabFileKey,<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      String userNameKey, String hostname,<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      String loginContextProperty, String loginContextName)<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      throws IOException {<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    if (!isSecureZooKeeper(conf))<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>    // User has specified a jaas.conf, keep this one as the good one.<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    // HBASE_OPTS="-Djava.security.auth.login.config=jaas.conf"<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    if (System.getProperty("java.security.auth.login.config") != null)<a name="line.206"></a>
-<span class="sourceLineNo">207</span>      return;<a name="line.207"></a>
+<span class="sourceLineNo">189</span>   * &lt;p&gt;&lt;strong&gt;This is only applicable when running on secure hbase&lt;/strong&gt;<a name="line.189"></a>
+<span class="sourceLineNo">190</span>   * On regular HBase (without security features), this will safely be ignored.<a name="line.190"></a>
+<span class="sourceLineNo">191</span>   * &lt;/p&gt;<a name="line.191"></a>
+<span class="sourceLineNo">192</span>   *<a name="line.192"></a>
+<span class="sourceLineNo">193</span>   * @param conf The configuration data to use<a name="line.193"></a>
+<span class="sourceLineNo">194</span>   * @param keytabFileKey Property key used to configure the path to the credential file<a name="line.194"></a>
+<span class="sourceLineNo">195</span>   * @param userNameKey Property key used to configure the login principal<a name="line.195"></a>
+<span class="sourceLineNo">196</span>   * @param hostname Current hostname to use in any credentials<a name="line.196"></a>
+<span class="sourceLineNo">197</span>   * @param loginContextProperty property name to expose the entry name<a name="line.197"></a>
+<span class="sourceLineNo">198</span>   * @param loginContextName jaas entry name<a name="line.198"></a>
+<span class="sourceLineNo">199</span>   * @throws IOException underlying exception from SecurityUtil.login() call<a name="line.199"></a>
+<span class="sourceLineNo">200</span>   */<a name="line.200"></a>
+<span class="sourceLineNo">201</span>  private static void login(Configuration conf, String keytabFileKey,<a name="line.201"></a>
+<span class="sourceLineNo">202</span>      String userNameKey, String hostname,<a name="line.202"></a>
+<span class="sourceLineNo">203</span>      String loginContextProperty, String loginContextName)<a name="line.203"></a>
+<span class="sourceLineNo">204</span>      throws IOException {<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    if (!isSecureZooKeeper(conf)) {<a name="line.205"></a>
+<span class="sourceLineNo">206</span>      return;<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    }<a name="line.207"></a>
 <span class="sourceLineNo">208</span><a name="line.208"></a>
-<span class="sourceLineNo">209</span>    // No keytab specified, no auth<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    String keytabFilename = conf.get(keytabFileKey);<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    if (keytabFilename == null) {<a name="line.211"></a>
-<span class="sourceLineNo">212</span>      LOG.warn("no keytab specified for: " + keytabFileKey);<a name="line.212"></a>
-<span class="sourceLineNo">213</span>      return;<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    }<a name="line.214"></a>
-<span class="sourceLineNo">215</span><a name="line.215"></a>
-<span class="sourceLineNo">216</span>    String principalConfig = conf.get(userNameKey, System.getProperty("user.name"));<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    String principalName = SecurityUtil.getServerPrincipal(principalConfig, hostname);<a name="line.217"></a>
-<span class="sourceLineNo">218</span><a name="line.218"></a>
-<span class="sourceLineNo">219</span>    // Initialize the "jaas.conf" for keyTab/principal,<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    // If keyTab is not specified use the Ticket Cache.<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    // and set the zookeeper login context name.<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    JaasConfiguration jaasConf = new JaasConfiguration(loginContextName,<a name="line.222"></a>
-<span class="sourceLineNo">223</span>        principalName, keytabFilename);<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    javax.security.auth.login.Configuration.setConfiguration(jaasConf);<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    System.setProperty(loginContextProperty, loginContextName);<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>  /**<a name="line.228"></a>
-<span class="sourceLineNo">229</span>   * A JAAS configuration that defines the login modules that we want to use for login.<a name="line.229"></a>
-<span class="sourceLineNo">230</span>   */<a name="line.230"></a>
-<span class="sourceLineNo">231</span>  private static class JaasConfiguration extends javax.security.auth.login.Configuration {<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    private static final String SERVER_KEYTAB_KERBEROS_CONFIG_NAME =<a name="line.232"></a>
-<span class="sourceLineNo">233</span>      "zookeeper-server-keytab-kerberos";<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    private static final String CLIENT_KEYTAB_KERBEROS_CONFIG_NAME =<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      "zookeeper-client-keytab-kerberos";<a name="line.235"></a>
-<span class="sourceLineNo">236</span><a name="line.236"></a>
-<span class="sourceLineNo">237</span>    private static final Map&lt;String, String&gt; BASIC_JAAS_OPTIONS = new HashMap&lt;&gt;();<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    static {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>      String jaasEnvVar = System.getenv("HBASE_JAAS_DEBUG");<a name="line.239"></a>
-<span class="sourceLineNo">240</span>      if (jaasEnvVar != null &amp;&amp; "true".equalsIgnoreCase(jaasEnvVar)) {<a name="line.240"></a>
-<span class="sourceLineNo">241</span>        BASIC_JAAS_OPTIONS.put("debug", "true");<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      }<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    }<a name="line.243"></a>
-<span class="sourceLineNo">244</span><a name="line.244"></a>
-<span class="sourceLineNo">245</span>    private static final Map&lt;String,String&gt; KEYTAB_KERBEROS_OPTIONS = new HashMap&lt;&gt;();<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    static {<a name="line.246"></a>
-<span class="sourceLineNo">247</span>      KEYTAB_KERBEROS_OPTIONS.put("doNotPrompt", "true");<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      KEYTAB_KERBEROS_OPTIONS.put("storeKey", "true");<a name="line.248"></a>
-<span class="sourceLineNo">249</span>      KEYTAB_KERBEROS_OPTIONS.put("refreshKrb5Config", "true");<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      KEYTAB_KERBEROS_OPTIONS.putAll(BASIC_JAAS_OPTIONS);<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>    private static final AppConfigurationEntry KEYTAB_KERBEROS_LOGIN =<a name="line.253"></a>
-<span class="sourceLineNo">254</span>      new AppConfigurationEntry(KerberosUtil.getKrb5LoginModuleName(),<a name="line.254"></a>
-<span class="sourceLineNo">255</span>                                LoginModuleControlFlag.REQUIRED,<a name="line.255"></a>
-<span class="sourceLineNo">256</span>                                KEYTAB_KERBEROS_OPTIONS);<a name="line.256"></a>
-<span class="sourceLineNo">257</span><a name="line.257"></a>
-<span class="sourceLineNo">258</span>    private static final AppConfigurationEntry[] KEYTAB_KERBEROS_CONF =<a name="line.258"></a>
-<span class="sourceLineNo">259</span>      new AppConfigurationEntry[]{KEYTAB_KERBEROS_LOGIN};<a name="line.259"></a>
-<span class="sourceLineNo">260</span><a name="line.260"></a>
-<span class="sourceLineNo">261</span>    private javax.security.auth.login.Configuration baseConfig;<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    private final String loginContextName;<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    private final boolean useTicketCache;<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    private final String keytabFile;<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    private final String principal;<a name="line.265"></a>
+<span class="sourceLineNo">209</span>    // User has specified a jaas.conf, keep this one as the good one.<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    // HBASE_OPTS="-Djava.security.auth.login.config=jaas.conf"<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    if (System.getProperty("java.security.auth.login.config") != null) {<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      return;<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>    // No keytab specified, no auth<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    String keytabFilename = conf.get(keytabFileKey);<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    if (keytabFilename == null) {<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      LOG.warn("no keytab specified for: " + keytabFileKey);<a name="line.218"></a>
+<span class="sourceLineNo">219</span>      return;<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    }<a name="line.220"></a>
+<span class="sourceLineNo">221</span><a name="line.221"></a>
+<span class="sourceLineNo">222</span>    String principalConfig = conf.get(userNameKey, System.getProperty("user.name"));<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    String principalName = SecurityUtil.getServerPrincipal(principalConfig, hostname);<a name="line.223"></a>
+<span class="sourceLineNo">224</span><a name="line.224"></a>
+<span class="sourceLineNo">225</span>    // Initialize the "jaas.conf" for keyTab/principal,<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    // If keyTab is not specified use the Ticket Cache.<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    // and set the zookeeper login context name.<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    JaasConfiguration jaasConf = new JaasConfiguration(loginContextName,<a name="line.228"></a>
+<span class="sourceLineNo">229</span>        principalName, keytabFilename);<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    javax.security.auth.login.Configuration.setConfiguration(jaasConf);<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    System.setProperty(loginContextProperty, loginContextName);<a name="line.231"></a>
+<span class="sourceLineNo">232</span>  }<a name="line.232"></a>
+<span class="sourceLineNo">233</span><a name="line.233"></a>
+<span class="sourceLineNo">234</span>  /**<a name="line.234"></a>
+<span class="sourceLineNo">235</span>   * A JAAS configuration that defines the login modules that we want to use for login.<a name="line.235"></a>
+<span class="sourceLineNo">236</span>   */<a name="line.236"></a>
+<span class="sourceLineNo">237</span>  private static class JaasConfiguration extends javax.security.auth.login.Configuration {<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    private static final String SERVER_KEYTAB_KERBEROS_CONFIG_NAME =<a name="line.238"></a>
+<span class="sourceLineNo">239</span>      "zookeeper-server-keytab-kerberos";<a name="line.239"></a>
+<span class="sourceLineNo">240</span>    private static final String CLIENT_KEYTAB_KERBEROS_CONFIG_NAME =<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      "zookeeper-client-keytab-kerberos";<a name="line.241"></a>
+<span class="sourceLineNo">242</span><a name="line.242"></a>
+<span class="sourceLineNo">243</span>    private static final Map&lt;String, String&gt; BASIC_JAAS_OPTIONS = new HashMap&lt;&gt;();<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    static {<a name="line.244"></a>
+<span class="sourceLineNo">245</span>      String jaasEnvVar = System.getenv("HBASE_JAAS_DEBUG");<a name="line.245"></a>
+<span class="sourceLineNo">246</span>      if (jaasEnvVar != null &amp;&amp; "true".equalsIgnoreCase(jaasEnvVar)) {<a name="line.246"></a>
+<span class="sourceLineNo">247</span>        BASIC_JAAS_OPTIONS.put("debug", "true");<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>    private static final Map&lt;String,String&gt; KEYTAB_KERBEROS_OPTIONS = new HashMap&lt;&gt;();<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    static {<a name="line.252"></a>
+<span class="sourceLineNo">253</span>      KEYTAB_KERBEROS_OPTIONS.put("doNotPrompt", "true");<a name="line.253"></a>
+<span class="sourceLineNo">254</span>      KEYTAB_KERBEROS_OPTIONS.put("storeKey", "true");<a name="line.254"></a>
+<span class="sourceLineNo">255</span>      KEYTAB_KERBEROS_OPTIONS.put("refreshKrb5Config", "true");<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      KEYTAB_KERBEROS_OPTIONS.putAll(BASIC_JAAS_OPTIONS);<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    }<a name="line.257"></a>
+<span class="sourceLineNo">258</span><a name="line.258"></a>
+<span class="sourceLineNo">259</span>    private static final AppConfigurationEntry KEYTAB_KERBEROS_LOGIN =<a name="line.259"></a>
+<span class="sourceLineNo">260</span>      new AppConfigurationEntry(KerberosUtil.getKrb5LoginModuleName(),<a name="line.260"></a>
+<span class="sourceLineNo">261</span>                                LoginModuleControlFlag.REQUIRED,<a name="line.261"></a>
+<span class="sourceLineNo">262</span>                                KEYTAB_KERBEROS_OPTIONS);<a name="line.262"></a>
+<span class="sourceLineNo">263</span><a name="line.263"></a>
+<span class="sourceLineNo">264</span>    private static final AppConfigurationEntry[] KEYTAB_KERBEROS_CONF =<a name="line.264"></a>
+<span class="sourceLineNo">265</span>      new AppConfigurationEntry[]{KEYTAB_KERBEROS_LOGIN};<a name="line.265"></a>
 <span class="sourceLineNo">266</span><a name="line.266"></a>
-<span class="sourceLineNo">267</span>    public JaasConfiguration(String loginContextName, String principal, String keytabFile) {<a name="line.267"></a>
-<span class="sourceLineNo">268</span>      this(loginContextName, principal, keytabFile, keytabFile == null || keytabFile.length() == 0);<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>    private JaasConfiguration(String loginContextName, String principal,<a name="line.271"></a>
-<span class="sourceLineNo">272</span>                             String keytabFile, boolean useTicketCache) {<a name="line.272"></a>
-<span class="sourceLineNo">273</span>      try {<a name="line.273"></a>
-<span class="sourceLineNo">274</span>        this.baseConfig = javax.security.auth.login.Configuration.getConfiguration();<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      } catch (SecurityException e) {<a name="line.275"></a>
-<span class="sourceLineNo">276</span>        this.baseConfig = null;<a name="line.276"></a>
-<span class="sourceLineNo">277</span>      }<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      this.loginContextName = loginContextName;<a name="line.278"></a>
-<span class="sourceLineNo">279</span>      this.useTicketCache = useTicketCache;<a name="line.279"></a>
-<span class="sourceLineNo">280</span>      this.keytabFile = keytabFile;<a name="line.280"></a>
-<span class="sourceLineNo">281</span>      this.principal = principal;<a name="line.281"></a>
-<span class="sourceLineNo">282</span>      LOG.info("JaasConfiguration loginContextName=" + loginContextName +<a name="line.282"></a>
-<span class="sourceLineNo">283</span>               " principal=" + principal + " useTicketCache=" + useTicketCache +<a name="line.283"></a>
-<span class="sourceLineNo">284</span>               " keytabFile=" + keytabFile);<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>    @Override<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    public AppConfigurationEntry[] getAppConfigurationEntry(String appName) {<a name="line.288"></a>
-<span class="sourceLineNo">289</span>      if (loginContextName.equals(appName)) {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        if (!useTicketCache) {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>          KEYTAB_KERBEROS_OPTIONS.put("keyTab", keytabFile);<a name="line.291"></a>
-<span class="sourceLineNo">292</span>          KEYTAB_KERBEROS_OPTIONS.put("useKeyTab", "true");<a name="line.292"></a>
-<span class="sourceLineNo">293</span>        }<a name="line.293"></a>
-<span class="sourceLineNo">294</span>        KEYTAB_KERBEROS_OPTIONS.put("principal", principal);<a name="line.294"></a>
-<span class="sourceLineNo">295</span>        KEYTAB_KERBEROS_OPTIONS.put("useTicketCache", useTicketCache ? "true" : "false");<a name="line.295"></a>
-<span class="sourceLineNo">296</span>        return KEYTAB_KERBEROS_CONF;<a name="line.296"></a>
-<span class="sourceLineNo">297</span>      }<a name="line.297"></a>
-<span class="sourceLineNo">298</span>      if (baseConfig != null) return baseConfig.getAppConfigurationEntry(appName);<a name="line.298"></a>
-<span class="sourceLineNo">299</span>      return(null);<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    }<a name="line.300"></a>
-<span class="sourceLineNo">301</span>  }<a name="line.301"></a>
-<span class="sourceLineNo">302</span><a name="line.302"></a>
-<span class="sourceLineNo">303</span>  //<a name="line.303"></a>
-<span class="sourceLineNo">304</span>  // Helper methods<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>   * Returns the full path of the immediate parent of the specified node.<a name="line.307"></a>
-<span class="sourceLineNo">308</span>   * @param node path to get parent of<a name="line.308"></a>
-<span class="sourceLineNo">309</span>   * @return parent of path, null if passed the root node or an invalid node<a name="line.309"></a>
-<span class="sourceLineNo">310</span>   */<a name="line.310"></a>
-<span class="sourceLineNo">311</span>  public static String getParent(String node) {<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    int idx = node.lastIndexOf(ZNodePaths.ZNODE_PATH_SEPARATOR);<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    return idx &lt;= 0 ? null : node.substring(0, idx);<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">267</span>    private javax.security.auth.login.Configuration baseConfig;<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    private final String loginContextName;<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    private final boolean useTicketCache;<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    private final String keytabFile;<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    private final String principal;<a name="line.271"></a>
+<span class="sourceLineNo">272</span><a name="line.272"></a>
+<span class="sourceLineNo">273</span>    public JaasConfiguration(String loginContextName, String principal, String keytabFile) {<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      this(loginContextName, principal, keytabFile, keytabFile == null || keytabFile.length() == 0);<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>    private JaasConfiguration(String loginContextName, String principal,<a name="line.277"></a>
+<span class="sourceLineNo">278</span>                             String keytabFile, boolean useTicketCache) {<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      try {<a name="line.279"></a>
+<span class="sourceLineNo">280</span>        this.baseConfig = javax.security.auth.login.Configuration.getConfiguration();<a name="line.280"></a>
+<span class="sourceLineNo">281</span>      } catch (SecurityException e) {<a name="line.281"></a>
+<span class="sourceLineNo">282</span>        this.baseConfig = null;<a name="line.282"></a>
+<span class="sourceLineNo">283</span>      }<a name="line.283"></a>
+<span class="sourceLineNo">284</span>      this.loginContextName = loginContextName;<a name="line.284"></a>
+<span class="sourceLineNo">285</span>      this.useTicketCache = useTicketCache;<a name="line.285"></a>
+<span class="sourceLineNo">286</span>      this.keytabFile = keytabFile;<a name="line.286"></a>
+<span class="sourceLineNo">287</span>      this.principal = principal;<a name="line.287"></a>
+<span class="sourceLineNo">288</span>      LOG.info("JaasConfiguration loginContextName=" + loginContextName +<a name="line.288"></a>
+<span class="sourceLineNo">289</span>               " principal=" + principal + " useTicketCache=" + useTicketCache +<a name="line.289"></a>
+<span class="sourceLineNo">290</span>               " keytabFile=" + keytabFile);<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    }<a name="line.291"></a>
+<span class="sourceLineNo">292</span><a name="line.292"></a>
+<span class="sourceLineNo">293</span>    @Override<a name="line.293"></a>
+<span class="sourceLineNo">294</span>    public AppConfigurationEntry[] getAppConfigurationEntry(String appName) {<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      if (loginContextName.equals(appName)) {<a name="line.295"></a>
+<span class="sourceLineNo">296</span>        if (!useTicketCache) {<a name="line.296"></a>
+<span class="sourceLineNo">297</span>          KEYTAB_KERBEROS_OPTIONS.put("keyTab", keytabFile);<a name="line.297"></a>
+<span class="sourceLineNo">298</span>          KEYTAB_KERBEROS_OPTIONS.put("useKeyTab", "true");<a name="line.298"></a>
+<span class="sourceLineNo">299</span>        }<a name="line.299"></a>
+<span class="sourceLineNo">300</span>        KEYTAB_KERBEROS_OPTIONS.put("principal", principal);<a name="line.300"></a>
+<span class="sourceLineNo">301</span>        KEYTAB_KERBEROS_OPTIONS.put("useTicketCache", useTicketCache ? "true" : "false");<a name="line.301"></a>
+<span class="sourceLineNo">302</span>        return KEYTAB_KERBEROS_CONF;<a name="line.302"></a>
+<span class="sourceLineNo">303</span>      }<a name="line.303"></a>
+<span class="sourceLineNo">304</span><a name="line.304"></a>
+<span class="sourceLineNo">305</span>      if (baseConfig != null) {<a name="line.305"></a>
+<span class="sourceLineNo">306</span>        return baseConfig.getAppConfigurationEntry(appName);<a name="line.306"></a>
+<span class="sourceLineNo">307</span>      }<a name="line.307"></a>
+<span class="sourceLineNo">308</span><a name="line.308"></a>
+<span class="sourceLineNo">309</span>      return(null);<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><a name="line.312"></a>
+<span class="sourceLineNo">313</span>  //<a name="line.313"></a>
+<span class="sourceLineNo">314</span>  // Helper methods<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>   * Get the name of the current node from the specified fully-qualified path.<a name="line.317"></a>
-<span class="sourceLineNo">318</span>   * @param path fully-qualified path<a name="line.318"></a>
-<span class="sourceLineNo">319</span>   * @return name of the current node<a name="line.319"></a>
+<span class="sourceLineNo">317</span>   * Returns the full path of the immediate parent of the specified node.<a name="line.317"></a>
+<span class="sourceLineNo">318</span>   * @param node path to get parent of<a name="line.318"></a>
+<span class="sourceLineNo">319</span>   * @return parent of path, null if passed the root node or an invalid node<a name="line.319"></a>
 <span class="sourceLineNo">320</span>   */<a name="line.320"></a>
-<span class="sourceLineNo">321</span>  public static String getNodeName(String path) {<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    return path.substring(path.lastIndexOf("/")+1);<a name="line.322"></a>
-<span class="sourceLineNo">323</span>  }<a name="line.323"></a>
-<span class="sourceLineNo">324</span><a name="line.324"></a>
-<span class="sourceLineNo">325</span>  //<a name="line.325"></a>
-<span class="sourceLineNo">326</span>  // Existence checks and watches<a name="line.326"></a>
-<span class="sourceLineNo">327</span>  //<a name="line.327"></a>
-<span class="sourceLineNo">328</span><a name="line.328"></a>
-<span class="sourceLineNo">329</span>  /**<a name="line.329"></a>
-<span class="sourceLineNo">330</span>   * Watch the specified znode for delete/create/change events.  The watcher is<a name="line.330"></a>
-<span class="sourceLineNo">331</span>   * set whether or not the node exists.  If the node already exists, the method<a name="line.331"></a>
-<span class="sourceLineNo">332</span>   * returns true.  If the node does not exist, the method returns false.<a name="line.332"></a>
-<span class="sourceLineNo">333</span>   *<a name="line.333"></a>
-<span class="sourceLineNo">334</span>   * @param zkw zk reference<a name="line.334"></a>
-<span class="sourceLineNo">335</span>   * @param znode path of node to watch<a name="line.335"></a>
-<span class="sourceLineNo">336</span>   * @return true if znode exists, false if does not exist or error<a name="line.336"></a>
-<span class="sourceLineNo">337</span>   * @throws KeeperException if unexpected zookeeper exception<a name="line.337"></a>
-<span class="sourceLineNo">338</span>   */<a name="line.338"></a>
-<span class="sourceLineNo">339</span>  public static boolean watchAndCheckExists(ZKWatcher zkw, String znode)<a name="line.339"></a>
-<span class="sourceLineNo">340</span>  throws KeeperException {<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    try {<a name="line.341"></a>
-<span class="sourceLineNo">342</span>      Stat s = zkw.getRecoverableZooKeeper().exists(znode, zkw);<a name="line.342"></a>
-<span class="sourceLineNo">343</span>      boolean exists = s != null ? true : false;<a name="line.343"></a>
-<span class="sourceLineNo">344</span>      if (exists) {<a name="line.344"></a>
-<span class="sourceLineNo">345</span>        LOG.debug(zkw.prefix("Set watcher on existing znode=" + znode));<a name="line.345"></a>
-<span class="sourceLineNo">346</span>      } else {<a name="line.346"></a>
-<span class="sourceLineNo">347</span>        LOG.debug(zkw.prefix("Set watcher on znode that does not yet exist, " + znode));<a name="line.347"></a>
-<span class="sourceLineNo">348</span>      }<a name="line.348"></a>
-<span class="sourceLineNo">349</span>      return exists;<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    } catch (KeeperException e) {<a name="line.350"></a>
-<span class="sourceLineNo">351</span>      LOG.warn(zkw.prefix("Unable to set watcher on znode " + znode), e);<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      zkw.keeperException(e);<a name="line.352"></a>
-<span class="sourceLineNo">353</span>      return false;<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    } catch (InterruptedException e) {<a name="line.354"></a>
-<span class="sourceLineNo">355</span>      LOG.warn(zkw.prefix("Unable to set watcher on znode " + znode), e);<a name="line.355"></a>
-<span class="sourceLineNo">356</span>      zkw.interruptedException(e);<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      return false;<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    }<a name="line.358"></a>
-<span class="sourceLineNo">359</span>  }<a name="line.359"></a>
-<span class="sourceLineNo">360</span><a name="line.360"></a>
-<span class="sourceLineNo">361</span>  /**<a name="line.361"></a>
-<span class="sourceLineNo">362</span>   * Watch the specified znode, but only if exists. Useful when watching<a name="line.362"></a>
-<span class="sourceLineNo">363</span>   * for deletions. Uses .getData() (and handles NoNodeException) instead<a name="line.363"></a>
-<span class="sourceLineNo">364</span>   * of .exists() to accomplish this, as .getData() will only set a watch if<a name="line.364"></a>
-<span class="sourceLineNo">365</span>   * the znode exists.<a name="line.365"></a>
-<span class="sourceLineNo">366</span>   * @param zkw zk reference<a name="line.366"></a>
-<span class="sourceLineNo">367</span>   * @param znode path of node to watch<a name="line.367"></a>
-<span class="sourceLineNo">368</span>   * @return true if the watch is set, false if node does not exists<a name="line.368"></a>
-<span class="sourceLineNo">369</span>   * @throws KeeperException if unexpected zookeeper exception<a name="line.369"></a>
-<span class="sourceLineNo">370</span>   */<a name="line.370"></a>
-<span class="sourceLineNo">371</span>  public static boolean setWatchIfNodeExists(ZKWatcher zkw, String znode)<a name="line.371"></a>
-<span class="sourceLineNo">372</span>      throws KeeperException {<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    try {<a name="line.373"></a>
-<span class="sourceLineNo">374</span>      zkw.getRecoverableZooKeeper().getData(znode, true, null);<a name="line.374"></a>
-<span class="sourceLineNo">375</span>      return true;<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    } catch (NoNodeException e) {<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      return false;<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    } catch (InterruptedException e) {<a name="line.378"></a>
-<span class="sourceLineNo">379</span>      LOG.warn(zkw.prefix("Unable to set watcher on znode " + znode), e);<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      zkw.interruptedException(e);<a name="line.380"></a>
-<span class="sourceLineNo">381</span>      return false;<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>   * Check if the specified node exists.  Sets no watches.<a name="line.386"></a>
-<span class="sourceLineNo">387</span>   *<a name="line.387"></a>
-<span class="sourceLineNo">388</span>   * @param zkw zk reference<a name="line.388"></a>
-<span class="sourceLineNo">389</span>   * @param znode path of node to watch<a name="line.389"></a>
-<span class="sourceLineNo">390</span>   * @return version of the node if it exists, -1 if does not exist<a name="line.390"></a>
-<span class="sourceLineNo">391</span>   * @throws KeeperException if unexpected zookeeper exception<a name="line.391"></a>
-<span class="sourceLineNo">392</span>   */<a name="line.392"></a>
-<span class="sourceLineNo">393</span>  public static int checkExists(ZKWatcher zkw, String znode)<a name="line.393"></a>
-<span class="sourceLineNo">394</span>  throws KeeperException {<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    try {<a name="line.395"></a>
-<span class="sourceLineNo">396</span>      Stat s = zkw.getRecoverableZooKeeper().exists(znode, null);<a name="line.396"></a>
-<span class="sourceLineNo">397</span>      return s != null ? s.getVersion() : -1;<a name="line.397"></a>
-<span class="sourceLineNo">398</span>    } catch (KeeperException e) {<a name="line.398"></a>
-<span class="sourceLineNo">399</span>      LOG.warn(zkw.prefix("Unable to set watcher on znode (" + znode + ")"), e);<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      zkw.keeperException(e);<a name="line.400"></a>
-<span class="sourceLineNo">401</span>      return -1;<a name="line.401"></a>
-<span class="sourceLineNo">402</span>    } catch (InterruptedException e) {<a name="line.402"></a>
-<span class="sourceLineNo">403</span>      LOG.warn(zkw.prefix("Unable to set watcher on znode (" + znode + ")"), e);<a name="line.403"></a>
-<span class="sourceLineNo">404</span>      zkw.interruptedException(e);<a name="line.404"></a>
-<span class="sourceLineNo">405</span>      return -1;<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    }<a name="line.406"></a>
-<span class="sourceLineNo">407</span>  }<a name="line.407"></a>
-<span class="sourceLineNo">408</span><a name="line.408"></a>
-<span class="sourceLineNo">409</span>  //<a name="line.409"></a>
-<span class="sourceLineNo">410</span>  // Znode listings<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>   * Lists the children znodes of the specified znode.  Also sets a watch on<a name="line.414"></a>
-<span class="sourceLineNo">415</span>   * the specified znode which will capture a NodeDeleted event on the specified<a name="line.415"></a>
-<span class="sourceLineNo">416</span>   * znode as well as NodeChildrenChanged if any children of the specified znode<a name="line.416"></a>
-<span class="sourceLineNo">417</span>   * are created or deleted.<a name="line.417"></a>
-<span class="sourceLineNo">418</span>   *<a name="line.418"></a>
-<span class="sourceLineNo">419</span>   * Returns null if the specified node does not exist.  Otherwise returns a<a name="line.419"></a>
-<span class="sourceLineNo">420</span>   * list of children of the specified node.  If the node exists but it has no<a name="line.420"></a>
-<span class="sourceLineNo">421</span>   * children, an empty list will be returned.<a name="line.421"></a>
-<span class="sourceLineNo">422</span>   *<a name="line.422"></a>
-<span class="sourceLineNo">423</span>   * @param zkw zk reference<a name="line.423"></a>
-<span class="sourceLineNo">424</span>   * @param znode path of node to list and watch children of<a name="line.424"></a>
-<span class="sourceLineNo">425</span>   * @return list of children of the specified node, an empty list if the node<a name="line.425"></a>
-<span class="sourceLineNo">426</span>   *          exists but has no children, and null if the node does not exist<a name="line.426"></a>
-<span class="sourceLineNo">427</span>   * @throws KeeperException if unexpected zookeeper exception<a name="line.427"></a>
-<span class="sourceLineNo">428</span>   */<a name="line.428"></a>
-<span class="sourceLineNo">429</span>  public static List&lt;String&gt; listChildrenAndWatchForNewChildren(<a name="line.429"></a>
-<span class="sourceLineNo">430</span>          ZKWatcher zkw, String znode)<a name="line.430"></a>
-<span class="sourceLineNo">431</span>  throws KeeperException {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>    try {<a name="line.432"></a>
-<span class="sourceLineNo">433</span>      List&lt;String&gt; children = zkw.getRecoverableZooKeeper().getChildren(znode, zkw);<a name="line.433"></a>
-<span class="sourceLineNo">434</span>      return children;<a name="line.434"></a>
-<span class="sourceLineNo">435</span>    } catch(KeeperException.NoNodeException ke) {<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      LOG.debug(zkw.prefix("Unable to list children of znode " + znode + " " +<a name="line.436"></a>
-<span class="sourceLineNo">437</span>          "because node does not exist (not an error)"));<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      return null;<a name="line.438"></a>
-<span class="sourceLineNo">439</span>    } catch (KeeperException e) {<a name="line.439"></a>
-<span class="sourceLineNo">440</span>      LOG.warn(zkw.prefix("Unable to list children of znode " + znode + " "), e);<a name="line.440"></a>
-<span class="sourceLineNo">441</span>      zkw.keeperException(e);<a name="line.441"></a>
-<span class="sourceLineNo">442</span>      return null;<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    } catch (InterruptedException e) {<a name="line.443"></a>
-<span class="sourceLineNo">444</span>      LOG.warn(zkw.prefix("Unable to list children of znode " + znode + " "), e);<a name="line.444"></a>
-<span class="sourceLineNo">445</span>      zkw.interruptedException(e);<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      return null;<a name="line.446"></a>
-<span class="sourceLineNo">447</span>    }<a name="line.447"></a>
-<span class="sourceLineNo">448</span>  }<a name="line.448"></a>
-<span class="sourceLineNo">449</span><a name="line.449"></a>
-<span class="sourceLineNo">450</span>  /**<a name="line.450"></a>
-<span class="sourceLineNo">451</span>   * List all the children of the specified znode, setting a watch for children<a name="line.451"></a>
-<span class="sourceLineNo">452</span>   * changes and also setting a watch on every individual child in order to get<a name="line.452"></a>
-<span class="sourceLineNo">453</span>   * the NodeCreated and NodeDeleted events.<a name="line.453"></a>
-<span class="sourceLineNo">454</span>   * @param zkw zookeeper reference<a name="line.454"></a>
-<span class="sourceLineNo">455</span>   * @param znode node to get children of and watch<a name="line.455"></a>
-<span class="sourceLineNo">456</span>   * @return list of znode names, null if the node doesn't exist<a name="line.456"></a>
-<span class="sourceLineNo">457</span>   * @throws KeeperException<a name="line.457"></a>
-<span class="sourceLineNo">458</span>   */<a name="line.458"></a>
-<span class="sourceLineNo">459</span>  public static List&lt;String&gt; listChildrenAndWatchThem(ZKWatcher zkw,<a name="line.459"></a>
-<span class="sourceLineNo">460</span>      String znode) throws KeeperException {<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    List&lt;String&gt; children = listChildrenAndWatchForNewChildren(zkw, znode);<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    if (children == null) {<a name="line.462"></a>
-<span class="sourceLineNo">463</span>      return null;<a name="line.463"></a>
-<span class="sourceLineNo">464</span>    }<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    for (String child : children) {<a name="line.465"></a>
-<span class="sourceLineNo">466</span>      watchAndCheckExists(zkw, ZNodePaths.joinZNode(znode, child));<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    }<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    return children;<a name="line.468"></a>
-<span class="sourceLineNo">469</span>  }<a name="line.469"></a>
-<span class="sourceLineNo">470</span><a name="line.470"></a>
-<span class="sourceLineNo">471</span>  /**<a name="line.471"></a>
-<span class="sourceLineNo">472</span>   * Lists the children of the specified znode without setting any watches.<a name="line.472"></a>
-<span class="sourceLineNo">473</span>   *<a name="line.473"></a>
-<span class="sourceLineNo">474</span>   * Sets no watches at all, this method is best effort.<a name="line.474"></a>
-<span class="sourceLineNo">475</span>   *<a name="line.475"></a>
-<span class="sourceLineNo">476</span>   * Returns an empty list if the node has no children.  Returns null if the<a name="line.476"></a>
-<span class="sourceLineNo">477</span>   * parent node itself does not exist.<a name="line.477"></a>
-<span class="sourceLineNo">478</span>   *<a name="line.478"></a>
-<span class="sourceLineNo">479</span>   * @param zkw zookeeper reference<a name="line.479"></a>
-<span class="sourceLineNo">480</span>   * @param znode node to get children<a name="line.480"></a>
-<span class="sourceLineNo">481</span>   * @return list of data of children of specified znode, empty if no children,<a name="line.481"></a>
-<span class="sourceLineNo">482</span>   *         null if parent does not exist<a name="line.482"></a>
-<span class="sourceLineNo">483</span>   * @throws KeeperException if unexpected zookeeper exception<a name="line.483"></a>
-<span class="sourceLineNo">484</span>   */<a name="line.484"></a>
-<span class="sourceLineNo">485</span>  public static List&lt;String&gt; listChildrenNoWatch(ZKWatcher zkw, String znode)<a name="line.485"></a>
-<span class="sourceLineNo">486</span>  throws KeeperException {<a name="line.486"></a>
-<span class="sourceLineNo">487</span>    List&lt;String&gt; children = null;<a name="line.487"></a>
-<span class="sourceLineNo">488</span>    try {<a name="line.488"></a>
-<span class="sourceLineNo">489</span>      // List the children without watching<a name="line.489"></a>
-<span class="sourceLineNo">490</span>      children = zkw.getRecoverableZooKeeper().getChildren(znode, null);<a name="line.490"></a>
-<span class="sourceLineNo">491</span>    } catch(KeeperException.NoNodeException nne) {<a name="line.491"></a>
-<span class="sourceLineNo">492</span>      return null;<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    } catch(InterruptedException ie) {<a name="line.493"></a>
-<span class="sourceLineNo">494</span>      zkw.interruptedException(ie);<a name="line.494"></a>
-<span class="sourceLineNo">495</span>    }<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    return children;<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>   * Simple class to hold a node path and node data.<a name="line.500"></a>
-<span class="sourceLineNo">501</span>   * @deprecated Unused<a name="line.501"></a>
-<span class="sourceLineNo">502</span>   */<a name="line.502"></a>
-<span class="sourceLineNo">503</span>  @Deprecated<a name="line.503"></a>
-<span class="sourceLineNo">504</span>  public static class NodeAndData {<a name="line.504"></a>
-<span class="sourceLineNo">505</span>    private String node;<a name="line.505"></a>
-<span class="sourceLineNo">506</span>    private byte [] data;<a name="line.506"></a>
-<span class="sourceLineNo">507</span>    public NodeAndData(String node, byte [] data) {<a name="line.507"></a>
-<span class="sourceLineNo">508</span>      this.node = node;<a name="line.508"></a>
-<span class="sourceLineNo">509</span>      this.data = data;<a name="line.509"></a>
-<span class="sourceLineNo">510</span>    }<a name="line.510"></a>
-<span class="sourceLineNo">511</span>    public String getNode() {<a name="line.511"></a>
-<span class="sourceLineNo">512</span>      return node;<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    }<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    public byte [] getData() {<a name="line.514"></a>
-<span class="sourceLineNo">515</span>      return data;<a name="line.515"></a>
-<span class="sourceLineNo">516</span>    }<a name="line.516"></a>
-<span class="sourceLineNo">517</span>    @Override<a name="line.517"></a>
-<span class="sourceLineNo">518</span>    public String toString() {<a name="line.518"></a>
-<span class="sourceLineNo">519</span>      return node;<a name="line.519"></a>
+<span class="sourceLineNo">321</span>  public static String getParent(String node) {<a name="line.321"></a>
+<span class="sourceLineNo">322</span>    int idx = node.lastIndexOf(ZNodePaths.ZNODE_PATH_SEPARATOR);<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    return idx &lt;= 0 ? null : node.substring(0, idx);<a name="line.323"></a>
+<span class="sourceLineNo">324</span>  }<a name="line.324"></a>
+<span class="sourceLineNo">325</span><a name="line.325"></a>
+<span class="sourceLineNo">326</span>  /**<a name="line.326"></a>
+<span class="sourceLineNo">327</span>   * Get the name of the current node from the specified fully-qualified path.<a name="line.327"></a>
+<span class="sourceLineNo">328</span>   * @param path fully-qualified path<a name="line.328"></a>
+<span class="sourceLineNo">329</span>   * @return name of the current node<a name="line.329"></a>
+<span class="sourceLineNo">330</span>   */<a name="line.330"></a>
+<span class="sourceLineNo">331</span>  public static String getNodeName(String path) {<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    return path.substring(path.lastIndexOf("/")+1);<a name="line.332"></a>
+<span class="sourceLineNo">333</span>  }<a name="line.333"></a>
+<span class="sourceLineNo">334</span><a name="line.334"></a>
+<span class="sourceLineNo">335</span>  //<a name="line.335"></a>
+<span class="sourceLineNo">336</span>  // Existence checks and watches<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>   * Watch the specified znode for delete/create/change events.  The watcher is<a name="line.340"></a>
+<span class="sourceLineNo">341</span>   * set whether or not the node exists.  If the node already exists, the method<a name="line.341"></a>
+<span class="sourceLineNo">342</span>   * returns true.  If the node does not exist, the method returns false.<a name="line.342"></a>
+<span class="sourceLineNo">343</span>   *<a name="line.343"></a>
+<span class="sourceLineNo">344</span>   * @param zkw zk reference<a name="line.344"></a>
+<span class="sourceLineNo">345</span>   * @param znode path of node to watch<a name="line.345"></a>
+<span class="sourceLineNo">346</span>   * @return true if znode exists, false if does not exist or error<a name="line.346"></a>
+<span class="sourceLineNo">347</span>   * @throws KeeperException if unexpected zookeeper exception<a name="line.347"></a>
+<span class="sourceLineNo">348</span>   */<a name="line.348"></a>
+<span class="sourceLineNo">349</span>  public static boolean watchAndCheckExists(ZKWatcher zkw, String znode)<a name="line.349"></a>
+<span class="sourceLineNo">350</span>  throws KeeperException {<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    try {<a name="line.351"></a>
+<span class="sourceLineNo">352</span>      Stat s = zkw.getRecoverableZooKeeper().exists(znode, zkw);<a name="line.352"></a>
+<span class="sourceLineNo">353</span>      boolean exists = s != null ? true : false;<a name="line.353"></a>
+<span class="sourceLineNo">354</span>      if (exists) {<a name="line.354"></a>
+<span class="sourceLineNo">355</span>        LOG.debug(zkw.prefix("Set watcher on existing znode=" + znode));<a name="line.355"></a>
+<span class="sourceLineNo">356</span>      } else {<a name="line.356"></a>
+<span class="sourceLineNo">357</span>        LOG.debug(zkw.prefix("Set watcher on znode that does not yet exist, " + znode));<a name="line.357"></a>
+<span class="sourceLineNo">358</span>      }<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      return exists;<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    } catch (KeeperException e) {<a name="line.360"></a>
+<span class="sourceLineNo">361</span>      LOG.warn(zkw.prefix("Unable to set watcher on znode " + znode), e);<a name="line.361"></a>
+<span class="sourceLineNo">362</span>      zkw.keeperException(e);<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      return false;<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    } catch (InterruptedException e) {<a name="line.364"></a>
+<span class="sourceLineNo">365</span>      LOG.warn(zkw.prefix("Unable to set watcher on znode " + znode), e);<a name="line.365"></a>
+<span class="sourceLineNo">366</span>      zkw.interruptedException(e);<a name="line.366"></a>
+<span class="sourceLineNo">367</span>      return false;<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>  /**<a name="line.371"></a>
+<span class="sourceLineNo">372</span>   * Watch the specified znode, but only if exists. Useful when watching<a name="line.372"></a>
+<span class="sourceLineNo">373</span>   * for deletions. Uses .getData() (and handles NoNodeException) instead<a name="line.373"></a>
+<span class="sourceLineNo">374</span>   * of .exists() to accomplish this, as .getData() will only set a watch if<a name="line.374"></a>
+<span class="sourceLineNo">375</span>   * the znode exists.<a name="line.375"></a>
+<span class="sourceLineNo">376</span>   * @param zkw zk reference<a name="line.376"></a>
+<span class="sourceLineNo">377</span>   * @param znode path of node to watch<a name="line.377"></a>
+<span class="sourceLineNo">378</span>   * @return true if the watch is set, false if node does not exists<a name="line.378"></a>
+<span class="sourceLineNo">379</span>   * @throws KeeperException if unexpected zookeeper exception<a name="line.379"></a>
+<span class="sourceLineNo">380</span>   */<a name="line.380"></a>
+<span class="sourceLineNo">381</span>  public static boolean setWatchIfNodeExists(ZKWatcher zkw, String znode)<a name="line.381"></a>
+<span class="sourceLineNo">382</span>      throws KeeperException {<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    try {<a name="line.383"></a>
+<span class="sourceLineNo">384</span>      zkw.getRecoverableZooKeeper().getData(znode, true, null);<a name="line.384"></a>
+<span class="sourceLineNo">385</span>      return true;<a name="line.385"></a>
+<span class="sourceLineNo">386</span>    } catch (NoNodeException e) {<a name="line.386"></a>
+<span class="sourceLineNo">387</span>      return false;<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    } catch (InterruptedException e) {<a name="line.388"></a>
+<span class="sourceLineNo">389</span>      LOG.warn(zkw.prefix("Unable to set watcher on znode " + znode), e);<a name="line.389"></a>
+<span class="sourceLineNo">390</span>      zkw.interruptedException(e);<a name="line.390"></a>
+<span class="sourceLineNo">391</span>      return false;<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">395</span>  /**<a name="line.395"></a>
+<span class="sourceLineNo">396</span>   * Check if the specified node exists.  Sets no watches.<a name="line.396"></a>
+<span class="sourceLineNo">397</span>   *<a name="line.397"></a>
+<span class="sourceLineNo">398</span>   * @param zkw zk reference<a name="line.398"></a>
+<span class="sourceLineNo">399</span>   * @param znode path of node to watch<a name="line.399"></a>
+<span class="sourceLineNo">400</span>   * @return version of the node if it exists, -1 if does not exist<a name="line.400"></a>
+<span class="sourceLineNo">401</span>   * @throws KeeperException if unexpected zookeeper exception<a name="line.401"></a>
+<span class="sourceLineNo">402</span>   */<a name="line.402"></a>
+<span class="sourceLineNo">403</span>  public static int checkExists(ZKWatcher zkw, String znode)<a name="line.403"></a>
+<span class="sourceLineNo">404</span>  throws KeeperException {<a name="line.404"></a>
+<span class="sourceLineNo">405</span>    try {<a name="line.405"></a>
+<span class="sourceLineNo">406</span>      Stat s = zkw.getRecoverableZooKeeper().exists(znode, null);<a name="line.406"></a>
+<span class="sourceLineNo">407</span>      return s != null ? s.getVersion() : -1;<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    } catch (KeeperException e) {<a name="line.408"></a>
+<span class="sourceLineNo">409</span>      LOG.warn(zkw.prefix("Unable to set watcher on znode (" + znode + ")"), e);<a name="line.409"></a>
+<span class="sourceLineNo">410</span>      zkw.keeperException(e);<a name="line.410"></a>
+<span class="sourceLineNo">411</span>      return -1;<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    } catch (InterruptedException e) {<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      LOG.warn(zkw.prefix("Unable to set watcher on znode (" + znode + ")"), e);<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      zkw.interruptedException(e);<a name="line.414"></a>
+<span class="sourceLineNo">415</span>      return -1;<a name="line.415"></a>
+<span class="sourceLineNo">416</span>    }<a name="line.416"></a>
+<span class="sourceLineNo">417</span>  }<a name="line.417"></a>
+<span class="sourceLineNo">418</span><a name="line.418"></a>
+<span class="sourceLineNo">419</span>  //<a name="line.419"></a>
+<span class="sourceLineNo">420</span>  // Znode listings<a name="line.420"></a>
+<span class="sourceLineNo">421</span>  //<a name="line.421"></a>
+<span class="sourceLineNo">422</span><a name="line.422"></a>
+<span class="sourceLineNo">423</span>  /**<a name="line.423"></a>
+<span class="sourceLineNo">424</span>   * Lists the children znodes of the specified znode.  Also sets a watch on<a name="line.424"></a>
+<span class="sourceLineNo">425</span>   * the specified znode which will capture a NodeDeleted event on the specified<a name="line.425"></a>
+<span class="sourceLineNo">426</span>   * znode as well as NodeChildrenChanged if any children of the specified znode<a name="line.426"></a>
+<span class="sourceLineNo">427</span>   * are created or deleted.<a name="line.427"></a>
+<span class="sourceLineNo">428</span>   *<a name="line.428"></a>
+<span class="sourceLineNo">429</span>   * Returns null if the specified node does not exist.  Otherwise returns a<a name="line.429"></a>
+<span class="sourceLineNo">430</span>   * list of children of the specified node.  If the node exists but it has no<a name="line.430"></a>
+<span class="sourceLineNo">431</span>   * children, an empty list will be returned.<a name="line.431"></a>
+<span class="sourceLineNo">432</span>   *<a name="line.432"></a>
+<span class="sourceLineNo">433</span>   * @param zkw zk reference<a name="line.433"></a>
+<span class="sourceLineNo">434</span>   * @param znode path of node to list and watch children of<a name="line.434"></a>
+<span class="sourceLineNo">435</span>   * @return list of children of the specified node, an empty list if the node<a name="line.435"></a>
+<span class="sourceLineNo">436</span>   *          exists but has no children, and null if the node does not exist<a name="line.436"></a>
+<span class="sourceLineNo">437</span>   * @throws KeeperException if unexpected zookeeper exception<a name="line.437"></a>
+<span class="sourceLineNo">438</span>   */<a name="line.438"></a>
+<span class="sourceLineNo">439</span>  public static List&lt;String&gt; listChildrenAndWatchForNewChildren(<a name="line.439"></a>
+<span class="sourceLineNo">440</span>          ZKWatcher zkw, String znode)<a name="line.440"></a>
+<span class="sourceLineNo">441</span>  throws KeeperException {<a name="line.441"></a>
+<span class="sourceLineNo">442</span>    try {<a name="line.442"></a>
+<span class="sourceLineNo">443</span>      List&lt;String&gt; children = zkw.getRecoverableZooKeeper().getChildren(znode, zkw);<a name="line.443"></a>
+<span class="sourceLineNo">444</span>      return children;<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    } catch(KeeperException.NoNodeException ke) {<a name="line.445"></a>
+<span class="sourceLineNo">446</span>      LOG.debug(zkw.prefix("Unable to list children of znode " + znode + " " +<a name="line.446"></a>
+<span class="sourceLineNo">447</span>          "because node does not exist (not an error)"));<a name="line.447"></a>
+<span class="sourceLineNo">448</span>      return null;<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    } catch (KeeperException e) {<a name="line.449"></a>
+<span class="sourceLineNo">450</span>      LOG.warn(zkw.prefix("Unable to list children of znode " + znode + " "), e);<a name="line.450"></a>
+<span class="sourceLineNo">451</span>      zkw.keeperException(e);<a name="line.451"></a>
+<span class="sourceLineNo">452</span>      return null;<a name="line.452"></a>
+<span class="sourceLineNo">453</span>    } catch (InterruptedException e) {<a name="line.453"></a>
+<span class="sourceLin

<TRUNCATED>

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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/testdevapidocs/org/apache/hadoop/hbase/testclassification/SecurityTests.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/testclassification/SecurityTests.html b/testdevapidocs/org/apache/hadoop/hbase/testclassification/SecurityTests.html
index cb90fa1..a369f64 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/testclassification/SecurityTests.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/testclassification/SecurityTests.html
@@ -95,7 +95,25 @@
 <li class="blockList">
 <hr>
 <br>
-<pre>public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/testclassification/SecurityTests.html#line.41">SecurityTests</a></pre>
+<pre>public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/testclassification/SecurityTests.html#line.39">SecurityTests</a></pre>
+<div class="block">Tag a test as related to security.</div>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../org/apache/hadoop/hbase/testclassification/ClientTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>ClientTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/CoprocessorTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>CoprocessorTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/FilterTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>FilterTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/FlakeyTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>FlakeyTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/IOTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>IOTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/MapReduceTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>MapReduceTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/MasterTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>MasterTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/MiscTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>MiscTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/RegionServerTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>RegionServerTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/ReplicationTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>ReplicationTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/RPCTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>RPCTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/SecurityTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>SecurityTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/VerySlowRegionServerTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>VerySlowRegionServerTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/VerySlowMapReduceTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>VerySlowMapReduceTests</code></a></dd>
+</dl>
 </li>
 </ul>
 </div>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/testdevapidocs/org/apache/hadoop/hbase/testclassification/SmallTests.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/testclassification/SmallTests.html b/testdevapidocs/org/apache/hadoop/hbase/testclassification/SmallTests.html
index 011e7bb..eafc627 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/testclassification/SmallTests.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/testclassification/SmallTests.html
@@ -95,12 +95,14 @@
 <li class="blockList">
 <hr>
 <br>
-<pre>public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/testclassification/SmallTests.html#line.33">SmallTests</a></pre>
+<pre>public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/testclassification/SmallTests.html#line.34">SmallTests</a></pre>
 <div class="block">Tag a test as 'small', meaning that the test class has the following
  characteristics:
-  - can be run simultaneously with other small tests in the same JVM
-  - ideally, last less than 15 seconds
-  - does not use a cluster</div>
+ <ul>
+  <li>can be run simultaneously with other small tests in the same JVM</li>
+  <li>ideally, last less than 15 seconds</li>
+  <li>does not use a cluster</li>
+ </ul></div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../org/apache/hadoop/hbase/testclassification/MediumTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>MediumTests</code></a>, 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/testdevapidocs/org/apache/hadoop/hbase/testclassification/VerySlowMapReduceTests.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/testclassification/VerySlowMapReduceTests.html b/testdevapidocs/org/apache/hadoop/hbase/testclassification/VerySlowMapReduceTests.html
index 90383c6..ac76491 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/testclassification/VerySlowMapReduceTests.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/testclassification/VerySlowMapReduceTests.html
@@ -95,7 +95,26 @@
 <li class="blockList">
 <hr>
 <br>
-<pre>public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/testclassification/VerySlowMapReduceTests.html#line.41">VerySlowMapReduceTests</a></pre>
+<pre>public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/testclassification/VerySlowMapReduceTests.html#line.40">VerySlowMapReduceTests</a></pre>
+<div class="block">Tag a test as related to  mapreduce and taking longer than 5 minutes to run on public build
+ infrastructure.</div>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../org/apache/hadoop/hbase/testclassification/ClientTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>ClientTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/CoprocessorTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>CoprocessorTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/FilterTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>FilterTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/FlakeyTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>FlakeyTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/IOTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>IOTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/MapReduceTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>MapReduceTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/MasterTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>MasterTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/MiscTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>MiscTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/RegionServerTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>RegionServerTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/ReplicationTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>ReplicationTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/RPCTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>RPCTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/SecurityTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>SecurityTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/VerySlowRegionServerTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>VerySlowRegionServerTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/VerySlowMapReduceTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>VerySlowMapReduceTests</code></a></dd>
+</dl>
 </li>
 </ul>
 </div>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/testdevapidocs/org/apache/hadoop/hbase/testclassification/VerySlowRegionServerTests.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/testclassification/VerySlowRegionServerTests.html b/testdevapidocs/org/apache/hadoop/hbase/testclassification/VerySlowRegionServerTests.html
index 6459dbd..62cfd8d 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/testclassification/VerySlowRegionServerTests.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/testclassification/VerySlowRegionServerTests.html
@@ -95,7 +95,26 @@
 <li class="blockList">
 <hr>
 <br>
-<pre>public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/testclassification/VerySlowRegionServerTests.html#line.41">VerySlowRegionServerTests</a></pre>
+<pre>public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/testclassification/VerySlowRegionServerTests.html#line.40">VerySlowRegionServerTests</a></pre>
+<div class="block">Tag a test as region tests which takes longer than 5 minutes to run on public build
+ infrastructure.</div>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../org/apache/hadoop/hbase/testclassification/ClientTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>ClientTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/CoprocessorTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>CoprocessorTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/FilterTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>FilterTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/FlakeyTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>FlakeyTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/IOTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>IOTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/MapReduceTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>MapReduceTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/MasterTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>MasterTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/MiscTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>MiscTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/RegionServerTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>RegionServerTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/ReplicationTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>ReplicationTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/RPCTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>RPCTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/SecurityTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>SecurityTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/VerySlowRegionServerTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>VerySlowRegionServerTests</code></a>, 
+<a href="../../../../../org/apache/hadoop/hbase/testclassification/VerySlowMapReduceTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><code>VerySlowMapReduceTests</code></a></dd>
+</dl>
 </li>
 </ul>
 </div>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/testdevapidocs/org/apache/hadoop/hbase/testclassification/ZKTests.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/testclassification/ZKTests.html b/testdevapidocs/org/apache/hadoop/hbase/testclassification/ZKTests.html
index dfb838b..b2c602c 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/testclassification/ZKTests.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/testclassification/ZKTests.html
@@ -95,9 +95,9 @@
 <li class="blockList">
 <hr>
 <br>
-<pre>public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/testclassification/ZKTests.html#line.24">ZKTests</a></pre>
+<pre>public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/testclassification/ZKTests.html#line.25">ZKTests</a></pre>
 <div class="block">For tests which test the general logic of zookeeper related tools, such as
- <code>RecoverableZooKeeper</code>, not for tests which depend on zookeeper.</div>
+ <code>RecoverableZooKeeper</code>, not for tests which depend on ZooKeeper.</div>
 </li>
 </ul>
 </div>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/testdevapidocs/org/apache/hadoop/hbase/testclassification/package-summary.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/testclassification/package-summary.html b/testdevapidocs/org/apache/hadoop/hbase/testclassification/package-summary.html
index f693f13..9dcde62 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/testclassification/package-summary.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/testclassification/package-summary.html
@@ -84,25 +84,34 @@
 <tbody>
 <tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/testclassification/ClientTests.html" title="interface in org.apache.hadoop.hbase.testclassification">ClientTests</a></td>
-<td class="colLast">&nbsp;</td>
+<td class="colLast">
+<div class="block">Tag a test as related to the client.</div>
+</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/testclassification/CoprocessorTests.html" title="interface in org.apache.hadoop.hbase.testclassification">CoprocessorTests</a></td>
-<td class="colLast">&nbsp;</td>
+<td class="colLast">
+<div class="block">Tag a test as related to coprocessors.</div>
+</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/testclassification/FilterTests.html" title="interface in org.apache.hadoop.hbase.testclassification">FilterTests</a></td>
-<td class="colLast">&nbsp;</td>
+<td class="colLast">
+<div class="block">Tag a test as related to the <code>org.apache.hadoop.hbase.filter</code> package.</div>
+</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/testclassification/FlakeyTests.html" title="interface in org.apache.hadoop.hbase.testclassification">FlakeyTests</a></td>
-<td class="colLast">&nbsp;</td>
+<td class="colLast">
+<div class="block">Tag a test as failing commonly on public build infrastructure.</div>
+</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/testclassification/IntegrationTests.html" title="interface in org.apache.hadoop.hbase.testclassification">IntegrationTests</a></td>
 <td class="colLast">
 <div class="block">Tag a test as 'integration/system' test, meaning that the test class has the following
- characteristics: 
+ characteristics:
+ 
    Possibly takes hours to complete
    Can be run on a mini cluster or an actual cluster
    Can make changes to the given cluster (starting stopping daemons, etc)
@@ -115,83 +124,113 @@
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/testclassification/IOTests.html" title="interface in org.apache.hadoop.hbase.testclassification">IOTests</a></td>
-<td class="colLast">&nbsp;</td>
+<td class="colLast">
+<div class="block">Tag a test as related to the <code>org.apache.hadoop.hbase.io</code> package.</div>
+</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/testclassification/LargeTests.html" title="interface in org.apache.hadoop.hbase.testclassification">LargeTests</a></td>
 <td class="colLast">
 <div class="block">Tag a test as 'large', meaning that the test class has the following
  characteristics:
-  - executed in an isolated JVM.</div>
+ 
+  executed in an isolated JVM.</div>
 </td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/testclassification/MapReduceTests.html" title="interface in org.apache.hadoop.hbase.testclassification">MapReduceTests</a></td>
-<td class="colLast">&nbsp;</td>
+<td class="colLast">
+<div class="block">Tag a test as related to mapred or mapreduce.</div>
+</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/testclassification/MasterTests.html" title="interface in org.apache.hadoop.hbase.testclassification">MasterTests</a></td>
-<td class="colLast">&nbsp;</td>
+<td class="colLast">
+<div class="block">Tag a test as related to the master.</div>
+</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/testclassification/MediumTests.html" title="interface in org.apache.hadoop.hbase.testclassification">MediumTests</a></td>
 <td class="colLast">
 <div class="block">Tag a test as 'Medium', meaning that the test class has the following
  characteristics:
-  - executed in an isolated JVM.</div>
+ 
+  executed in an isolated JVM.</div>
 </td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/testclassification/MetricsTests.html" title="interface in org.apache.hadoop.hbase.testclassification">MetricsTests</a></td>
-<td class="colLast">&nbsp;</td>
+<td class="colLast">
+<div class="block">Tag a test that covers our metrics handling.</div>
+</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/testclassification/MiscTests.html" title="interface in org.apache.hadoop.hbase.testclassification">MiscTests</a></td>
-<td class="colLast">&nbsp;</td>
+<td class="colLast">
+<div class="block">Tag a test as not easily falling into any of the below categories.</div>
+</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/testclassification/RegionServerTests.html" title="interface in org.apache.hadoop.hbase.testclassification">RegionServerTests</a></td>
-<td class="colLast">&nbsp;</td>
+<td class="colLast">
+<div class="block">Tag a test as related to the regionserver.</div>
+</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/testclassification/ReplicationTests.html" title="interface in org.apache.hadoop.hbase.testclassification">ReplicationTests</a></td>
-<td class="colLast">&nbsp;</td>
+<td class="colLast">
+<div class="block">Tag a test as related to replication.</div>
+</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/testclassification/RestTests.html" title="interface in org.apache.hadoop.hbase.testclassification">RestTests</a></td>
-<td class="colLast">&nbsp;</td>
+<td class="colLast">
+<div class="block">Tag a test as related to the REST capability of HBase.</div>
+</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/testclassification/RPCTests.html" title="interface in org.apache.hadoop.hbase.testclassification">RPCTests</a></td>
-<td class="colLast">&nbsp;</td>
+<td class="colLast">
+<div class="block">Tag a test as related to RPC.</div>
+</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/testclassification/SecurityTests.html" title="interface in org.apache.hadoop.hbase.testclassification">SecurityTests</a></td>
-<td class="colLast">&nbsp;</td>
+<td class="colLast">
+<div class="block">Tag a test as related to security.</div>
+</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/testclassification/SmallTests.html" title="interface in org.apache.hadoop.hbase.testclassification">SmallTests</a></td>
 <td class="colLast">
 <div class="block">Tag a test as 'small', meaning that the test class has the following
  characteristics:
-  - can be run simultaneously with other small tests in the same JVM
-  - ideally, last less than 15 seconds
-  - does not use a cluster</div>
+ 
+  can be run simultaneously with other small tests in the same JVM
+  ideally, last less than 15 seconds
+  does not use a cluster
+ </div>
 </td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/testclassification/VerySlowMapReduceTests.html" title="interface in org.apache.hadoop.hbase.testclassification">VerySlowMapReduceTests</a></td>
-<td class="colLast">&nbsp;</td>
+<td class="colLast">
+<div class="block">Tag a test as related to  mapreduce and taking longer than 5 minutes to run on public build
+ infrastructure.</div>
+</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/testclassification/VerySlowRegionServerTests.html" title="interface in org.apache.hadoop.hbase.testclassification">VerySlowRegionServerTests</a></td>
-<td class="colLast">&nbsp;</td>
+<td class="colLast">
+<div class="block">Tag a test as region tests which takes longer than 5 minutes to run on public build
+ infrastructure.</div>
+</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/testclassification/ZKTests.html" title="interface in org.apache.hadoop.hbase.testclassification">ZKTests</a></td>
 <td class="colLast">
 <div class="block">For tests which test the general logic of zookeeper related tools, such as
- <code>RecoverableZooKeeper</code>, not for tests which depend on zookeeper.</div>
+ <code>RecoverableZooKeeper</code>, not for tests which depend on ZooKeeper.</div>
 </td>
 </tr>
 </tbody>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestShellNoCluster.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestShellNoCluster.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestShellNoCluster.html
index 64e97f8..b571296 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestShellNoCluster.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestShellNoCluster.html
@@ -26,17 +26,17 @@
 <span class="sourceLineNo">018</span> */<a name="line.18"></a>
 <span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.client;<a name="line.19"></a>
 <span class="sourceLineNo">020</span><a name="line.20"></a>
-<span class="sourceLineNo">021</span>import org.apache.hadoop.hbase.testclassification.ClientTests;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import org.apache.hadoop.hbase.testclassification.LargeTests;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import org.jruby.embed.PathType;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import org.junit.AfterClass;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.junit.BeforeClass;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.junit.Test;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import org.junit.experimental.categories.Category;<a name="line.27"></a>
-<span class="sourceLineNo">028</span><a name="line.28"></a>
-<span class="sourceLineNo">029</span>import java.io.IOException;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import java.util.ArrayList;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import java.util.List;<a name="line.31"></a>
+<span class="sourceLineNo">021</span>import java.io.IOException;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import java.util.ArrayList;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import java.util.List;<a name="line.23"></a>
+<span class="sourceLineNo">024</span><a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.testclassification.ClientTests;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.testclassification.LargeTests;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.jruby.embed.PathType;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.junit.AfterClass;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.junit.BeforeClass;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.junit.Test;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.junit.experimental.categories.Category;<a name="line.31"></a>
 <span class="sourceLineNo">032</span><a name="line.32"></a>
 <span class="sourceLineNo">033</span>@Category({ ClientTests.class, LargeTests.class })<a name="line.33"></a>
 <span class="sourceLineNo">034</span>public class TestShellNoCluster extends AbstractTestShell {<a name="line.34"></a>
@@ -64,8 +64,7 @@
 <span class="sourceLineNo">056</span>    // Start ruby tests without cluster<a name="line.56"></a>
 <span class="sourceLineNo">057</span>    jruby.runScriptlet(PathType.ABSOLUTE, "src/test/ruby/no_cluster_tests_runner.rb");<a name="line.57"></a>
 <span class="sourceLineNo">058</span>  }<a name="line.58"></a>
-<span class="sourceLineNo">059</span><a name="line.59"></a>
-<span class="sourceLineNo">060</span>}<a name="line.60"></a>
+<span class="sourceLineNo">059</span>}<a name="line.59"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/ClientTests.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/ClientTests.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/ClientTests.html
index d574ad7..40c6b87 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/ClientTests.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/ClientTests.html
@@ -7,44 +7,44 @@
 <body>
 <div class="sourceContainer">
 <pre><span class="sourceLineNo">001</span>/*<a name="line.1"></a>
-<span class="sourceLineNo">002</span> *<a name="line.2"></a>
-<span class="sourceLineNo">003</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.3"></a>
-<span class="sourceLineNo">004</span> * or more contributor license agreements.  See the NOTICE file<a name="line.4"></a>
-<span class="sourceLineNo">005</span> * distributed with this work for additional information<a name="line.5"></a>
-<span class="sourceLineNo">006</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.6"></a>
-<span class="sourceLineNo">007</span> * to you under the Apache License, Version 2.0 (the<a name="line.7"></a>
-<span class="sourceLineNo">008</span> * "License"); you may not use this file except in compliance<a name="line.8"></a>
-<span class="sourceLineNo">009</span> * with the License.  You may obtain a copy of the License at<a name="line.9"></a>
-<span class="sourceLineNo">010</span> *<a name="line.10"></a>
-<span class="sourceLineNo">011</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.11"></a>
-<span class="sourceLineNo">012</span> *<a name="line.12"></a>
-<span class="sourceLineNo">013</span> * Unless required by applicable law or agreed to in writing, software<a name="line.13"></a>
-<span class="sourceLineNo">014</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.14"></a>
-<span class="sourceLineNo">015</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.15"></a>
-<span class="sourceLineNo">016</span> * See the License for the specific language governing permissions and<a name="line.16"></a>
-<span class="sourceLineNo">017</span> * limitations under the License.<a name="line.17"></a>
-<span class="sourceLineNo">018</span> */<a name="line.18"></a>
-<span class="sourceLineNo">019</span><a name="line.19"></a>
-<span class="sourceLineNo">020</span>/**<a name="line.20"></a>
-<span class="sourceLineNo">021</span> * Tag a test as related to the client, This tests the hbase-client package and all of the client<a name="line.21"></a>
-<span class="sourceLineNo">022</span> * tests in hbase-server.<a name="line.22"></a>
-<span class="sourceLineNo">023</span> * @see org.apache.hadoop.hbase.testclassification.ClientTests<a name="line.23"></a>
-<span class="sourceLineNo">024</span> * @see org.apache.hadoop.hbase.testclassification.CoprocessorTests<a name="line.24"></a>
-<span class="sourceLineNo">025</span> * @see org.apache.hadoop.hbase.testclassification.FilterTests<a name="line.25"></a>
-<span class="sourceLineNo">026</span> * @see org.apache.hadoop.hbase.testclassification.FlakeyTests<a name="line.26"></a>
-<span class="sourceLineNo">027</span> * @see org.apache.hadoop.hbase.testclassification.IOTests<a name="line.27"></a>
-<span class="sourceLineNo">028</span> * @see org.apache.hadoop.hbase.testclassification.MapReduceTests<a name="line.28"></a>
-<span class="sourceLineNo">029</span> * @see org.apache.hadoop.hbase.testclassification.MasterTests<a name="line.29"></a>
-<span class="sourceLineNo">030</span> * @see org.apache.hadoop.hbase.testclassification.MiscTests<a name="line.30"></a>
-<span class="sourceLineNo">031</span> * @see org.apache.hadoop.hbase.testclassification.RegionServerTests<a name="line.31"></a>
-<span class="sourceLineNo">032</span> * @see org.apache.hadoop.hbase.testclassification.ReplicationTests<a name="line.32"></a>
-<span class="sourceLineNo">033</span> * @see org.apache.hadoop.hbase.testclassification.RPCTests<a name="line.33"></a>
-<span class="sourceLineNo">034</span> * @see org.apache.hadoop.hbase.testclassification.SecurityTests<a name="line.34"></a>
-<span class="sourceLineNo">035</span> * @see org.apache.hadoop.hbase.testclassification.VerySlowRegionServerTests<a name="line.35"></a>
-<span class="sourceLineNo">036</span> * @see org.apache.hadoop.hbase.testclassification.VerySlowMapReduceTests<a name="line.36"></a>
-<span class="sourceLineNo">037</span> */<a name="line.37"></a>
-<span class="sourceLineNo">038</span>package org.apache.hadoop.hbase.testclassification;<a name="line.38"></a>
-<span class="sourceLineNo">039</span><a name="line.39"></a>
+<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
+<span class="sourceLineNo">003</span> * or more contributor license agreements.  See the NOTICE file<a name="line.3"></a>
+<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
+<span class="sourceLineNo">005</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.5"></a>
+<span class="sourceLineNo">006</span> * to you under the Apache License, Version 2.0 (the<a name="line.6"></a>
+<span class="sourceLineNo">007</span> * "License"); you may not use this file except in compliance<a name="line.7"></a>
+<span class="sourceLineNo">008</span> * with the License.  You may obtain a copy of the License at<a name="line.8"></a>
+<span class="sourceLineNo">009</span> *<a name="line.9"></a>
+<span class="sourceLineNo">010</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.10"></a>
+<span class="sourceLineNo">011</span> *<a name="line.11"></a>
+<span class="sourceLineNo">012</span> * Unless required by applicable law or agreed to in writing, software<a name="line.12"></a>
+<span class="sourceLineNo">013</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.13"></a>
+<span class="sourceLineNo">014</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.14"></a>
+<span class="sourceLineNo">015</span> * See the License for the specific language governing permissions and<a name="line.15"></a>
+<span class="sourceLineNo">016</span> * limitations under the License.<a name="line.16"></a>
+<span class="sourceLineNo">017</span> */<a name="line.17"></a>
+<span class="sourceLineNo">018</span><a name="line.18"></a>
+<span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.testclassification;<a name="line.19"></a>
+<span class="sourceLineNo">020</span><a name="line.20"></a>
+<span class="sourceLineNo">021</span>/**<a name="line.21"></a>
+<span class="sourceLineNo">022</span> * Tag a test as related to the client. This tests the hbase-client package and all of the client<a name="line.22"></a>
+<span class="sourceLineNo">023</span> * tests in hbase-server.<a name="line.23"></a>
+<span class="sourceLineNo">024</span> *<a name="line.24"></a>
+<span class="sourceLineNo">025</span> * @see org.apache.hadoop.hbase.testclassification.ClientTests<a name="line.25"></a>
+<span class="sourceLineNo">026</span> * @see org.apache.hadoop.hbase.testclassification.CoprocessorTests<a name="line.26"></a>
+<span class="sourceLineNo">027</span> * @see org.apache.hadoop.hbase.testclassification.FilterTests<a name="line.27"></a>
+<span class="sourceLineNo">028</span> * @see org.apache.hadoop.hbase.testclassification.FlakeyTests<a name="line.28"></a>
+<span class="sourceLineNo">029</span> * @see org.apache.hadoop.hbase.testclassification.IOTests<a name="line.29"></a>
+<span class="sourceLineNo">030</span> * @see org.apache.hadoop.hbase.testclassification.MapReduceTests<a name="line.30"></a>
+<span class="sourceLineNo">031</span> * @see org.apache.hadoop.hbase.testclassification.MasterTests<a name="line.31"></a>
+<span class="sourceLineNo">032</span> * @see org.apache.hadoop.hbase.testclassification.MiscTests<a name="line.32"></a>
+<span class="sourceLineNo">033</span> * @see org.apache.hadoop.hbase.testclassification.RegionServerTests<a name="line.33"></a>
+<span class="sourceLineNo">034</span> * @see org.apache.hadoop.hbase.testclassification.ReplicationTests<a name="line.34"></a>
+<span class="sourceLineNo">035</span> * @see org.apache.hadoop.hbase.testclassification.RPCTests<a name="line.35"></a>
+<span class="sourceLineNo">036</span> * @see org.apache.hadoop.hbase.testclassification.SecurityTests<a name="line.36"></a>
+<span class="sourceLineNo">037</span> * @see org.apache.hadoop.hbase.testclassification.VerySlowRegionServerTests<a name="line.37"></a>
+<span class="sourceLineNo">038</span> * @see org.apache.hadoop.hbase.testclassification.VerySlowMapReduceTests<a name="line.38"></a>
+<span class="sourceLineNo">039</span> */<a name="line.39"></a>
 <span class="sourceLineNo">040</span>public interface ClientTests {<a name="line.40"></a>
 <span class="sourceLineNo">041</span>}<a name="line.41"></a>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/CoprocessorTests.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/CoprocessorTests.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/CoprocessorTests.html
index c722fc8..b814a8c 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/CoprocessorTests.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/CoprocessorTests.html
@@ -7,46 +7,45 @@
 <body>
 <div class="sourceContainer">
 <pre><span class="sourceLineNo">001</span>/*<a name="line.1"></a>
-<span class="sourceLineNo">002</span> *<a name="line.2"></a>
-<span class="sourceLineNo">003</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.3"></a>
-<span class="sourceLineNo">004</span> * or more contributor license agreements.  See the NOTICE file<a name="line.4"></a>
-<span class="sourceLineNo">005</span> * distributed with this work for additional information<a name="line.5"></a>
-<span class="sourceLineNo">006</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.6"></a>
-<span class="sourceLineNo">007</span> * to you under the Apache License, Version 2.0 (the<a name="line.7"></a>
-<span class="sourceLineNo">008</span> * "License"); you may not use this file except in compliance<a name="line.8"></a>
-<span class="sourceLineNo">009</span> * with the License.  You may obtain a copy of the License at<a name="line.9"></a>
-<span class="sourceLineNo">010</span> *<a name="line.10"></a>
-<span class="sourceLineNo">011</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.11"></a>
-<span class="sourceLineNo">012</span> *<a name="line.12"></a>
-<span class="sourceLineNo">013</span> * Unless required by applicable law or agreed to in writing, software<a name="line.13"></a>
-<span class="sourceLineNo">014</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.14"></a>
-<span class="sourceLineNo">015</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.15"></a>
-<span class="sourceLineNo">016</span> * See the License for the specific language governing permissions and<a name="line.16"></a>
-<span class="sourceLineNo">017</span> * limitations under the License.<a name="line.17"></a>
-<span class="sourceLineNo">018</span> */<a name="line.18"></a>
-<span class="sourceLineNo">019</span><a name="line.19"></a>
-<span class="sourceLineNo">020</span>/**<a name="line.20"></a>
-<span class="sourceLineNo">021</span> * Tag a test as related to coprocessors.<a name="line.21"></a>
-<span class="sourceLineNo">022</span> * @see org.apache.hadoop.hbase.testclassification.ClientTests<a name="line.22"></a>
-<span class="sourceLineNo">023</span> * @see org.apache.hadoop.hbase.testclassification.CoprocessorTests<a name="line.23"></a>
-<span class="sourceLineNo">024</span> * @see org.apache.hadoop.hbase.testclassification.FilterTests<a name="line.24"></a>
-<span class="sourceLineNo">025</span> * @see org.apache.hadoop.hbase.testclassification.FlakeyTests<a name="line.25"></a>
-<span class="sourceLineNo">026</span> * @see org.apache.hadoop.hbase.testclassification.IOTests<a name="line.26"></a>
-<span class="sourceLineNo">027</span> * @see org.apache.hadoop.hbase.testclassification.MapReduceTests<a name="line.27"></a>
-<span class="sourceLineNo">028</span> * @see org.apache.hadoop.hbase.testclassification.MasterTests<a name="line.28"></a>
-<span class="sourceLineNo">029</span> * @see org.apache.hadoop.hbase.testclassification.MiscTests<a name="line.29"></a>
-<span class="sourceLineNo">030</span> * @see org.apache.hadoop.hbase.testclassification.RegionServerTests<a name="line.30"></a>
-<span class="sourceLineNo">031</span> * @see org.apache.hadoop.hbase.testclassification.ReplicationTests<a name="line.31"></a>
-<span class="sourceLineNo">032</span> * @see org.apache.hadoop.hbase.testclassification.RPCTests<a name="line.32"></a>
-<span class="sourceLineNo">033</span> * @see org.apache.hadoop.hbase.testclassification.SecurityTests<a name="line.33"></a>
-<span class="sourceLineNo">034</span> * @see org.apache.hadoop.hbase.testclassification.VerySlowRegionServerTests<a name="line.34"></a>
-<span class="sourceLineNo">035</span> * @see org.apache.hadoop.hbase.testclassification.VerySlowMapReduceTests<a name="line.35"></a>
-<span class="sourceLineNo">036</span> */<a name="line.36"></a>
-<span class="sourceLineNo">037</span>package org.apache.hadoop.hbase.testclassification;<a name="line.37"></a>
-<span class="sourceLineNo">038</span><a name="line.38"></a>
-<span class="sourceLineNo">039</span><a name="line.39"></a>
-<span class="sourceLineNo">040</span>public interface CoprocessorTests {<a name="line.40"></a>
-<span class="sourceLineNo">041</span>}<a name="line.41"></a>
+<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
+<span class="sourceLineNo">003</span> * or more contributor license agreements.  See the NOTICE file<a name="line.3"></a>
+<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
+<span class="sourceLineNo">005</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.5"></a>
+<span class="sourceLineNo">006</span> * to you under the Apache License, Version 2.0 (the<a name="line.6"></a>
+<span class="sourceLineNo">007</span> * "License"); you may not use this file except in compliance<a name="line.7"></a>
+<span class="sourceLineNo">008</span> * with the License.  You may obtain a copy of the License at<a name="line.8"></a>
+<span class="sourceLineNo">009</span> *<a name="line.9"></a>
+<span class="sourceLineNo">010</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.10"></a>
+<span class="sourceLineNo">011</span> *<a name="line.11"></a>
+<span class="sourceLineNo">012</span> * Unless required by applicable law or agreed to in writing, software<a name="line.12"></a>
+<span class="sourceLineNo">013</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.13"></a>
+<span class="sourceLineNo">014</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.14"></a>
+<span class="sourceLineNo">015</span> * See the License for the specific language governing permissions and<a name="line.15"></a>
+<span class="sourceLineNo">016</span> * limitations under the License.<a name="line.16"></a>
+<span class="sourceLineNo">017</span> */<a name="line.17"></a>
+<span class="sourceLineNo">018</span><a name="line.18"></a>
+<span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.testclassification;<a name="line.19"></a>
+<span class="sourceLineNo">020</span><a name="line.20"></a>
+<span class="sourceLineNo">021</span>/**<a name="line.21"></a>
+<span class="sourceLineNo">022</span> * Tag a test as related to coprocessors.<a name="line.22"></a>
+<span class="sourceLineNo">023</span> *<a name="line.23"></a>
+<span class="sourceLineNo">024</span> * @see org.apache.hadoop.hbase.testclassification.ClientTests<a name="line.24"></a>
+<span class="sourceLineNo">025</span> * @see org.apache.hadoop.hbase.testclassification.CoprocessorTests<a name="line.25"></a>
+<span class="sourceLineNo">026</span> * @see org.apache.hadoop.hbase.testclassification.FilterTests<a name="line.26"></a>
+<span class="sourceLineNo">027</span> * @see org.apache.hadoop.hbase.testclassification.FlakeyTests<a name="line.27"></a>
+<span class="sourceLineNo">028</span> * @see org.apache.hadoop.hbase.testclassification.IOTests<a name="line.28"></a>
+<span class="sourceLineNo">029</span> * @see org.apache.hadoop.hbase.testclassification.MapReduceTests<a name="line.29"></a>
+<span class="sourceLineNo">030</span> * @see org.apache.hadoop.hbase.testclassification.MasterTests<a name="line.30"></a>
+<span class="sourceLineNo">031</span> * @see org.apache.hadoop.hbase.testclassification.MiscTests<a name="line.31"></a>
+<span class="sourceLineNo">032</span> * @see org.apache.hadoop.hbase.testclassification.RegionServerTests<a name="line.32"></a>
+<span class="sourceLineNo">033</span> * @see org.apache.hadoop.hbase.testclassification.ReplicationTests<a name="line.33"></a>
+<span class="sourceLineNo">034</span> * @see org.apache.hadoop.hbase.testclassification.RPCTests<a name="line.34"></a>
+<span class="sourceLineNo">035</span> * @see org.apache.hadoop.hbase.testclassification.SecurityTests<a name="line.35"></a>
+<span class="sourceLineNo">036</span> * @see org.apache.hadoop.hbase.testclassification.VerySlowRegionServerTests<a name="line.36"></a>
+<span class="sourceLineNo">037</span> * @see org.apache.hadoop.hbase.testclassification.VerySlowMapReduceTests<a name="line.37"></a>
+<span class="sourceLineNo">038</span> */<a name="line.38"></a>
+<span class="sourceLineNo">039</span>public interface CoprocessorTests {<a name="line.39"></a>
+<span class="sourceLineNo">040</span>}<a name="line.40"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/FilterTests.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/FilterTests.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/FilterTests.html
index 9603938..03d5334 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/FilterTests.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/FilterTests.html
@@ -7,46 +7,45 @@
 <body>
 <div class="sourceContainer">
 <pre><span class="sourceLineNo">001</span>/*<a name="line.1"></a>
-<span class="sourceLineNo">002</span> *<a name="line.2"></a>
-<span class="sourceLineNo">003</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.3"></a>
-<span class="sourceLineNo">004</span> * or more contributor license agreements.  See the NOTICE file<a name="line.4"></a>
-<span class="sourceLineNo">005</span> * distributed with this work for additional information<a name="line.5"></a>
-<span class="sourceLineNo">006</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.6"></a>
-<span class="sourceLineNo">007</span> * to you under the Apache License, Version 2.0 (the<a name="line.7"></a>
-<span class="sourceLineNo">008</span> * "License"); you may not use this file except in compliance<a name="line.8"></a>
-<span class="sourceLineNo">009</span> * with the License.  You may obtain a copy of the License at<a name="line.9"></a>
-<span class="sourceLineNo">010</span> *<a name="line.10"></a>
-<span class="sourceLineNo">011</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.11"></a>
-<span class="sourceLineNo">012</span> *<a name="line.12"></a>
-<span class="sourceLineNo">013</span> * Unless required by applicable law or agreed to in writing, software<a name="line.13"></a>
-<span class="sourceLineNo">014</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.14"></a>
-<span class="sourceLineNo">015</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.15"></a>
-<span class="sourceLineNo">016</span> * See the License for the specific language governing permissions and<a name="line.16"></a>
-<span class="sourceLineNo">017</span> * limitations under the License.<a name="line.17"></a>
-<span class="sourceLineNo">018</span> */<a name="line.18"></a>
-<span class="sourceLineNo">019</span><a name="line.19"></a>
-<span class="sourceLineNo">020</span>/**<a name="line.20"></a>
-<span class="sourceLineNo">021</span> * Tag a test as related to the filter package.<a name="line.21"></a>
-<span class="sourceLineNo">022</span> * @see org.apache.hadoop.hbase.testclassification.ClientTests<a name="line.22"></a>
-<span class="sourceLineNo">023</span> * @see org.apache.hadoop.hbase.testclassification.CoprocessorTests<a name="line.23"></a>
-<span class="sourceLineNo">024</span> * @see org.apache.hadoop.hbase.testclassification.FilterTests<a name="line.24"></a>
-<span class="sourceLineNo">025</span> * @see org.apache.hadoop.hbase.testclassification.FlakeyTests<a name="line.25"></a>
-<span class="sourceLineNo">026</span> * @see org.apache.hadoop.hbase.testclassification.IOTests<a name="line.26"></a>
-<span class="sourceLineNo">027</span> * @see org.apache.hadoop.hbase.testclassification.MapReduceTests<a name="line.27"></a>
-<span class="sourceLineNo">028</span> * @see org.apache.hadoop.hbase.testclassification.MasterTests<a name="line.28"></a>
-<span class="sourceLineNo">029</span> * @see org.apache.hadoop.hbase.testclassification.MiscTests<a name="line.29"></a>
-<span class="sourceLineNo">030</span> * @see org.apache.hadoop.hbase.testclassification.RegionServerTests<a name="line.30"></a>
-<span class="sourceLineNo">031</span> * @see org.apache.hadoop.hbase.testclassification.ReplicationTests<a name="line.31"></a>
-<span class="sourceLineNo">032</span> * @see org.apache.hadoop.hbase.testclassification.RPCTests<a name="line.32"></a>
-<span class="sourceLineNo">033</span> * @see org.apache.hadoop.hbase.testclassification.SecurityTests<a name="line.33"></a>
-<span class="sourceLineNo">034</span> * @see org.apache.hadoop.hbase.testclassification.VerySlowRegionServerTests<a name="line.34"></a>
-<span class="sourceLineNo">035</span> * @see org.apache.hadoop.hbase.testclassification.VerySlowMapReduceTests<a name="line.35"></a>
-<span class="sourceLineNo">036</span> */<a name="line.36"></a>
-<span class="sourceLineNo">037</span>package org.apache.hadoop.hbase.testclassification;<a name="line.37"></a>
-<span class="sourceLineNo">038</span><a name="line.38"></a>
-<span class="sourceLineNo">039</span><a name="line.39"></a>
-<span class="sourceLineNo">040</span>public interface FilterTests {<a name="line.40"></a>
-<span class="sourceLineNo">041</span>}<a name="line.41"></a>
+<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
+<span class="sourceLineNo">003</span> * or more contributor license agreements.  See the NOTICE file<a name="line.3"></a>
+<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
+<span class="sourceLineNo">005</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.5"></a>
+<span class="sourceLineNo">006</span> * to you under the Apache License, Version 2.0 (the<a name="line.6"></a>
+<span class="sourceLineNo">007</span> * "License"); you may not use this file except in compliance<a name="line.7"></a>
+<span class="sourceLineNo">008</span> * with the License.  You may obtain a copy of the License at<a name="line.8"></a>
+<span class="sourceLineNo">009</span> *<a name="line.9"></a>
+<span class="sourceLineNo">010</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.10"></a>
+<span class="sourceLineNo">011</span> *<a name="line.11"></a>
+<span class="sourceLineNo">012</span> * Unless required by applicable law or agreed to in writing, software<a name="line.12"></a>
+<span class="sourceLineNo">013</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.13"></a>
+<span class="sourceLineNo">014</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.14"></a>
+<span class="sourceLineNo">015</span> * See the License for the specific language governing permissions and<a name="line.15"></a>
+<span class="sourceLineNo">016</span> * limitations under the License.<a name="line.16"></a>
+<span class="sourceLineNo">017</span> */<a name="line.17"></a>
+<span class="sourceLineNo">018</span><a name="line.18"></a>
+<span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.testclassification;<a name="line.19"></a>
+<span class="sourceLineNo">020</span><a name="line.20"></a>
+<span class="sourceLineNo">021</span>/**<a name="line.21"></a>
+<span class="sourceLineNo">022</span> * Tag a test as related to the {@link org.apache.hadoop.hbase.filter} package.<a name="line.22"></a>
+<span class="sourceLineNo">023</span> *<a name="line.23"></a>
+<span class="sourceLineNo">024</span> * @see org.apache.hadoop.hbase.testclassification.ClientTests<a name="line.24"></a>
+<span class="sourceLineNo">025</span> * @see org.apache.hadoop.hbase.testclassification.CoprocessorTests<a name="line.25"></a>
+<span class="sourceLineNo">026</span> * @see org.apache.hadoop.hbase.testclassification.FilterTests<a name="line.26"></a>
+<span class="sourceLineNo">027</span> * @see org.apache.hadoop.hbase.testclassification.FlakeyTests<a name="line.27"></a>
+<span class="sourceLineNo">028</span> * @see org.apache.hadoop.hbase.testclassification.IOTests<a name="line.28"></a>
+<span class="sourceLineNo">029</span> * @see org.apache.hadoop.hbase.testclassification.MapReduceTests<a name="line.29"></a>
+<span class="sourceLineNo">030</span> * @see org.apache.hadoop.hbase.testclassification.MasterTests<a name="line.30"></a>
+<span class="sourceLineNo">031</span> * @see org.apache.hadoop.hbase.testclassification.MiscTests<a name="line.31"></a>
+<span class="sourceLineNo">032</span> * @see org.apache.hadoop.hbase.testclassification.RegionServerTests<a name="line.32"></a>
+<span class="sourceLineNo">033</span> * @see org.apache.hadoop.hbase.testclassification.ReplicationTests<a name="line.33"></a>
+<span class="sourceLineNo">034</span> * @see org.apache.hadoop.hbase.testclassification.RPCTests<a name="line.34"></a>
+<span class="sourceLineNo">035</span> * @see org.apache.hadoop.hbase.testclassification.SecurityTests<a name="line.35"></a>
+<span class="sourceLineNo">036</span> * @see org.apache.hadoop.hbase.testclassification.VerySlowRegionServerTests<a name="line.36"></a>
+<span class="sourceLineNo">037</span> * @see org.apache.hadoop.hbase.testclassification.VerySlowMapReduceTests<a name="line.37"></a>
+<span class="sourceLineNo">038</span> */<a name="line.38"></a>
+<span class="sourceLineNo">039</span>public interface FilterTests {<a name="line.39"></a>
+<span class="sourceLineNo">040</span>}<a name="line.40"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/FlakeyTests.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/FlakeyTests.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/FlakeyTests.html
index d682473..6a2e6d2 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/FlakeyTests.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/FlakeyTests.html
@@ -7,43 +7,43 @@
 <body>
 <div class="sourceContainer">
 <pre><span class="sourceLineNo">001</span>/*<a name="line.1"></a>
-<span class="sourceLineNo">002</span> *<a name="line.2"></a>
-<span class="sourceLineNo">003</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.3"></a>
-<span class="sourceLineNo">004</span> * or more contributor license agreements.  See the NOTICE file<a name="line.4"></a>
-<span class="sourceLineNo">005</span> * distributed with this work for additional information<a name="line.5"></a>
-<span class="sourceLineNo">006</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.6"></a>
-<span class="sourceLineNo">007</span> * to you under the Apache License, Version 2.0 (the<a name="line.7"></a>
-<span class="sourceLineNo">008</span> * "License"); you may not use this file except in compliance<a name="line.8"></a>
-<span class="sourceLineNo">009</span> * with the License.  You may obtain a copy of the License at<a name="line.9"></a>
-<span class="sourceLineNo">010</span> *<a name="line.10"></a>
-<span class="sourceLineNo">011</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.11"></a>
-<span class="sourceLineNo">012</span> *<a name="line.12"></a>
-<span class="sourceLineNo">013</span> * Unless required by applicable law or agreed to in writing, software<a name="line.13"></a>
-<span class="sourceLineNo">014</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.14"></a>
-<span class="sourceLineNo">015</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.15"></a>
-<span class="sourceLineNo">016</span> * See the License for the specific language governing permissions and<a name="line.16"></a>
-<span class="sourceLineNo">017</span> * limitations under the License.<a name="line.17"></a>
-<span class="sourceLineNo">018</span> */<a name="line.18"></a>
-<span class="sourceLineNo">019</span><a name="line.19"></a>
-<span class="sourceLineNo">020</span>/**<a name="line.20"></a>
-<span class="sourceLineNo">021</span> * Tag a test as failing commonly on public build infrastructure.<a name="line.21"></a>
-<span class="sourceLineNo">022</span> * @see org.apache.hadoop.hbase.testclassification.ClientTests<a name="line.22"></a>
-<span class="sourceLineNo">023</span> * @see org.apache.hadoop.hbase.testclassification.CoprocessorTests<a name="line.23"></a>
-<span class="sourceLineNo">024</span> * @see org.apache.hadoop.hbase.testclassification.FilterTests<a name="line.24"></a>
-<span class="sourceLineNo">025</span> * @see org.apache.hadoop.hbase.testclassification.FlakeyTests<a name="line.25"></a>
-<span class="sourceLineNo">026</span> * @see org.apache.hadoop.hbase.testclassification.IOTests<a name="line.26"></a>
-<span class="sourceLineNo">027</span> * @see org.apache.hadoop.hbase.testclassification.MapReduceTests<a name="line.27"></a>
-<span class="sourceLineNo">028</span> * @see org.apache.hadoop.hbase.testclassification.MasterTests<a name="line.28"></a>
-<span class="sourceLineNo">029</span> * @see org.apache.hadoop.hbase.testclassification.MiscTests<a name="line.29"></a>
-<span class="sourceLineNo">030</span> * @see org.apache.hadoop.hbase.testclassification.RegionServerTests<a name="line.30"></a>
-<span class="sourceLineNo">031</span> * @see org.apache.hadoop.hbase.testclassification.ReplicationTests<a name="line.31"></a>
-<span class="sourceLineNo">032</span> * @see org.apache.hadoop.hbase.testclassification.RPCTests<a name="line.32"></a>
-<span class="sourceLineNo">033</span> * @see org.apache.hadoop.hbase.testclassification.SecurityTests<a name="line.33"></a>
-<span class="sourceLineNo">034</span> * @see org.apache.hadoop.hbase.testclassification.VerySlowRegionServerTests<a name="line.34"></a>
-<span class="sourceLineNo">035</span> * @see org.apache.hadoop.hbase.testclassification.VerySlowMapReduceTests<a name="line.35"></a>
-<span class="sourceLineNo">036</span> */<a name="line.36"></a>
-<span class="sourceLineNo">037</span>package org.apache.hadoop.hbase.testclassification;<a name="line.37"></a>
-<span class="sourceLineNo">038</span><a name="line.38"></a>
+<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
+<span class="sourceLineNo">003</span> * or more contributor license agreements.  See the NOTICE file<a name="line.3"></a>
+<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
+<span class="sourceLineNo">005</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.5"></a>
+<span class="sourceLineNo">006</span> * to you under the Apache License, Version 2.0 (the<a name="line.6"></a>
+<span class="sourceLineNo">007</span> * "License"); you may not use this file except in compliance<a name="line.7"></a>
+<span class="sourceLineNo">008</span> * with the License.  You may obtain a copy of the License at<a name="line.8"></a>
+<span class="sourceLineNo">009</span> *<a name="line.9"></a>
+<span class="sourceLineNo">010</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.10"></a>
+<span class="sourceLineNo">011</span> *<a name="line.11"></a>
+<span class="sourceLineNo">012</span> * Unless required by applicable law or agreed to in writing, software<a name="line.12"></a>
+<span class="sourceLineNo">013</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.13"></a>
+<span class="sourceLineNo">014</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.14"></a>
+<span class="sourceLineNo">015</span> * See the License for the specific language governing permissions and<a name="line.15"></a>
+<span class="sourceLineNo">016</span> * limitations under the License.<a name="line.16"></a>
+<span class="sourceLineNo">017</span> */<a name="line.17"></a>
+<span class="sourceLineNo">018</span><a name="line.18"></a>
+<span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.testclassification;<a name="line.19"></a>
+<span class="sourceLineNo">020</span><a name="line.20"></a>
+<span class="sourceLineNo">021</span>/**<a name="line.21"></a>
+<span class="sourceLineNo">022</span> * Tag a test as failing commonly on public build infrastructure.<a name="line.22"></a>
+<span class="sourceLineNo">023</span> *<a name="line.23"></a>
+<span class="sourceLineNo">024</span> * @see org.apache.hadoop.hbase.testclassification.ClientTests<a name="line.24"></a>
+<span class="sourceLineNo">025</span> * @see org.apache.hadoop.hbase.testclassification.CoprocessorTests<a name="line.25"></a>
+<span class="sourceLineNo">026</span> * @see org.apache.hadoop.hbase.testclassification.FilterTests<a name="line.26"></a>
+<span class="sourceLineNo">027</span> * @see org.apache.hadoop.hbase.testclassification.FlakeyTests<a name="line.27"></a>
+<span class="sourceLineNo">028</span> * @see org.apache.hadoop.hbase.testclassification.IOTests<a name="line.28"></a>
+<span class="sourceLineNo">029</span> * @see org.apache.hadoop.hbase.testclassification.MapReduceTests<a name="line.29"></a>
+<span class="sourceLineNo">030</span> * @see org.apache.hadoop.hbase.testclassification.MasterTests<a name="line.30"></a>
+<span class="sourceLineNo">031</span> * @see org.apache.hadoop.hbase.testclassification.MiscTests<a name="line.31"></a>
+<span class="sourceLineNo">032</span> * @see org.apache.hadoop.hbase.testclassification.RegionServerTests<a name="line.32"></a>
+<span class="sourceLineNo">033</span> * @see org.apache.hadoop.hbase.testclassification.ReplicationTests<a name="line.33"></a>
+<span class="sourceLineNo">034</span> * @see org.apache.hadoop.hbase.testclassification.RPCTests<a name="line.34"></a>
+<span class="sourceLineNo">035</span> * @see org.apache.hadoop.hbase.testclassification.SecurityTests<a name="line.35"></a>
+<span class="sourceLineNo">036</span> * @see org.apache.hadoop.hbase.testclassification.VerySlowRegionServerTests<a name="line.36"></a>
+<span class="sourceLineNo">037</span> * @see org.apache.hadoop.hbase.testclassification.VerySlowMapReduceTests<a name="line.37"></a>
+<span class="sourceLineNo">038</span> */<a name="line.38"></a>
 <span class="sourceLineNo">039</span>public interface FlakeyTests {<a name="line.39"></a>
 <span class="sourceLineNo">040</span>}<a name="line.40"></a>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/IOTests.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/IOTests.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/IOTests.html
index c8d73dc..a301754 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/IOTests.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/IOTests.html
@@ -7,44 +7,44 @@
 <body>
 <div class="sourceContainer">
 <pre><span class="sourceLineNo">001</span>/*<a name="line.1"></a>
-<span class="sourceLineNo">002</span> *<a name="line.2"></a>
-<span class="sourceLineNo">003</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.3"></a>
-<span class="sourceLineNo">004</span> * or more contributor license agreements.  See the NOTICE file<a name="line.4"></a>
-<span class="sourceLineNo">005</span> * distributed with this work for additional information<a name="line.5"></a>
-<span class="sourceLineNo">006</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.6"></a>
-<span class="sourceLineNo">007</span> * to you under the Apache License, Version 2.0 (the<a name="line.7"></a>
-<span class="sourceLineNo">008</span> * "License"); you may not use this file except in compliance<a name="line.8"></a>
-<span class="sourceLineNo">009</span> * with the License.  You may obtain a copy of the License at<a name="line.9"></a>
-<span class="sourceLineNo">010</span> *<a name="line.10"></a>
-<span class="sourceLineNo">011</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.11"></a>
-<span class="sourceLineNo">012</span> *<a name="line.12"></a>
-<span class="sourceLineNo">013</span> * Unless required by applicable law or agreed to in writing, software<a name="line.13"></a>
-<span class="sourceLineNo">014</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.14"></a>
-<span class="sourceLineNo">015</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.15"></a>
-<span class="sourceLineNo">016</span> * See the License for the specific language governing permissions and<a name="line.16"></a>
-<span class="sourceLineNo">017</span> * limitations under the License.<a name="line.17"></a>
-<span class="sourceLineNo">018</span> */<a name="line.18"></a>
-<span class="sourceLineNo">019</span><a name="line.19"></a>
-<span class="sourceLineNo">020</span>/**<a name="line.20"></a>
-<span class="sourceLineNo">021</span> * Tag a test as related to the io package. Things like HFile and the like.<a name="line.21"></a>
-<span class="sourceLineNo">022</span> * @see org.apache.hadoop.hbase.testclassification.ClientTests<a name="line.22"></a>
-<span class="sourceLineNo">023</span> * @see org.apache.hadoop.hbase.testclassification.CoprocessorTests<a name="line.23"></a>
-<span class="sourceLineNo">024</span> * @see org.apache.hadoop.hbase.testclassification.FilterTests<a name="line.24"></a>
-<span class="sourceLineNo">025</span> * @see org.apache.hadoop.hbase.testclassification.FlakeyTests<a name="line.25"></a>
-<span class="sourceLineNo">026</span> * @see org.apache.hadoop.hbase.testclassification.IOTests<a name="line.26"></a>
-<span class="sourceLineNo">027</span> * @see org.apache.hadoop.hbase.testclassification.MapReduceTests<a name="line.27"></a>
-<span class="sourceLineNo">028</span> * @see org.apache.hadoop.hbase.testclassification.MasterTests<a name="line.28"></a>
-<span class="sourceLineNo">029</span> * @see org.apache.hadoop.hbase.testclassification.MiscTests<a name="line.29"></a>
-<span class="sourceLineNo">030</span> * @see org.apache.hadoop.hbase.testclassification.RegionServerTests<a name="line.30"></a>
-<span class="sourceLineNo">031</span> * @see org.apache.hadoop.hbase.testclassification.ReplicationTests<a name="line.31"></a>
-<span class="sourceLineNo">032</span> * @see org.apache.hadoop.hbase.testclassification.RPCTests<a name="line.32"></a>
-<span class="sourceLineNo">033</span> * @see org.apache.hadoop.hbase.testclassification.SecurityTests<a name="line.33"></a>
-<span class="sourceLineNo">034</span> * @see org.apache.hadoop.hbase.testclassification.VerySlowRegionServerTests<a name="line.34"></a>
-<span class="sourceLineNo">035</span> * @see org.apache.hadoop.hbase.testclassification.VerySlowMapReduceTests<a name="line.35"></a>
-<span class="sourceLineNo">036</span> */<a name="line.36"></a>
-<span class="sourceLineNo">037</span>package org.apache.hadoop.hbase.testclassification;<a name="line.37"></a>
-<span class="sourceLineNo">038</span><a name="line.38"></a>
-<span class="sourceLineNo">039</span><a name="line.39"></a>
+<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
+<span class="sourceLineNo">003</span> * or more contributor license agreements.  See the NOTICE file<a name="line.3"></a>
+<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
+<span class="sourceLineNo">005</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.5"></a>
+<span class="sourceLineNo">006</span> * to you under the Apache License, Version 2.0 (the<a name="line.6"></a>
+<span class="sourceLineNo">007</span> * "License"); you may not use this file except in compliance<a name="line.7"></a>
+<span class="sourceLineNo">008</span> * with the License.  You may obtain a copy of the License at<a name="line.8"></a>
+<span class="sourceLineNo">009</span> *<a name="line.9"></a>
+<span class="sourceLineNo">010</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.10"></a>
+<span class="sourceLineNo">011</span> *<a name="line.11"></a>
+<span class="sourceLineNo">012</span> * Unless required by applicable law or agreed to in writing, software<a name="line.12"></a>
+<span class="sourceLineNo">013</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.13"></a>
+<span class="sourceLineNo">014</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.14"></a>
+<span class="sourceLineNo">015</span> * See the License for the specific language governing permissions and<a name="line.15"></a>
+<span class="sourceLineNo">016</span> * limitations under the License.<a name="line.16"></a>
+<span class="sourceLineNo">017</span> */<a name="line.17"></a>
+<span class="sourceLineNo">018</span><a name="line.18"></a>
+<span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.testclassification;<a name="line.19"></a>
+<span class="sourceLineNo">020</span><a name="line.20"></a>
+<span class="sourceLineNo">021</span>/**<a name="line.21"></a>
+<span class="sourceLineNo">022</span> * Tag a test as related to the {@link org.apache.hadoop.hbase.io} package. Things like HFile and<a name="line.22"></a>
+<span class="sourceLineNo">023</span> * the like.<a name="line.23"></a>
+<span class="sourceLineNo">024</span> *<a name="line.24"></a>
+<span class="sourceLineNo">025</span> * @see org.apache.hadoop.hbase.testclassification.ClientTests<a name="line.25"></a>
+<span class="sourceLineNo">026</span> * @see org.apache.hadoop.hbase.testclassification.CoprocessorTests<a name="line.26"></a>
+<span class="sourceLineNo">027</span> * @see org.apache.hadoop.hbase.testclassification.FilterTests<a name="line.27"></a>
+<span class="sourceLineNo">028</span> * @see org.apache.hadoop.hbase.testclassification.FlakeyTests<a name="line.28"></a>
+<span class="sourceLineNo">029</span> * @see org.apache.hadoop.hbase.testclassification.IOTests<a name="line.29"></a>
+<span class="sourceLineNo">030</span> * @see org.apache.hadoop.hbase.testclassification.MapReduceTests<a name="line.30"></a>
+<span class="sourceLineNo">031</span> * @see org.apache.hadoop.hbase.testclassification.MasterTests<a name="line.31"></a>
+<span class="sourceLineNo">032</span> * @see org.apache.hadoop.hbase.testclassification.MiscTests<a name="line.32"></a>
+<span class="sourceLineNo">033</span> * @see org.apache.hadoop.hbase.testclassification.RegionServerTests<a name="line.33"></a>
+<span class="sourceLineNo">034</span> * @see org.apache.hadoop.hbase.testclassification.ReplicationTests<a name="line.34"></a>
+<span class="sourceLineNo">035</span> * @see org.apache.hadoop.hbase.testclassification.RPCTests<a name="line.35"></a>
+<span class="sourceLineNo">036</span> * @see org.apache.hadoop.hbase.testclassification.SecurityTests<a name="line.36"></a>
+<span class="sourceLineNo">037</span> * @see org.apache.hadoop.hbase.testclassification.VerySlowRegionServerTests<a name="line.37"></a>
+<span class="sourceLineNo">038</span> * @see org.apache.hadoop.hbase.testclassification.VerySlowMapReduceTests<a name="line.38"></a>
+<span class="sourceLineNo">039</span> */<a name="line.39"></a>
 <span class="sourceLineNo">040</span>public interface IOTests {<a name="line.40"></a>
 <span class="sourceLineNo">041</span>}<a name="line.41"></a>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/IntegrationTests.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/IntegrationTests.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/IntegrationTests.html
index 90d524f..6a62107 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/IntegrationTests.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/IntegrationTests.html
@@ -6,7 +6,7 @@
 </head>
 <body>
 <div class="sourceContainer">
-<pre><span class="sourceLineNo">001</span>/**<a name="line.1"></a>
+<pre><span class="sourceLineNo">001</span>/*<a name="line.1"></a>
 <span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
 <span class="sourceLineNo">003</span> * or more contributor license agreements.  See the NOTICE file<a name="line.3"></a>
 <span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
@@ -28,23 +28,24 @@
 <span class="sourceLineNo">020</span><a name="line.20"></a>
 <span class="sourceLineNo">021</span>/**<a name="line.21"></a>
 <span class="sourceLineNo">022</span> * Tag a test as 'integration/system' test, meaning that the test class has the following<a name="line.22"></a>
-<span class="sourceLineNo">023</span> * characteristics: &lt;ul&gt;<a name="line.23"></a>
-<span class="sourceLineNo">024</span> *  &lt;li&gt; Possibly takes hours to complete&lt;/li&gt;<a name="line.24"></a>
-<span class="sourceLineNo">025</span> *  &lt;li&gt; Can be run on a mini cluster or an actual cluster&lt;/li&gt;<a name="line.25"></a>
-<span class="sourceLineNo">026</span> *  &lt;li&gt; Can make changes to the given cluster (starting stopping daemons, etc)&lt;/li&gt;<a name="line.26"></a>
-<span class="sourceLineNo">027</span> *  &lt;li&gt; Should not be run in parallel of other integration tests&lt;/li&gt;<a name="line.27"></a>
-<span class="sourceLineNo">028</span> * &lt;/ul&gt;<a name="line.28"></a>
-<span class="sourceLineNo">029</span> *<a name="line.29"></a>
-<span class="sourceLineNo">030</span> * Integration / System tests should have a class name starting with "IntegrationTest", and<a name="line.30"></a>
-<span class="sourceLineNo">031</span> * should be annotated with @Category(IntegrationTests.class). Integration tests can be run<a name="line.31"></a>
-<span class="sourceLineNo">032</span> * using the IntegrationTestsDriver class or from mvn verify.<a name="line.32"></a>
-<span class="sourceLineNo">033</span> *<a name="line.33"></a>
-<span class="sourceLineNo">034</span> * @see SmallTests<a name="line.34"></a>
-<span class="sourceLineNo">035</span> * @see MediumTests<a name="line.35"></a>
-<span class="sourceLineNo">036</span> * @see LargeTests<a name="line.36"></a>
-<span class="sourceLineNo">037</span> */<a name="line.37"></a>
-<span class="sourceLineNo">038</span>public interface IntegrationTests {<a name="line.38"></a>
-<span class="sourceLineNo">039</span>}<a name="line.39"></a>
+<span class="sourceLineNo">023</span> * characteristics:<a name="line.23"></a>
+<span class="sourceLineNo">024</span> * &lt;ul&gt;<a name="line.24"></a>
+<span class="sourceLineNo">025</span> *  &lt;li&gt; Possibly takes hours to complete&lt;/li&gt;<a name="line.25"></a>
+<span class="sourceLineNo">026</span> *  &lt;li&gt; Can be run on a mini cluster or an actual cluster&lt;/li&gt;<a name="line.26"></a>
+<span class="sourceLineNo">027</span> *  &lt;li&gt; Can make changes to the given cluster (starting stopping daemons, etc)&lt;/li&gt;<a name="line.27"></a>
+<span class="sourceLineNo">028</span> *  &lt;li&gt; Should not be run in parallel of other integration tests&lt;/li&gt;<a name="line.28"></a>
+<span class="sourceLineNo">029</span> * &lt;/ul&gt;<a name="line.29"></a>
+<span class="sourceLineNo">030</span> *<a name="line.30"></a>
+<span class="sourceLineNo">031</span> * Integration / System tests should have a class name starting with "IntegrationTest", and<a name="line.31"></a>
+<span class="sourceLineNo">032</span> * should be annotated with @Category(IntegrationTests.class). Integration tests can be run<a name="line.32"></a>
+<span class="sourceLineNo">033</span> * using the IntegrationTestsDriver class or from mvn verify.<a name="line.33"></a>
+<span class="sourceLineNo">034</span> *<a name="line.34"></a>
+<span class="sourceLineNo">035</span> * @see SmallTests<a name="line.35"></a>
+<span class="sourceLineNo">036</span> * @see MediumTests<a name="line.36"></a>
+<span class="sourceLineNo">037</span> * @see LargeTests<a name="line.37"></a>
+<span class="sourceLineNo">038</span> */<a name="line.38"></a>
+<span class="sourceLineNo">039</span>public interface IntegrationTests {<a name="line.39"></a>
+<span class="sourceLineNo">040</span>}<a name="line.40"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/LargeTests.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/LargeTests.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/LargeTests.html
index cc8244e..8086b2d 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/LargeTests.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/LargeTests.html
@@ -7,43 +7,44 @@
 <body>
 <div class="sourceContainer">
 <pre><span class="sourceLineNo">001</span>/*<a name="line.1"></a>
-<span class="sourceLineNo">002</span> *<a name="line.2"></a>
-<span class="sourceLineNo">003</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.3"></a>
-<span class="sourceLineNo">004</span> * or more contributor license agreements.  See the NOTICE file<a name="line.4"></a>
-<span class="sourceLineNo">005</span> * distributed with this work for additional information<a name="line.5"></a>
-<span class="sourceLineNo">006</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.6"></a>
-<span class="sourceLineNo">007</span> * to you under the Apache License, Version 2.0 (the<a name="line.7"></a>
-<span class="sourceLineNo">008</span> * "License"); you may not use this file except in compliance<a name="line.8"></a>
-<span class="sourceLineNo">009</span> * with the License.  You may obtain a copy of the License at<a name="line.9"></a>
-<span class="sourceLineNo">010</span> *<a name="line.10"></a>
-<span class="sourceLineNo">011</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.11"></a>
-<span class="sourceLineNo">012</span> *<a name="line.12"></a>
-<span class="sourceLineNo">013</span> * Unless required by applicable law or agreed to in writing, software<a name="line.13"></a>
-<span class="sourceLineNo">014</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.14"></a>
-<span class="sourceLineNo">015</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.15"></a>
-<span class="sourceLineNo">016</span> * See the License for the specific language governing permissions and<a name="line.16"></a>
-<span class="sourceLineNo">017</span> * limitations under the License.<a name="line.17"></a>
-<span class="sourceLineNo">018</span> */<a name="line.18"></a>
-<span class="sourceLineNo">019</span><a name="line.19"></a>
-<span class="sourceLineNo">020</span>package org.apache.hadoop.hbase.testclassification;<a name="line.20"></a>
-<span class="sourceLineNo">021</span><a name="line.21"></a>
-<span class="sourceLineNo">022</span>/**<a name="line.22"></a>
-<span class="sourceLineNo">023</span> * Tag a test as 'large', meaning that the test class has the following<a name="line.23"></a>
-<span class="sourceLineNo">024</span> * characteristics:<a name="line.24"></a>
-<span class="sourceLineNo">025</span> *  - executed in an isolated JVM. Tests can however be executed in different<a name="line.25"></a>
-<span class="sourceLineNo">026</span> *    JVM on the same machine simultaneously.<a name="line.26"></a>
-<span class="sourceLineNo">027</span> *  - will not have to be executed by the developer before submitting a bug<a name="line.27"></a>
-<span class="sourceLineNo">028</span> *  - ideally, last less than 2 minutes to help parallelization<a name="line.28"></a>
-<span class="sourceLineNo">029</span> *<a name="line.29"></a>
-<span class="sourceLineNo">030</span> *  It the worst case compared to small or medium, use it only for tests that<a name="line.30"></a>
-<span class="sourceLineNo">031</span> *    you cannot put in the other categories<a name="line.31"></a>
-<span class="sourceLineNo">032</span> *<a name="line.32"></a>
-<span class="sourceLineNo">033</span> * @see SmallTests<a name="line.33"></a>
-<span class="sourceLineNo">034</span> * @see MediumTests<a name="line.34"></a>
-<span class="sourceLineNo">035</span> * @see IntegrationTests<a name="line.35"></a>
-<span class="sourceLineNo">036</span> */<a name="line.36"></a>
-<span class="sourceLineNo">037</span>public interface LargeTests {<a name="line.37"></a>
-<span class="sourceLineNo">038</span>}<a name="line.38"></a>
+<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
+<span class="sourceLineNo">003</span> * or more contributor license agreements.  See the NOTICE file<a name="line.3"></a>
+<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
+<span class="sourceLineNo">005</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.5"></a>
+<span class="sourceLineNo">006</span> * to you under the Apache License, Version 2.0 (the<a name="line.6"></a>
+<span class="sourceLineNo">007</span> * "License"); you may not use this file except in compliance<a name="line.7"></a>
+<span class="sourceLineNo">008</span> * with the License.  You may obtain a copy of the License at<a name="line.8"></a>
+<span class="sourceLineNo">009</span> *<a name="line.9"></a>
+<span class="sourceLineNo">010</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.10"></a>
+<span class="sourceLineNo">011</span> *<a name="line.11"></a>
+<span class="sourceLineNo">012</span> * Unless required by applicable law or agreed to in writing, software<a name="line.12"></a>
+<span class="sourceLineNo">013</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.13"></a>
+<span class="sourceLineNo">014</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.14"></a>
+<span class="sourceLineNo">015</span> * See the License for the specific language governing permissions and<a name="line.15"></a>
+<span class="sourceLineNo">016</span> * limitations under the License.<a name="line.16"></a>
+<span class="sourceLineNo">017</span> */<a name="line.17"></a>
+<span class="sourceLineNo">018</span><a name="line.18"></a>
+<span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.testclassification;<a name="line.19"></a>
+<span class="sourceLineNo">020</span><a name="line.20"></a>
+<span class="sourceLineNo">021</span>/**<a name="line.21"></a>
+<span class="sourceLineNo">022</span> * Tag a test as 'large', meaning that the test class has the following<a name="line.22"></a>
+<span class="sourceLineNo">023</span> * characteristics:<a name="line.23"></a>
+<span class="sourceLineNo">024</span> * &lt;ul&gt;<a name="line.24"></a>
+<span class="sourceLineNo">025</span> *  &lt;li&gt;executed in an isolated JVM. Tests can however be executed in different JVM on the same<a name="line.25"></a>
+<span class="sourceLineNo">026</span> *  machine simultaneously.&lt;/li&gt;<a name="line.26"></a>
+<span class="sourceLineNo">027</span> *  &lt;li&gt;will not have to be executed by the developer before submitting a bug&lt;/li&gt;<a name="line.27"></a>
+<span class="sourceLineNo">028</span> *  &lt;li&gt;ideally, last less than 2 minutes to help parallelization&lt;/li&gt;<a name="line.28"></a>
+<span class="sourceLineNo">029</span> * &lt;/ul&gt;<a name="line.29"></a>
+<span class="sourceLineNo">030</span> *<a name="line.30"></a>
+<span class="sourceLineNo">031</span> *  It the worst case compared to small or medium, use it only for tests that<a name="line.31"></a>
+<span class="sourceLineNo">032</span> *    you cannot put in the other categories<a name="line.32"></a>
+<span class="sourceLineNo">033</span> *<a name="line.33"></a>
+<span class="sourceLineNo">034</span> * @see SmallTests<a name="line.34"></a>
+<span class="sourceLineNo">035</span> * @see MediumTests<a name="line.35"></a>
+<span class="sourceLineNo">036</span> * @see IntegrationTests<a name="line.36"></a>
+<span class="sourceLineNo">037</span> */<a name="line.37"></a>
+<span class="sourceLineNo">038</span>public interface LargeTests {<a name="line.38"></a>
+<span class="sourceLineNo">039</span>}<a name="line.39"></a>
 
 
 


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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/devapidocs/org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html b/devapidocs/org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html
index 05e03a6..9a0936c 100644
--- a/devapidocs/org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html
+++ b/devapidocs/org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html
@@ -241,12 +241,16 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 </tr>
 <tr id="i9" class="rowColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&gt;</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html#getMetaRegions-org.apache.hadoop.hbase.zookeeper.ZKWatcher-">getMetaRegions</a></span>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw)</code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html#getMetaRegions-org.apache.hadoop.hbase.zookeeper.ZKWatcher-">getMetaRegions</a></span>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw)</code>
+<div class="block">Gets the meta regions for the given path with the default replica ID.</div>
+</td>
 </tr>
 <tr id="i10" class="altColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html#getMetaRegions-org.apache.hadoop.hbase.zookeeper.ZKWatcher-int-">getMetaRegions</a></span>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
-              int&nbsp;replicaId)</code>&nbsp;</td>
+              int&nbsp;replicaId)</code>
+<div class="block">Gets the meta regions for the given path and replica ID.</div>
+</td>
 </tr>
 <tr id="i11" class="rowColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/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;&gt;</code></td>
@@ -255,7 +259,9 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <tr id="i12" class="altColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/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;&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html#getMetaRegionsAndLocations-org.apache.hadoop.hbase.zookeeper.ZKWatcher-int-">getMetaRegionsAndLocations</a></span>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
-                          int&nbsp;replicaId)</code>&nbsp;</td>
+                          int&nbsp;replicaId)</code>
+<div class="block">Gets the meta regions and their locations for the given path and replica ID.</div>
+</td>
 </tr>
 <tr id="i13" class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/master/RegionState.html" title="class in org.apache.hadoop.hbase.master">RegionState</a></code></td>
@@ -276,8 +282,8 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
                        <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                        long&nbsp;timeout,
                        int&nbsp;replicaId)</code>
-<div class="block">Gets a connection to the server hosting meta, as reported by ZooKeeper,
- waiting up to the specified timeout for availability.</div>
+<div class="block">Gets a connection to the server hosting meta, as reported by ZooKeeper, waiting up to the
+ specified timeout for availability.</div>
 </td>
 </tr>
 <tr id="i16" class="altColor">
@@ -292,8 +298,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
                <a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
                int&nbsp;replicaId,
                <a href="../../../../../org/apache/hadoop/hbase/master/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master">RegionState.State</a>&nbsp;state)</code>
-<div class="block">Sets the location of <code>hbase:meta</code> in ZooKeeper to the
- specified server address.</div>
+<div class="block">Sets the location of <code>hbase:meta</code> in ZooKeeper to the specified server address.</div>
 </td>
 </tr>
 <tr id="i18" class="altColor">
@@ -349,8 +354,8 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html#waitMetaRegionLocation-org.apache.hadoop.hbase.zookeeper.ZKWatcher-int-long-">waitMetaRegionLocation</a></span>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                       int&nbsp;replicaId,
                       long&nbsp;timeout)</code>
-<div class="block">Gets the meta region location, if available, and waits for up to the
- specified timeout if not immediately available.</div>
+<div class="block">Gets the meta region location, if available, and waits for up to the specified timeout if not
+ immediately available.</div>
 </td>
 </tr>
 <tr id="i25" class="rowColor">
@@ -461,12 +466,13 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getMetaRegionsAndLocations</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<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;&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html#line.107">getMetaRegionsAndLocations</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<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;&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html#line.108">getMetaRegionsAndLocations</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                                                                     int&nbsp;replicaId)</pre>
+<div class="block">Gets the meta regions and their locations for the given path and replica ID.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>zkw</code> - </dd>
-<dd><code>replicaId</code> - </dd>
+<dd><code>zkw</code> - reference to the <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper"><code>ZKWatcher</code></a> which also contains configuration and operation</dd>
+<dd><code>replicaId</code> - the ID of the replica</dd>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>meta table regions and their locations.</dd>
 </dl>
@@ -478,7 +484,8 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getMetaRegions</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html#line.120">getMetaRegions</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw)</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html#line.123">getMetaRegions</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw)</pre>
+<div class="block">Gets the meta regions for the given path with the default replica ID.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>zkw</code> - ZooKeeper watcher to be used</dd>
@@ -493,12 +500,13 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getMetaRegions</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html#line.130">getMetaRegions</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html#line.134">getMetaRegions</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                                        int&nbsp;replicaId)</pre>
+<div class="block">Gets the meta regions for the given path and replica ID.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>zkw</code> - </dd>
-<dd><code>replicaId</code> - </dd>
+<dd><code>zkw</code> - reference to the <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper"><code>ZKWatcher</code></a> which also contains configuration and operation</dd>
+<dd><code>replicaId</code> - the ID of the replica</dd>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>List of meta regions</dd>
 </dl>
@@ -510,7 +518,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getListOfRegionInfos</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html#line.136">getListOfRegionInfos</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="../../../../../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;&gt;&nbsp;pairs)</pre>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html#line.140">getListOfRegionInfos</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="../../../../../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;&gt;&nbsp;pairs)</pre>
 </li>
 </ul>
 <a name="getMetaRegionLocation-org.apache.hadoop.hbase.zookeeper.ZKWatcher-">
@@ -519,7 +527,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getMetaRegionLocation</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/zookeeper/MetaTableLocator.html#line.151">getMetaRegionLocation</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw)</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/zookeeper/MetaTableLocator.html#line.157">getMetaRegionLocation</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw)</pre>
 <div class="block">Gets the meta region location, if available.  Does not block.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -535,13 +543,13 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getMetaRegionLocation</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/zookeeper/MetaTableLocator.html#line.166">getMetaRegionLocation</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
+<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/zookeeper/MetaTableLocator.html#line.172">getMetaRegionLocation</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                                         int&nbsp;replicaId)</pre>
 <div class="block">Gets the meta region location, if available.  Does not block.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>zkw</code> - </dd>
-<dd><code>replicaId</code> - </dd>
+<dd><code>zkw</code> - reference to the <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper"><code>ZKWatcher</code></a> which also contains configuration and operation</dd>
+<dd><code>replicaId</code> - the ID of the replica</dd>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>server name</dd>
 </dl>
@@ -553,7 +561,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>waitMetaRegionLocation</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/zookeeper/MetaTableLocator.html#line.187">waitMetaRegionLocation</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
+<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/zookeeper/MetaTableLocator.html#line.194">waitMetaRegionLocation</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                                          long&nbsp;timeout)
                                   throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a>,
                                          <a href="../../../../../org/apache/hadoop/hbase/NotAllMetaRegionsOnlineException.html" title="class in org.apache.hadoop.hbase">NotAllMetaRegionsOnlineException</a></pre>
@@ -563,14 +571,14 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
  get the latest data.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>zkw</code> - </dd>
+<dd><code>zkw</code> - reference to the <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper"><code>ZKWatcher</code></a> which also contains configuration and operation</dd>
 <dd><code>timeout</code> - maximum time to wait, in millis</dd>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>server name for server hosting meta region formatted as per
  <a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase"><code>ServerName</code></a>, or null if none available</dd>
 <dt><span class="throwsLabel">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></code> - if interrupted while waiting</dd>
-<dd><code><a href="../../../../../org/apache/hadoop/hbase/NotAllMetaRegionsOnlineException.html" title="class in org.apache.hadoop.hbase">NotAllMetaRegionsOnlineException</a></code></dd>
+<dd><code><a href="../../../../../org/apache/hadoop/hbase/NotAllMetaRegionsOnlineException.html" title="class in org.apache.hadoop.hbase">NotAllMetaRegionsOnlineException</a></code> - if a meta or root region is not online</dd>
 </dl>
 </li>
 </ul>
@@ -580,26 +588,25 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>waitMetaRegionLocation</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/zookeeper/MetaTableLocator.html#line.205">waitMetaRegionLocation</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
+<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/zookeeper/MetaTableLocator.html#line.212">waitMetaRegionLocation</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                                          int&nbsp;replicaId,
                                          long&nbsp;timeout)
                                   throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a>,
                                          <a href="../../../../../org/apache/hadoop/hbase/NotAllMetaRegionsOnlineException.html" title="class in org.apache.hadoop.hbase">NotAllMetaRegionsOnlineException</a></pre>
-<div class="block">Gets the meta region location, if available, and waits for up to the
- specified timeout if not immediately available.
- Given the zookeeper notification could be delayed, we will try to
+<div class="block">Gets the meta region location, if available, and waits for up to the specified timeout if not
+ immediately available. Given the zookeeper notification could be delayed, we will try to
  get the latest data.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>zkw</code> - </dd>
-<dd><code>replicaId</code> - </dd>
+<dd><code>zkw</code> - reference to the <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper"><code>ZKWatcher</code></a> which also contains configuration and operation</dd>
+<dd><code>replicaId</code> - the ID of the replica</dd>
 <dd><code>timeout</code> - maximum time to wait, in millis</dd>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>server name for server hosting meta region formatted as per
  <a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase"><code>ServerName</code></a>, or null if none available</dd>
 <dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="http://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>
-<dd><code><a href="../../../../../org/apache/hadoop/hbase/NotAllMetaRegionsOnlineException.html" title="class in org.apache.hadoop.hbase">NotAllMetaRegionsOnlineException</a></code></dd>
+<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></code> - if waiting for the socket operation fails</dd>
+<dd><code><a href="../../../../../org/apache/hadoop/hbase/NotAllMetaRegionsOnlineException.html" title="class in org.apache.hadoop.hbase">NotAllMetaRegionsOnlineException</a></code> - if a meta or root region is not online</dd>
 </dl>
 </li>
 </ul>
@@ -609,7 +616,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>waitMetaRegionLocation</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html#line.233">waitMetaRegionLocation</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html#line.240">waitMetaRegionLocation</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw)
                             throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <div class="block">Waits indefinitely for availability of <code>hbase:meta</code>.  Used during
  cluster startup.  Does not verify meta, just that something has been
@@ -628,7 +635,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>verifyMetaRegionLocation</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html#line.262">verifyMetaRegionLocation</a>(<a href="../../../../../org/apache/hadoop/hbase/client/ClusterConnection.html" title="interface in org.apache.hadoop.hbase.client">ClusterConnection</a>&nbsp;hConnection,
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html#line.273">verifyMetaRegionLocation</a>(<a href="../../../../../org/apache/hadoop/hbase/client/ClusterConnection.html" title="interface in org.apache.hadoop.hbase.client">ClusterConnection</a>&nbsp;hConnection,
                                         <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                                         long&nbsp;timeout)
                                  throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a>,
@@ -636,15 +643,15 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <div class="block">Verify <code>hbase:meta</code> is deployed and accessible.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>hConnection</code> - </dd>
-<dd><code>zkw</code> - </dd>
+<dd><code>hConnection</code> - the connection to use</dd>
+<dd><code>zkw</code> - reference to the <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper"><code>ZKWatcher</code></a> which also contains configuration and operation</dd>
 <dd><code>timeout</code> - How long to wait on zk for meta address (passed through to
- the internal call to <a href="../../../../../org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html#getMetaServerConnection-org.apache.hadoop.hbase.client.ClusterConnection-org.apache.hadoop.hbase.zookeeper.ZKWatcher-long-int-"><code>getMetaServerConnection(org.apache.hadoop.hbase.client.ClusterConnection, org.apache.hadoop.hbase.zookeeper.ZKWatcher, long, int)</code></a>.</dd>
+                the internal call to <a href="../../../../../org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html#getMetaServerConnection-org.apache.hadoop.hbase.client.ClusterConnection-org.apache.hadoop.hbase.zookeeper.ZKWatcher-long-int-"><code>getMetaServerConnection(org.apache.hadoop.hbase.client.ClusterConnection, org.apache.hadoop.hbase.zookeeper.ZKWatcher, long, int)</code></a>.</dd>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>True if the <code>hbase:meta</code> location is healthy.</dd>
 <dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
-<dd><code><a href="http://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>
+<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code> - if the number of retries for getting the connection is exceeded</dd>
+<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></code> - if waiting for the socket operation fails</dd>
 </dl>
 </li>
 </ul>
@@ -654,7 +661,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>verifyMetaRegionLocation</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html#line.278">verifyMetaRegionLocation</a>(<a href="../../../../../org/apache/hadoop/hbase/client/ClusterConnection.html" title="interface in org.apache.hadoop.hbase.client">ClusterConnection</a>&nbsp;connection,
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html#line.289">verifyMetaRegionLocation</a>(<a href="../../../../../org/apache/hadoop/hbase/client/ClusterConnection.html" title="interface in org.apache.hadoop.hbase.client">ClusterConnection</a>&nbsp;connection,
                                         <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                                         long&nbsp;timeout,
                                         int&nbsp;replicaId)
@@ -663,15 +670,15 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <div class="block">Verify <code>hbase:meta</code> is deployed and accessible.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>connection</code> - </dd>
-<dd><code>zkw</code> - </dd>
+<dd><code>connection</code> - the connection to use</dd>
+<dd><code>zkw</code> - reference to the <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper"><code>ZKWatcher</code></a> which also contains configuration and operation</dd>
 <dd><code>timeout</code> - How long to wait on zk for meta address (passed through to</dd>
-<dd><code>replicaId</code> - </dd>
+<dd><code>replicaId</code> - the ID of the replica</dd>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>True if the <code>hbase:meta</code> location is healthy.</dd>
 <dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="http://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>
-<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></code> - if waiting for the socket operation fails</dd>
+<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code> - if the number of retries for getting the connection is exceeded</dd>
 </dl>
 </li>
 </ul>
@@ -681,24 +688,20 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>verifyRegionLocation</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html#line.313">verifyRegionLocation</a>(<a href="../../../../../org/apache/hadoop/hbase/client/ClusterConnection.html" title="interface in org.apache.hadoop.hbase.client">ClusterConnection</a>&nbsp;connection,
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html#line.321">verifyRegionLocation</a>(<a href="../../../../../org/apache/hadoop/hbase/client/ClusterConnection.html" title="interface in org.apache.hadoop.hbase.client">ClusterConnection</a>&nbsp;connection,
                                      org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.AdminService.BlockingInterface&nbsp;hostingServer,
                                      <a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;address,
-                                     byte[]&nbsp;regionName)
-                              throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
+                                     byte[]&nbsp;regionName)</pre>
 <div class="block">Verify we can connect to <code>hostingServer</code> and that its carrying
  <code>regionName</code>.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>hostingServer</code> - Interface to the server hosting <code>regionName</code></dd>
-<dd><code>address</code> - The servername that goes with the <code>metaServer</code>
- Interface.  Used logging.</dd>
+<dd><code>address</code> - The servername that goes with the <code>metaServer</code> interface.
+                Used logging.</dd>
 <dd><code>regionName</code> - The regionname we are interested in.</dd>
 <dt><span class="returnLabel">Returns:</span></dt>
-<dd>True if we were able to verify the region located at other side of
- the Interface.</dd>
-<dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+<dd>True if we were able to verify the region located at other side of the interface.</dd>
 </dl>
 </li>
 </ul>
@@ -708,28 +711,27 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getMetaServerConnection</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.AdminService.BlockingInterface&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html#line.362">getMetaServerConnection</a>(<a href="../../../../../org/apache/hadoop/hbase/client/ClusterConnection.html" title="interface in org.apache.hadoop.hbase.client">ClusterConnection</a>&nbsp;connection,
+<pre>private&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.AdminService.BlockingInterface&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html#line.370">getMetaServerConnection</a>(<a href="../../../../../org/apache/hadoop/hbase/client/ClusterConnection.html" title="interface in org.apache.hadoop.hbase.client">ClusterConnection</a>&nbsp;connection,
                                                                                                                              <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                                                                                                                              long&nbsp;timeout,
                                                                                                                              int&nbsp;replicaId)
                                                                                                                       throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a>,
-                                                                                                                             <a href="../../../../../org/apache/hadoop/hbase/NotAllMetaRegionsOnlineException.html" title="class in org.apache.hadoop.hbase">NotAllMetaRegionsOnlineException</a>,
                                                                                                                              <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
-<div class="block">Gets a connection to the server hosting meta, as reported by ZooKeeper,
- waiting up to the specified timeout for availability.
+<div class="block">Gets a connection to the server hosting meta, as reported by ZooKeeper, waiting up to the
+ specified timeout for availability.
+
  <p>WARNING: Does not retry.  Use an <a href="../../../../../org/apache/hadoop/hbase/client/HTable.html" title="class in org.apache.hadoop.hbase.client"><code>HTable</code></a> instead.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>connection</code> - </dd>
-<dd><code>zkw</code> - </dd>
+<dd><code>connection</code> - the connection to use</dd>
+<dd><code>zkw</code> - reference to the <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper"><code>ZKWatcher</code></a> which also contains configuration and operation</dd>
 <dd><code>timeout</code> - How long to wait on meta location</dd>
-<dd><code>replicaId</code> - </dd>
+<dd><code>replicaId</code> - the ID of the replica</dd>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>connection to server hosting meta</dd>
 <dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="http://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>
-<dd><code><a href="../../../../../org/apache/hadoop/hbase/NotAllMetaRegionsOnlineException.html" title="class in org.apache.hadoop.hbase">NotAllMetaRegionsOnlineException</a></code> - if timed out waiting</dd>
-<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></code> - if waiting for the socket operation fails</dd>
+<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code> - if the number of retries for getting the connection is exceeded</dd>
 </dl>
 </li>
 </ul>
@@ -739,7 +741,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getCachedConnection</h4>
-<pre>private static&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.AdminService.BlockingInterface&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html#line.375">getCachedConnection</a>(<a href="../../../../../org/apache/hadoop/hbase/client/ClusterConnection.html" title="interface in org.apache.hadoop.hbase.client">ClusterConnection</a>&nbsp;connection,
+<pre>private static&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.AdminService.BlockingInterface&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html#line.382">getCachedConnection</a>(<a href="../../../../../org/apache/hadoop/hbase/client/ClusterConnection.html" title="interface in org.apache.hadoop.hbase.client">ClusterConnection</a>&nbsp;connection,
                                                                                                                                 <a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;sn)
                                                                                                                          throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
@@ -747,10 +749,10 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <dd><code>sn</code> - ServerName to get a connection against.</dd>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>The AdminProtocol we got when we connected to <code>sn</code>
- May have come from cache, may not be good, may have been setup by this
- invocation, or may be null.</dd>
+         May have come from cache, may not be good, may have been setup by this invocation, or
+         may be null.</dd>
 <dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code> - if the number of retries for getting the connection is exceeded</dd>
 </dl>
 </li>
 </ul>
@@ -760,7 +762,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>setMetaLocation</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html#line.427">setMetaLocation</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zookeeper,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html#line.433">setMetaLocation</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zookeeper,
                                    <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/master/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master">RegionState.State</a>&nbsp;state)
                             throws org.apache.zookeeper.KeeperException</pre>
@@ -782,21 +784,21 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>setMetaLocation</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html#line.441">setMetaLocation</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zookeeper,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html#line.447">setMetaLocation</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zookeeper,
                                    <a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
                                    int&nbsp;replicaId,
                                    <a href="../../../../../org/apache/hadoop/hbase/master/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master">RegionState.State</a>&nbsp;state)
                             throws org.apache.zookeeper.KeeperException</pre>
-<div class="block">Sets the location of <code>hbase:meta</code> in ZooKeeper to the
- specified server address.</div>
+<div class="block">Sets the location of <code>hbase:meta</code> in ZooKeeper to the specified server address.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>zookeeper</code> - </dd>
-<dd><code>serverName</code> - </dd>
-<dd><code>replicaId</code> - </dd>
-<dd><code>state</code> - </dd>
+<dd><code>zookeeper</code> - reference to the <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper"><code>ZKWatcher</code></a> which also contains configuration and
+                  operation</dd>
+<dd><code>serverName</code> - the name of the server</dd>
+<dd><code>replicaId</code> - the ID of the replica</dd>
+<dd><code>state</code> - the state of the region</dd>
 <dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code>org.apache.zookeeper.KeeperException</code></dd>
+<dd><code>org.apache.zookeeper.KeeperException</code> - if a ZooKeeper operation fails</dd>
 </dl>
 </li>
 </ul>
@@ -806,7 +808,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getMetaRegionState</h4>
-<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/RegionState.html" title="class in org.apache.hadoop.hbase.master">RegionState</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html#line.473">getMetaRegionState</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw)
+<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/RegionState.html" title="class in org.apache.hadoop.hbase.master">RegionState</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html#line.479">getMetaRegionState</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw)
                                       throws org.apache.zookeeper.KeeperException</pre>
 <div class="block">Load the meta region state from the meta server ZNode.</div>
 <dl>
@@ -821,18 +823,18 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getMetaRegionState</h4>
-<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/RegionState.html" title="class in org.apache.hadoop.hbase.master">RegionState</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html#line.484">getMetaRegionState</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
+<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/RegionState.html" title="class in org.apache.hadoop.hbase.master">RegionState</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html#line.491">getMetaRegionState</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                                              int&nbsp;replicaId)
                                       throws org.apache.zookeeper.KeeperException</pre>
 <div class="block">Load the meta region state from the meta server ZNode.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>zkw</code> - </dd>
-<dd><code>replicaId</code> - </dd>
+<dd><code>zkw</code> - reference to the <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper"><code>ZKWatcher</code></a> which also contains configuration and operation</dd>
+<dd><code>replicaId</code> - the ID of the replica</dd>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>regionstate</dd>
 <dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code>org.apache.zookeeper.KeeperException</code></dd>
+<dd><code>org.apache.zookeeper.KeeperException</code> - if a ZooKeeper operation fails</dd>
 </dl>
 </li>
 </ul>
@@ -842,7 +844,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteMetaLocation</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html#line.528">deleteMetaLocation</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zookeeper)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html#line.535">deleteMetaLocation</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zookeeper)
                         throws org.apache.zookeeper.KeeperException</pre>
 <div class="block">Deletes the location of <code>hbase:meta</code> in ZooKeeper.</div>
 <dl>
@@ -859,7 +861,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteMetaLocation</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html#line.533">deleteMetaLocation</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zookeeper,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html#line.540">deleteMetaLocation</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zookeeper,
                                int&nbsp;replicaId)
                         throws org.apache.zookeeper.KeeperException</pre>
 <dl>
@@ -874,21 +876,21 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>blockUntilAvailable</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<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/zookeeper/MetaTableLocator.html#line.556">blockUntilAvailable</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<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/zookeeper/MetaTableLocator.html#line.564">blockUntilAvailable</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                                             long&nbsp;timeout,
                                             org.apache.hadoop.conf.Configuration&nbsp;conf)
                                      throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
-<div class="block">Wait until the primary meta region is available. Get the secondary
- locations as well but don't block for those.</div>
+<div class="block">Wait until the primary meta region is available. Get the secondary locations as well but don't
+ block for those.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>zkw</code> - </dd>
-<dd><code>timeout</code> - </dd>
-<dd><code>conf</code> - </dd>
+<dd><code>zkw</code> - reference to the <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper"><code>ZKWatcher</code></a> which also contains configuration and operation</dd>
+<dd><code>timeout</code> - maximum time to wait in millis</dd>
+<dd><code>conf</code> - the <code>Configuration</code> to use</dd>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>ServerName or null if we timed out.</dd>
 <dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="http://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>
+<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></code> - if waiting for the socket operation fails</dd>
 </dl>
 </li>
 </ul>
@@ -898,7 +900,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>blockUntilAvailable</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/zookeeper/MetaTableLocator.html#line.588">blockUntilAvailable</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
+<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/zookeeper/MetaTableLocator.html#line.599">blockUntilAvailable</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                                       long&nbsp;timeout)
                                throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <div class="block">Wait until the meta region is available and is not in transition.</div>
@@ -909,7 +911,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>ServerName or null if we timed out.</dd>
 <dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="http://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>
+<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></code> - if waiting for the socket operation fails</dd>
 </dl>
 </li>
 </ul>
@@ -919,20 +921,20 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>blockUntilAvailable</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/zookeeper/MetaTableLocator.html#line.602">blockUntilAvailable</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
+<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/zookeeper/MetaTableLocator.html#line.613">blockUntilAvailable</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zkw,
                                       int&nbsp;replicaId,
                                       long&nbsp;timeout)
                                throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <div class="block">Wait until the meta region is available and is not in transition.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>zkw</code> - </dd>
-<dd><code>replicaId</code> - </dd>
-<dd><code>timeout</code> - </dd>
+<dd><code>zkw</code> - reference to the <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper"><code>ZKWatcher</code></a> which also contains configuration and constants</dd>
+<dd><code>replicaId</code> - the ID of the replica</dd>
+<dd><code>timeout</code> - maximum time to wait in millis</dd>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>ServerName or null if we timed out.</dd>
 <dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="http://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>
+<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></code> - if waiting for the socket operation fails</dd>
 </dl>
 </li>
 </ul>
@@ -942,7 +944,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>stop</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html#line.624">stop</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html#line.640">stop</a>()</pre>
 <div class="block">Stop working.
  Interrupts any ongoing waits.</div>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/devapidocs/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html b/devapidocs/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html
index eed23f9..4ce62b3 100644
--- a/devapidocs/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html
+++ b/devapidocs/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html
@@ -263,7 +263,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <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/zookeeper/MiniZooKeeperCluster.html#killOneBackupZooKeeperServer--">killOneBackupZooKeeperServer</a></span>()</code>
-<div class="block">Kill one back up ZK servers</div>
+<div class="block">Kill one back up ZK servers.</div>
 </td>
 </tr>
 <tr id="i10" class="altColor">
@@ -609,14 +609,14 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
                    <a href="http://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="paramLabel">Parameters:</span></dt>
-<dd><code>baseDir</code> - </dd>
-<dd><code>numZooKeeperServers</code> - </dd>
+<dd><code>baseDir</code> - the base directory to use</dd>
+<dd><code>numZooKeeperServers</code> - the number of ZooKeeper servers</dd>
 <dt><span class="returnLabel">Returns:</span></dt>
-<dd>ClientPort server bound to, -1 if there was a
-         binding problem and we couldn't pick another port.</dd>
+<dd>ClientPort server bound to, -1 if there was a binding problem and we couldn't pick
+         another port.</dd>
 <dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
-<dd><code><a href="http://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>
+<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code> - if an operation fails during the startup</dd>
+<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></code> - if the startup fails</dd>
 </dl>
 </li>
 </ul>
@@ -626,7 +626,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>createDir</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#line.282">createDir</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true" title="class or interface in java.io">File</a>&nbsp;dir)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#line.286">createDir</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true" title="class or interface in java.io">File</a>&nbsp;dir)
                 throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -640,11 +640,11 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>shutdown</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#line.295">shutdown</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#line.299">shutdown</a>()
               throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code> - if waiting for the shutdown of a server fails</dd>
 </dl>
 </li>
 </ul>
@@ -654,7 +654,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>killCurrentActiveZooKeeperServer</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#line.329">killCurrentActiveZooKeeperServer</a>()
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#line.333">killCurrentActiveZooKeeperServer</a>()
                                      throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                                             <a href="http://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>
@@ -662,7 +662,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <dd>clientPort return clientPort if there is another ZK backup can run
          when killing the current active; return -1, if there is no backups.</dd>
 <dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code> - if waiting for the shutdown of a server fails</dd>
 <dd><code><a href="http://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>
@@ -673,13 +673,13 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>killOneBackupZooKeeperServer</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#line.370">killOneBackupZooKeeperServer</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#line.373">killOneBackupZooKeeperServer</a>()
                                   throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                                          <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
-<div class="block">Kill one back up ZK servers</div>
+<div class="block">Kill one back up ZK servers.</div>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code> - if waiting for the shutdown of a server fails</dd>
 <dd><code><a href="http://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>
@@ -690,7 +690,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>waitForServerDown</h4>
-<pre>private static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#line.399">waitForServerDown</a>(int&nbsp;port,
+<pre>private static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#line.400">waitForServerDown</a>(int&nbsp;port,
                                          long&nbsp;timeout)
                                   throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
@@ -705,7 +705,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>waitForServerUp</h4>
-<pre>private static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#line.428">waitForServerUp</a>(int&nbsp;port,
+<pre>private static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#line.429">waitForServerUp</a>(int&nbsp;port,
                                        long&nbsp;timeout)
                                 throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
@@ -720,7 +720,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getClientPort</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#line.468">getClientPort</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#line.469">getClientPort</a>()</pre>
 </li>
 </ul>
 <a name="getZooKeeperServers--">
@@ -729,7 +729,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getZooKeeperServers</h4>
-<pre><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.zookeeper.server.ZooKeeperServer&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#line.473">getZooKeeperServers</a>()</pre>
+<pre><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.zookeeper.server.ZooKeeperServer&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#line.474">getZooKeeperServers</a>()</pre>
 </li>
 </ul>
 </li>


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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-annotations/project-info.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/project-info.html b/hbase-annotations/project-info.html
index 961d761..6f32916 100644
--- a/hbase-annotations/project-info.html
+++ b/hbase-annotations/project-info.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Project Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -167,7 +167,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-annotations/project-reports.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/project-reports.html b/hbase-annotations/project-reports.html
index ed10d0a..e737204 100644
--- a/hbase-annotations/project-reports.html
+++ b/hbase-annotations/project-reports.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Generated Reports</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -128,7 +128,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-annotations/project-summary.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/project-summary.html b/hbase-annotations/project-summary.html
index 13e6b08..f3cd08b 100644
--- a/hbase-annotations/project-summary.html
+++ b/hbase-annotations/project-summary.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Project Summary</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -166,7 +166,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-annotations/source-repository.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/source-repository.html b/hbase-annotations/source-repository.html
index 6cab0d5..51123fc 100644
--- a/hbase-annotations/source-repository.html
+++ b/hbase-annotations/source-repository.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Source Code Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -134,7 +134,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-annotations/team-list.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/team-list.html b/hbase-annotations/team-list.html
index 7258f76..54bb10e 100644
--- a/hbase-annotations/team-list.html
+++ b/hbase-annotations/team-list.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Project Team</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -547,7 +547,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/dependencies.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/dependencies.html b/hbase-build-configuration/dependencies.html
index e3ae39e..5490d27 100644
--- a/hbase-build-configuration/dependencies.html
+++ b/hbase-build-configuration/dependencies.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; Project Dependencies</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -330,7 +330,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/dependency-convergence.html b/hbase-build-configuration/dependency-convergence.html
index 61f5346..b7b85b6 100644
--- a/hbase-build-configuration/dependency-convergence.html
+++ b/hbase-build-configuration/dependency-convergence.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; Reactor Dependency Convergence</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -829,7 +829,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/dependency-info.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/dependency-info.html b/hbase-build-configuration/dependency-info.html
index eb35f3d..943af4d 100644
--- a/hbase-build-configuration/dependency-info.html
+++ b/hbase-build-configuration/dependency-info.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; Dependency Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -148,7 +148,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/dependency-management.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/dependency-management.html b/hbase-build-configuration/dependency-management.html
index 5344083..3fc80e6 100644
--- a/hbase-build-configuration/dependency-management.html
+++ b/hbase-build-configuration/dependency-management.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; Project Dependency Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -810,7 +810,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-archetypes/dependencies.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/dependencies.html b/hbase-build-configuration/hbase-archetypes/dependencies.html
index 221bd13..0eacf55 100644
--- a/hbase-build-configuration/hbase-archetypes/dependencies.html
+++ b/hbase-build-configuration/hbase-archetypes/dependencies.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; Project Dependencies</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -330,7 +330,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-archetypes/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/dependency-convergence.html b/hbase-build-configuration/hbase-archetypes/dependency-convergence.html
index 098bcf1..c44c172 100644
--- a/hbase-build-configuration/hbase-archetypes/dependency-convergence.html
+++ b/hbase-build-configuration/hbase-archetypes/dependency-convergence.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; Reactor Dependency Convergence</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -829,7 +829,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-archetypes/dependency-info.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/dependency-info.html b/hbase-build-configuration/hbase-archetypes/dependency-info.html
index e647588..332114f 100644
--- a/hbase-build-configuration/hbase-archetypes/dependency-info.html
+++ b/hbase-build-configuration/hbase-archetypes/dependency-info.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; Dependency Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -148,7 +148,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-archetypes/dependency-management.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/dependency-management.html b/hbase-build-configuration/hbase-archetypes/dependency-management.html
index 6404a88..f21cfd6 100644
--- a/hbase-build-configuration/hbase-archetypes/dependency-management.html
+++ b/hbase-build-configuration/hbase-archetypes/dependency-management.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; Project Dependency Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -810,7 +810,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependencies.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependencies.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependencies.html
index c85362b..da959b2 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependencies.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependencies.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; Project Dependencies</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -330,7 +330,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependency-convergence.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependency-convergence.html
index 51ae02c..7202be3 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependency-convergence.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependency-convergence.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; Reactor Dependency Convergence</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -829,7 +829,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependency-info.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependency-info.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependency-info.html
index ef17f13..e60ceb3 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependency-info.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependency-info.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; Dependency Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -148,7 +148,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependency-management.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependency-management.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependency-management.html
index 2d8cd11..48d7ed8 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependency-management.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependency-management.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; Project Dependency Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -810,7 +810,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/index.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/index.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/index.html
index 6c65523..4f894dc 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/index.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/index.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; About</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -119,7 +119,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/integration.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/integration.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/integration.html
index 83e8e4d..8b4602c 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/integration.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/integration.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; CI Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -126,7 +126,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/issue-tracking.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/issue-tracking.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/issue-tracking.html
index 5e0958a..2167315 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/issue-tracking.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/issue-tracking.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; Issue Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -123,7 +123,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/license.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/license.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/license.html
index 130b3d8..b408f78 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/license.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/license.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; Project Licenses</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -326,7 +326,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/mail-lists.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/mail-lists.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/mail-lists.html
index 5527b28..8ccbe2e 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/mail-lists.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/mail-lists.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; Project Mailing Lists</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -176,7 +176,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/plugin-management.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/plugin-management.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/plugin-management.html
index cd11c51..e56da00 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/plugin-management.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/plugin-management.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; Project Plugin Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -271,7 +271,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/plugins.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/plugins.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/plugins.html
index f22ba7d..202b8c3 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/plugins.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/plugins.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; Project Plugins</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -218,7 +218,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/project-info.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/project-info.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/project-info.html
index 2470f8d..e8e368b 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/project-info.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/project-info.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; Project Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -167,7 +167,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/project-summary.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/project-summary.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/project-summary.html
index 941a80b..61fde18 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/project-summary.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/project-summary.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; Project Summary</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -163,7 +163,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/source-repository.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/source-repository.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/source-repository.html
index 9ecc781..d003db3 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/source-repository.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/source-repository.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; Source Code Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -134,7 +134,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/team-list.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/team-list.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/team-list.html
index 774454a..c0aa4b2 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/team-list.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/team-list.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; Project Team</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -547,7 +547,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-archetypes/hbase-client-project/checkstyle.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/checkstyle.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/checkstyle.html
index 96f9a4b..7362921 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/checkstyle.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/checkstyle.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Checkstyle Results</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -244,7 +244,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependencies.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependencies.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependencies.html
index 3a45b4a..d604328 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependencies.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependencies.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Project Dependencies</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -4169,7 +4169,7 @@ The following provides more details on the included cryptographic software:
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependency-convergence.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependency-convergence.html
index 0d6e335..df02789 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependency-convergence.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependency-convergence.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Reactor Dependency Convergence</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -829,7 +829,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependency-info.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependency-info.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependency-info.html
index cf05e36..7453e19 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependency-info.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependency-info.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Dependency Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -147,7 +147,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependency-management.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependency-management.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependency-management.html
index f4e4b72..3813361 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependency-management.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependency-management.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Project Dependency Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -810,7 +810,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-archetypes/hbase-client-project/index.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/index.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/index.html
index 1672093..928ea8a 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/index.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/index.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; About</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -119,7 +119,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-archetypes/hbase-client-project/integration.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/integration.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/integration.html
index d2d435e..b7d96a8 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/integration.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/integration.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; CI Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -126,7 +126,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-archetypes/hbase-client-project/issue-tracking.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/issue-tracking.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/issue-tracking.html
index 1c20bad..79ba882 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/issue-tracking.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/issue-tracking.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Issue Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -123,7 +123,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-archetypes/hbase-client-project/license.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/license.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/license.html
index 1f36184..e74e75e 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/license.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/license.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Project Licenses</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -326,7 +326,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-archetypes/hbase-client-project/mail-lists.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/mail-lists.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/mail-lists.html
index 74d75ec..1ed4d7a 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/mail-lists.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/mail-lists.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Project Mailing Lists</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -176,7 +176,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-archetypes/hbase-client-project/plugin-management.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/plugin-management.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/plugin-management.html
index c3b42ed..ec02c6d 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/plugin-management.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/plugin-management.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Project Plugin Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -271,7 +271,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-archetypes/hbase-client-project/plugins.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/plugins.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/plugins.html
index f551617..e4940e6 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/plugins.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/plugins.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Project Plugins</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -226,7 +226,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-archetypes/hbase-client-project/project-info.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/project-info.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/project-info.html
index 98162a4..7719272 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/project-info.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/project-info.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Project Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -167,7 +167,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-archetypes/hbase-client-project/project-reports.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/project-reports.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/project-reports.html
index 8a0ceab..91b6f11 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/project-reports.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/project-reports.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Generated Reports</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -128,7 +128,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-archetypes/hbase-client-project/project-summary.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/project-summary.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/project-summary.html
index ea8c9c7..57c2e20 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/project-summary.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/project-summary.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Project Summary</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -166,7 +166,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-archetypes/hbase-client-project/source-repository.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/source-repository.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/source-repository.html
index d4d2e2d..a1b28b0 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/source-repository.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/source-repository.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Source Code Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -134,7 +134,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-archetypes/hbase-client-project/team-list.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/team-list.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/team-list.html
index ce25e85..806217c 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/team-list.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/team-list.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Project Team</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -547,7 +547,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/checkstyle.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/checkstyle.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/checkstyle.html
index 767aaec..15e050c 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/checkstyle.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/checkstyle.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Checkstyle Results</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -244,7 +244,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependencies.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependencies.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependencies.html
index c926b32..d8e3ad7 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependencies.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependencies.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Project Dependencies</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -4194,7 +4194,7 @@ built on Jackson JSON processor</p>
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependency-convergence.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependency-convergence.html
index cf38d11..b319565 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependency-convergence.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependency-convergence.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Reactor Dependency Convergence</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -829,7 +829,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependency-info.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependency-info.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependency-info.html
index 53782ed..cf76acd 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependency-info.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependency-info.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Dependency Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -147,7 +147,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependency-management.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependency-management.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependency-management.html
index c513713..921a375 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependency-management.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependency-management.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Project Dependency Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -810,7 +810,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/index.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/index.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/index.html
index 18050a6..12b67ea 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/index.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/index.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; About</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -119,7 +119,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/integration.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/integration.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/integration.html
index 0711ca3..be9de6d 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/integration.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/integration.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; CI Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -126,7 +126,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/issue-tracking.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/issue-tracking.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/issue-tracking.html
index 411a837..3e7cfde 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/issue-tracking.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/issue-tracking.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Issue Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -123,7 +123,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/license.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/license.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/license.html
index f908ef2..a935e7e 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/license.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/license.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Project Licenses</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -326,7 +326,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/mail-lists.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/mail-lists.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/mail-lists.html
index c7bb002..ec6eba5 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/mail-lists.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/mail-lists.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Project Mailing Lists</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -176,7 +176,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/plugin-management.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/plugin-management.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/plugin-management.html
index 51f44f5..4fca91a 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/plugin-management.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/plugin-management.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Project Plugin Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -271,7 +271,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/plugins.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/plugins.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/plugins.html
index 894d294..2493313 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/plugins.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/plugins.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Project Plugins</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -226,7 +226,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/project-info.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/project-info.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/project-info.html
index 219dd72..fe16d5d 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/project-info.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/project-info.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Project Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -167,7 +167,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/project-reports.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/project-reports.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/project-reports.html
index 04d13b7..9bc200f 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/project-reports.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/project-reports.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Generated Reports</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -128,7 +128,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/project-summary.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/project-summary.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/project-summary.html
index ac0892c..ba8b641 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/project-summary.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/project-summary.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171216" />
+    <meta name="Date-Revision-yyyymmdd" content="20171217" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Project Summary</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -166,7 +166,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-17</li>
             </p>
                 </div>
 


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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/MapReduceTests.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/MapReduceTests.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/MapReduceTests.html
index e889489..410ed88 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/MapReduceTests.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/MapReduceTests.html
@@ -7,43 +7,43 @@
 <body>
 <div class="sourceContainer">
 <pre><span class="sourceLineNo">001</span>/*<a name="line.1"></a>
-<span class="sourceLineNo">002</span> *<a name="line.2"></a>
-<span class="sourceLineNo">003</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.3"></a>
-<span class="sourceLineNo">004</span> * or more contributor license agreements.  See the NOTICE file<a name="line.4"></a>
-<span class="sourceLineNo">005</span> * distributed with this work for additional information<a name="line.5"></a>
-<span class="sourceLineNo">006</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.6"></a>
-<span class="sourceLineNo">007</span> * to you under the Apache License, Version 2.0 (the<a name="line.7"></a>
-<span class="sourceLineNo">008</span> * "License"); you may not use this file except in compliance<a name="line.8"></a>
-<span class="sourceLineNo">009</span> * with the License.  You may obtain a copy of the License at<a name="line.9"></a>
-<span class="sourceLineNo">010</span> *<a name="line.10"></a>
-<span class="sourceLineNo">011</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.11"></a>
-<span class="sourceLineNo">012</span> *<a name="line.12"></a>
-<span class="sourceLineNo">013</span> * Unless required by applicable law or agreed to in writing, software<a name="line.13"></a>
-<span class="sourceLineNo">014</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.14"></a>
-<span class="sourceLineNo">015</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.15"></a>
-<span class="sourceLineNo">016</span> * See the License for the specific language governing permissions and<a name="line.16"></a>
-<span class="sourceLineNo">017</span> * limitations under the License.<a name="line.17"></a>
-<span class="sourceLineNo">018</span> */<a name="line.18"></a>
-<span class="sourceLineNo">019</span><a name="line.19"></a>
-<span class="sourceLineNo">020</span>/**<a name="line.20"></a>
-<span class="sourceLineNo">021</span> * Tag a test as related to mapred or mapreduce,<a name="line.21"></a>
-<span class="sourceLineNo">022</span> * @see org.apache.hadoop.hbase.testclassification.ClientTests<a name="line.22"></a>
-<span class="sourceLineNo">023</span> * @see org.apache.hadoop.hbase.testclassification.CoprocessorTests<a name="line.23"></a>
-<span class="sourceLineNo">024</span> * @see org.apache.hadoop.hbase.testclassification.FilterTests<a name="line.24"></a>
-<span class="sourceLineNo">025</span> * @see org.apache.hadoop.hbase.testclassification.FlakeyTests<a name="line.25"></a>
-<span class="sourceLineNo">026</span> * @see org.apache.hadoop.hbase.testclassification.IOTests<a name="line.26"></a>
-<span class="sourceLineNo">027</span> * @see org.apache.hadoop.hbase.testclassification.MapReduceTests<a name="line.27"></a>
-<span class="sourceLineNo">028</span> * @see org.apache.hadoop.hbase.testclassification.MasterTests<a name="line.28"></a>
-<span class="sourceLineNo">029</span> * @see org.apache.hadoop.hbase.testclassification.MiscTests<a name="line.29"></a>
-<span class="sourceLineNo">030</span> * @see org.apache.hadoop.hbase.testclassification.RegionServerTests<a name="line.30"></a>
-<span class="sourceLineNo">031</span> * @see org.apache.hadoop.hbase.testclassification.ReplicationTests<a name="line.31"></a>
-<span class="sourceLineNo">032</span> * @see org.apache.hadoop.hbase.testclassification.RPCTests<a name="line.32"></a>
-<span class="sourceLineNo">033</span> * @see org.apache.hadoop.hbase.testclassification.SecurityTests<a name="line.33"></a>
-<span class="sourceLineNo">034</span> * @see org.apache.hadoop.hbase.testclassification.VerySlowRegionServerTests<a name="line.34"></a>
-<span class="sourceLineNo">035</span> * @see org.apache.hadoop.hbase.testclassification.VerySlowMapReduceTests<a name="line.35"></a>
-<span class="sourceLineNo">036</span> */<a name="line.36"></a>
-<span class="sourceLineNo">037</span>package org.apache.hadoop.hbase.testclassification;<a name="line.37"></a>
-<span class="sourceLineNo">038</span><a name="line.38"></a>
+<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
+<span class="sourceLineNo">003</span> * or more contributor license agreements.  See the NOTICE file<a name="line.3"></a>
+<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
+<span class="sourceLineNo">005</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.5"></a>
+<span class="sourceLineNo">006</span> * to you under the Apache License, Version 2.0 (the<a name="line.6"></a>
+<span class="sourceLineNo">007</span> * "License"); you may not use this file except in compliance<a name="line.7"></a>
+<span class="sourceLineNo">008</span> * with the License.  You may obtain a copy of the License at<a name="line.8"></a>
+<span class="sourceLineNo">009</span> *<a name="line.9"></a>
+<span class="sourceLineNo">010</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.10"></a>
+<span class="sourceLineNo">011</span> *<a name="line.11"></a>
+<span class="sourceLineNo">012</span> * Unless required by applicable law or agreed to in writing, software<a name="line.12"></a>
+<span class="sourceLineNo">013</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.13"></a>
+<span class="sourceLineNo">014</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.14"></a>
+<span class="sourceLineNo">015</span> * See the License for the specific language governing permissions and<a name="line.15"></a>
+<span class="sourceLineNo">016</span> * limitations under the License.<a name="line.16"></a>
+<span class="sourceLineNo">017</span> */<a name="line.17"></a>
+<span class="sourceLineNo">018</span><a name="line.18"></a>
+<span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.testclassification;<a name="line.19"></a>
+<span class="sourceLineNo">020</span><a name="line.20"></a>
+<span class="sourceLineNo">021</span>/**<a name="line.21"></a>
+<span class="sourceLineNo">022</span> * Tag a test as related to mapred or mapreduce.<a name="line.22"></a>
+<span class="sourceLineNo">023</span> *<a name="line.23"></a>
+<span class="sourceLineNo">024</span> * @see org.apache.hadoop.hbase.testclassification.ClientTests<a name="line.24"></a>
+<span class="sourceLineNo">025</span> * @see org.apache.hadoop.hbase.testclassification.CoprocessorTests<a name="line.25"></a>
+<span class="sourceLineNo">026</span> * @see org.apache.hadoop.hbase.testclassification.FilterTests<a name="line.26"></a>
+<span class="sourceLineNo">027</span> * @see org.apache.hadoop.hbase.testclassification.FlakeyTests<a name="line.27"></a>
+<span class="sourceLineNo">028</span> * @see org.apache.hadoop.hbase.testclassification.IOTests<a name="line.28"></a>
+<span class="sourceLineNo">029</span> * @see org.apache.hadoop.hbase.testclassification.MapReduceTests<a name="line.29"></a>
+<span class="sourceLineNo">030</span> * @see org.apache.hadoop.hbase.testclassification.MasterTests<a name="line.30"></a>
+<span class="sourceLineNo">031</span> * @see org.apache.hadoop.hbase.testclassification.MiscTests<a name="line.31"></a>
+<span class="sourceLineNo">032</span> * @see org.apache.hadoop.hbase.testclassification.RegionServerTests<a name="line.32"></a>
+<span class="sourceLineNo">033</span> * @see org.apache.hadoop.hbase.testclassification.ReplicationTests<a name="line.33"></a>
+<span class="sourceLineNo">034</span> * @see org.apache.hadoop.hbase.testclassification.RPCTests<a name="line.34"></a>
+<span class="sourceLineNo">035</span> * @see org.apache.hadoop.hbase.testclassification.SecurityTests<a name="line.35"></a>
+<span class="sourceLineNo">036</span> * @see org.apache.hadoop.hbase.testclassification.VerySlowRegionServerTests<a name="line.36"></a>
+<span class="sourceLineNo">037</span> * @see org.apache.hadoop.hbase.testclassification.VerySlowMapReduceTests<a name="line.37"></a>
+<span class="sourceLineNo">038</span> */<a name="line.38"></a>
 <span class="sourceLineNo">039</span>public interface MapReduceTests {<a name="line.39"></a>
 <span class="sourceLineNo">040</span>}<a name="line.40"></a>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/MasterTests.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/MasterTests.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/MasterTests.html
index 889cf57..c86afab 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/MasterTests.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/MasterTests.html
@@ -7,43 +7,43 @@
 <body>
 <div class="sourceContainer">
 <pre><span class="sourceLineNo">001</span>/*<a name="line.1"></a>
-<span class="sourceLineNo">002</span> *<a name="line.2"></a>
-<span class="sourceLineNo">003</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.3"></a>
-<span class="sourceLineNo">004</span> * or more contributor license agreements.  See the NOTICE file<a name="line.4"></a>
-<span class="sourceLineNo">005</span> * distributed with this work for additional information<a name="line.5"></a>
-<span class="sourceLineNo">006</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.6"></a>
-<span class="sourceLineNo">007</span> * to you under the Apache License, Version 2.0 (the<a name="line.7"></a>
-<span class="sourceLineNo">008</span> * "License"); you may not use this file except in compliance<a name="line.8"></a>
-<span class="sourceLineNo">009</span> * with the License.  You may obtain a copy of the License at<a name="line.9"></a>
-<span class="sourceLineNo">010</span> *<a name="line.10"></a>
-<span class="sourceLineNo">011</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.11"></a>
-<span class="sourceLineNo">012</span> *<a name="line.12"></a>
-<span class="sourceLineNo">013</span> * Unless required by applicable law or agreed to in writing, software<a name="line.13"></a>
-<span class="sourceLineNo">014</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.14"></a>
-<span class="sourceLineNo">015</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.15"></a>
-<span class="sourceLineNo">016</span> * See the License for the specific language governing permissions and<a name="line.16"></a>
-<span class="sourceLineNo">017</span> * limitations under the License.<a name="line.17"></a>
-<span class="sourceLineNo">018</span> */<a name="line.18"></a>
-<span class="sourceLineNo">019</span><a name="line.19"></a>
-<span class="sourceLineNo">020</span>/**<a name="line.20"></a>
-<span class="sourceLineNo">021</span> * Tag a test as related to the master.<a name="line.21"></a>
-<span class="sourceLineNo">022</span> * @see org.apache.hadoop.hbase.testclassification.ClientTests<a name="line.22"></a>
-<span class="sourceLineNo">023</span> * @see org.apache.hadoop.hbase.testclassification.CoprocessorTests<a name="line.23"></a>
-<span class="sourceLineNo">024</span> * @see org.apache.hadoop.hbase.testclassification.FilterTests<a name="line.24"></a>
-<span class="sourceLineNo">025</span> * @see org.apache.hadoop.hbase.testclassification.FlakeyTests<a name="line.25"></a>
-<span class="sourceLineNo">026</span> * @see org.apache.hadoop.hbase.testclassification.IOTests<a name="line.26"></a>
-<span class="sourceLineNo">027</span> * @see org.apache.hadoop.hbase.testclassification.MapReduceTests<a name="line.27"></a>
-<span class="sourceLineNo">028</span> * @see org.apache.hadoop.hbase.testclassification.MasterTests<a name="line.28"></a>
-<span class="sourceLineNo">029</span> * @see org.apache.hadoop.hbase.testclassification.MiscTests<a name="line.29"></a>
-<span class="sourceLineNo">030</span> * @see org.apache.hadoop.hbase.testclassification.RegionServerTests<a name="line.30"></a>
-<span class="sourceLineNo">031</span> * @see org.apache.hadoop.hbase.testclassification.ReplicationTests<a name="line.31"></a>
-<span class="sourceLineNo">032</span> * @see org.apache.hadoop.hbase.testclassification.RPCTests<a name="line.32"></a>
-<span class="sourceLineNo">033</span> * @see org.apache.hadoop.hbase.testclassification.SecurityTests<a name="line.33"></a>
-<span class="sourceLineNo">034</span> * @see org.apache.hadoop.hbase.testclassification.VerySlowRegionServerTests<a name="line.34"></a>
-<span class="sourceLineNo">035</span> * @see org.apache.hadoop.hbase.testclassification.VerySlowMapReduceTests<a name="line.35"></a>
-<span class="sourceLineNo">036</span> */<a name="line.36"></a>
-<span class="sourceLineNo">037</span>package org.apache.hadoop.hbase.testclassification;<a name="line.37"></a>
-<span class="sourceLineNo">038</span><a name="line.38"></a>
+<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
+<span class="sourceLineNo">003</span> * or more contributor license agreements.  See the NOTICE file<a name="line.3"></a>
+<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
+<span class="sourceLineNo">005</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.5"></a>
+<span class="sourceLineNo">006</span> * to you under the Apache License, Version 2.0 (the<a name="line.6"></a>
+<span class="sourceLineNo">007</span> * "License"); you may not use this file except in compliance<a name="line.7"></a>
+<span class="sourceLineNo">008</span> * with the License.  You may obtain a copy of the License at<a name="line.8"></a>
+<span class="sourceLineNo">009</span> *<a name="line.9"></a>
+<span class="sourceLineNo">010</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.10"></a>
+<span class="sourceLineNo">011</span> *<a name="line.11"></a>
+<span class="sourceLineNo">012</span> * Unless required by applicable law or agreed to in writing, software<a name="line.12"></a>
+<span class="sourceLineNo">013</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.13"></a>
+<span class="sourceLineNo">014</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.14"></a>
+<span class="sourceLineNo">015</span> * See the License for the specific language governing permissions and<a name="line.15"></a>
+<span class="sourceLineNo">016</span> * limitations under the License.<a name="line.16"></a>
+<span class="sourceLineNo">017</span> */<a name="line.17"></a>
+<span class="sourceLineNo">018</span><a name="line.18"></a>
+<span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.testclassification;<a name="line.19"></a>
+<span class="sourceLineNo">020</span><a name="line.20"></a>
+<span class="sourceLineNo">021</span>/**<a name="line.21"></a>
+<span class="sourceLineNo">022</span> * Tag a test as related to the master.<a name="line.22"></a>
+<span class="sourceLineNo">023</span> *<a name="line.23"></a>
+<span class="sourceLineNo">024</span> * @see org.apache.hadoop.hbase.testclassification.ClientTests<a name="line.24"></a>
+<span class="sourceLineNo">025</span> * @see org.apache.hadoop.hbase.testclassification.CoprocessorTests<a name="line.25"></a>
+<span class="sourceLineNo">026</span> * @see org.apache.hadoop.hbase.testclassification.FilterTests<a name="line.26"></a>
+<span class="sourceLineNo">027</span> * @see org.apache.hadoop.hbase.testclassification.FlakeyTests<a name="line.27"></a>
+<span class="sourceLineNo">028</span> * @see org.apache.hadoop.hbase.testclassification.IOTests<a name="line.28"></a>
+<span class="sourceLineNo">029</span> * @see org.apache.hadoop.hbase.testclassification.MapReduceTests<a name="line.29"></a>
+<span class="sourceLineNo">030</span> * @see org.apache.hadoop.hbase.testclassification.MasterTests<a name="line.30"></a>
+<span class="sourceLineNo">031</span> * @see org.apache.hadoop.hbase.testclassification.MiscTests<a name="line.31"></a>
+<span class="sourceLineNo">032</span> * @see org.apache.hadoop.hbase.testclassification.RegionServerTests<a name="line.32"></a>
+<span class="sourceLineNo">033</span> * @see org.apache.hadoop.hbase.testclassification.ReplicationTests<a name="line.33"></a>
+<span class="sourceLineNo">034</span> * @see org.apache.hadoop.hbase.testclassification.RPCTests<a name="line.34"></a>
+<span class="sourceLineNo">035</span> * @see org.apache.hadoop.hbase.testclassification.SecurityTests<a name="line.35"></a>
+<span class="sourceLineNo">036</span> * @see org.apache.hadoop.hbase.testclassification.VerySlowRegionServerTests<a name="line.36"></a>
+<span class="sourceLineNo">037</span> * @see org.apache.hadoop.hbase.testclassification.VerySlowMapReduceTests<a name="line.37"></a>
+<span class="sourceLineNo">038</span> */<a name="line.38"></a>
 <span class="sourceLineNo">039</span>public interface MasterTests {<a name="line.39"></a>
 <span class="sourceLineNo">040</span>}<a name="line.40"></a>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/MediumTests.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/MediumTests.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/MediumTests.html
index d091698..6cef99c 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/MediumTests.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/MediumTests.html
@@ -7,42 +7,43 @@
 <body>
 <div class="sourceContainer">
 <pre><span class="sourceLineNo">001</span>/*<a name="line.1"></a>
-<span class="sourceLineNo">002</span> *<a name="line.2"></a>
-<span class="sourceLineNo">003</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.3"></a>
-<span class="sourceLineNo">004</span> * or more contributor license agreements.  See the NOTICE file<a name="line.4"></a>
-<span class="sourceLineNo">005</span> * distributed with this work for additional information<a name="line.5"></a>
-<span class="sourceLineNo">006</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.6"></a>
-<span class="sourceLineNo">007</span> * to you under the Apache License, Version 2.0 (the<a name="line.7"></a>
-<span class="sourceLineNo">008</span> * "License"); you may not use this file except in compliance<a name="line.8"></a>
-<span class="sourceLineNo">009</span> * with the License.  You may obtain a copy of the License at<a name="line.9"></a>
-<span class="sourceLineNo">010</span> *<a name="line.10"></a>
-<span class="sourceLineNo">011</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.11"></a>
-<span class="sourceLineNo">012</span> *<a name="line.12"></a>
-<span class="sourceLineNo">013</span> * Unless required by applicable law or agreed to in writing, software<a name="line.13"></a>
-<span class="sourceLineNo">014</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.14"></a>
-<span class="sourceLineNo">015</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.15"></a>
-<span class="sourceLineNo">016</span> * See the License for the specific language governing permissions and<a name="line.16"></a>
-<span class="sourceLineNo">017</span> * limitations under the License.<a name="line.17"></a>
-<span class="sourceLineNo">018</span> */<a name="line.18"></a>
-<span class="sourceLineNo">019</span><a name="line.19"></a>
-<span class="sourceLineNo">020</span>package org.apache.hadoop.hbase.testclassification;<a name="line.20"></a>
-<span class="sourceLineNo">021</span><a name="line.21"></a>
-<span class="sourceLineNo">022</span>/**<a name="line.22"></a>
-<span class="sourceLineNo">023</span> * Tag a test as 'Medium', meaning that the test class has the following<a name="line.23"></a>
-<span class="sourceLineNo">024</span> * characteristics:<a name="line.24"></a>
-<span class="sourceLineNo">025</span> *  - executed in an isolated JVM. Tests can however be executed in different<a name="line.25"></a>
-<span class="sourceLineNo">026</span> *    JVM on the same machine simultaneously.<a name="line.26"></a>
-<span class="sourceLineNo">027</span> *  - will have to be executed by the developer before submitting a bug<a name="line.27"></a>
-<span class="sourceLineNo">028</span> *  - ideally, last less than 1 minutes to help parallelization<a name="line.28"></a>
-<span class="sourceLineNo">029</span> *<a name="line.29"></a>
-<span class="sourceLineNo">030</span> *  Use it for tests that cannot be tagged as 'Small'.<a name="line.30"></a>
-<span class="sourceLineNo">031</span> *<a name="line.31"></a>
-<span class="sourceLineNo">032</span> * @see SmallTests<a name="line.32"></a>
-<span class="sourceLineNo">033</span> * @see LargeTests<a name="line.33"></a>
-<span class="sourceLineNo">034</span> * @see IntegrationTests<a name="line.34"></a>
-<span class="sourceLineNo">035</span> */<a name="line.35"></a>
-<span class="sourceLineNo">036</span>public interface MediumTests {<a name="line.36"></a>
-<span class="sourceLineNo">037</span>}<a name="line.37"></a>
+<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
+<span class="sourceLineNo">003</span> * or more contributor license agreements.  See the NOTICE file<a name="line.3"></a>
+<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
+<span class="sourceLineNo">005</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.5"></a>
+<span class="sourceLineNo">006</span> * to you under the Apache License, Version 2.0 (the<a name="line.6"></a>
+<span class="sourceLineNo">007</span> * "License"); you may not use this file except in compliance<a name="line.7"></a>
+<span class="sourceLineNo">008</span> * with the License.  You may obtain a copy of the License at<a name="line.8"></a>
+<span class="sourceLineNo">009</span> *<a name="line.9"></a>
+<span class="sourceLineNo">010</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.10"></a>
+<span class="sourceLineNo">011</span> *<a name="line.11"></a>
+<span class="sourceLineNo">012</span> * Unless required by applicable law or agreed to in writing, software<a name="line.12"></a>
+<span class="sourceLineNo">013</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.13"></a>
+<span class="sourceLineNo">014</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.14"></a>
+<span class="sourceLineNo">015</span> * See the License for the specific language governing permissions and<a name="line.15"></a>
+<span class="sourceLineNo">016</span> * limitations under the License.<a name="line.16"></a>
+<span class="sourceLineNo">017</span> */<a name="line.17"></a>
+<span class="sourceLineNo">018</span><a name="line.18"></a>
+<span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.testclassification;<a name="line.19"></a>
+<span class="sourceLineNo">020</span><a name="line.20"></a>
+<span class="sourceLineNo">021</span>/**<a name="line.21"></a>
+<span class="sourceLineNo">022</span> * Tag a test as 'Medium', meaning that the test class has the following<a name="line.22"></a>
+<span class="sourceLineNo">023</span> * characteristics:<a name="line.23"></a>
+<span class="sourceLineNo">024</span> * &lt;ul&gt;<a name="line.24"></a>
+<span class="sourceLineNo">025</span> *  &lt;li&gt;executed in an isolated JVM. Tests can however be executed in different JVM on the same<a name="line.25"></a>
+<span class="sourceLineNo">026</span> *  machine simultaneously.&lt;/li&gt;<a name="line.26"></a>
+<span class="sourceLineNo">027</span> *  &lt;li&gt;will have to be executed by the developer before submitting a bug&lt;/li&gt;<a name="line.27"></a>
+<span class="sourceLineNo">028</span> *  &lt;li&gt;ideally, last less than 1 minutes to help parallelization&lt;/li&gt;<a name="line.28"></a>
+<span class="sourceLineNo">029</span> * &lt;/ul&gt;<a name="line.29"></a>
+<span class="sourceLineNo">030</span> *<a name="line.30"></a>
+<span class="sourceLineNo">031</span> *  Use it for tests that cannot be tagged as 'Small'.<a name="line.31"></a>
+<span class="sourceLineNo">032</span> *<a name="line.32"></a>
+<span class="sourceLineNo">033</span> * @see SmallTests<a name="line.33"></a>
+<span class="sourceLineNo">034</span> * @see LargeTests<a name="line.34"></a>
+<span class="sourceLineNo">035</span> * @see IntegrationTests<a name="line.35"></a>
+<span class="sourceLineNo">036</span> */<a name="line.36"></a>
+<span class="sourceLineNo">037</span>public interface MediumTests {<a name="line.37"></a>
+<span class="sourceLineNo">038</span>}<a name="line.38"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/MetricsTests.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/MetricsTests.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/MetricsTests.html
index c9baf8e..2474a6b 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/MetricsTests.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/MetricsTests.html
@@ -24,11 +24,11 @@
 <span class="sourceLineNo">016</span> * limitations under the License.<a name="line.16"></a>
 <span class="sourceLineNo">017</span> */<a name="line.17"></a>
 <span class="sourceLineNo">018</span><a name="line.18"></a>
-<span class="sourceLineNo">019</span>/**<a name="line.19"></a>
-<span class="sourceLineNo">020</span> * Tag a test that covers our metrics handling<a name="line.20"></a>
-<span class="sourceLineNo">021</span> */<a name="line.21"></a>
-<span class="sourceLineNo">022</span>package org.apache.hadoop.hbase.testclassification;<a name="line.22"></a>
-<span class="sourceLineNo">023</span><a name="line.23"></a>
+<span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.testclassification;<a name="line.19"></a>
+<span class="sourceLineNo">020</span><a name="line.20"></a>
+<span class="sourceLineNo">021</span>/**<a name="line.21"></a>
+<span class="sourceLineNo">022</span> * Tag a test that covers our metrics handling.<a name="line.22"></a>
+<span class="sourceLineNo">023</span> */<a name="line.23"></a>
 <span class="sourceLineNo">024</span>public interface MetricsTests {<a name="line.24"></a>
 <span class="sourceLineNo">025</span>}<a name="line.25"></a>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/MiscTests.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/MiscTests.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/MiscTests.html
index 6846acb..ffecb40 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/MiscTests.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/MiscTests.html
@@ -7,43 +7,43 @@
 <body>
 <div class="sourceContainer">
 <pre><span class="sourceLineNo">001</span>/*<a name="line.1"></a>
-<span class="sourceLineNo">002</span> *<a name="line.2"></a>
-<span class="sourceLineNo">003</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.3"></a>
-<span class="sourceLineNo">004</span> * or more contributor license agreements.  See the NOTICE file<a name="line.4"></a>
-<span class="sourceLineNo">005</span> * distributed with this work for additional information<a name="line.5"></a>
-<span class="sourceLineNo">006</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.6"></a>
-<span class="sourceLineNo">007</span> * to you under the Apache License, Version 2.0 (the<a name="line.7"></a>
-<span class="sourceLineNo">008</span> * "License"); you may not use this file except in compliance<a name="line.8"></a>
-<span class="sourceLineNo">009</span> * with the License.  You may obtain a copy of the License at<a name="line.9"></a>
-<span class="sourceLineNo">010</span> *<a name="line.10"></a>
-<span class="sourceLineNo">011</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.11"></a>
-<span class="sourceLineNo">012</span> *<a name="line.12"></a>
-<span class="sourceLineNo">013</span> * Unless required by applicable law or agreed to in writing, software<a name="line.13"></a>
-<span class="sourceLineNo">014</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.14"></a>
-<span class="sourceLineNo">015</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.15"></a>
-<span class="sourceLineNo">016</span> * See the License for the specific language governing permissions and<a name="line.16"></a>
-<span class="sourceLineNo">017</span> * limitations under the License.<a name="line.17"></a>
-<span class="sourceLineNo">018</span> */<a name="line.18"></a>
-<span class="sourceLineNo">019</span><a name="line.19"></a>
-<span class="sourceLineNo">020</span>/**<a name="line.20"></a>
-<span class="sourceLineNo">021</span> * Tag a test as not easily falling into any of the below categories.<a name="line.21"></a>
-<span class="sourceLineNo">022</span> * @see org.apache.hadoop.hbase.testclassification.ClientTests<a name="line.22"></a>
-<span class="sourceLineNo">023</span> * @see org.apache.hadoop.hbase.testclassification.CoprocessorTests<a name="line.23"></a>
-<span class="sourceLineNo">024</span> * @see org.apache.hadoop.hbase.testclassification.FilterTests<a name="line.24"></a>
-<span class="sourceLineNo">025</span> * @see org.apache.hadoop.hbase.testclassification.FlakeyTests<a name="line.25"></a>
-<span class="sourceLineNo">026</span> * @see org.apache.hadoop.hbase.testclassification.IOTests<a name="line.26"></a>
-<span class="sourceLineNo">027</span> * @see org.apache.hadoop.hbase.testclassification.MapReduceTests<a name="line.27"></a>
-<span class="sourceLineNo">028</span> * @see org.apache.hadoop.hbase.testclassification.MasterTests<a name="line.28"></a>
-<span class="sourceLineNo">029</span> * @see org.apache.hadoop.hbase.testclassification.MiscTests<a name="line.29"></a>
-<span class="sourceLineNo">030</span> * @see org.apache.hadoop.hbase.testclassification.RegionServerTests<a name="line.30"></a>
-<span class="sourceLineNo">031</span> * @see org.apache.hadoop.hbase.testclassification.ReplicationTests<a name="line.31"></a>
-<span class="sourceLineNo">032</span> * @see org.apache.hadoop.hbase.testclassification.RPCTests<a name="line.32"></a>
-<span class="sourceLineNo">033</span> * @see org.apache.hadoop.hbase.testclassification.SecurityTests<a name="line.33"></a>
-<span class="sourceLineNo">034</span> * @see org.apache.hadoop.hbase.testclassification.VerySlowRegionServerTests<a name="line.34"></a>
-<span class="sourceLineNo">035</span> * @see org.apache.hadoop.hbase.testclassification.VerySlowMapReduceTests<a name="line.35"></a>
-<span class="sourceLineNo">036</span> */<a name="line.36"></a>
-<span class="sourceLineNo">037</span>package org.apache.hadoop.hbase.testclassification;<a name="line.37"></a>
-<span class="sourceLineNo">038</span><a name="line.38"></a>
+<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
+<span class="sourceLineNo">003</span> * or more contributor license agreements.  See the NOTICE file<a name="line.3"></a>
+<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
+<span class="sourceLineNo">005</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.5"></a>
+<span class="sourceLineNo">006</span> * to you under the Apache License, Version 2.0 (the<a name="line.6"></a>
+<span class="sourceLineNo">007</span> * "License"); you may not use this file except in compliance<a name="line.7"></a>
+<span class="sourceLineNo">008</span> * with the License.  You may obtain a copy of the License at<a name="line.8"></a>
+<span class="sourceLineNo">009</span> *<a name="line.9"></a>
+<span class="sourceLineNo">010</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.10"></a>
+<span class="sourceLineNo">011</span> *<a name="line.11"></a>
+<span class="sourceLineNo">012</span> * Unless required by applicable law or agreed to in writing, software<a name="line.12"></a>
+<span class="sourceLineNo">013</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.13"></a>
+<span class="sourceLineNo">014</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.14"></a>
+<span class="sourceLineNo">015</span> * See the License for the specific language governing permissions and<a name="line.15"></a>
+<span class="sourceLineNo">016</span> * limitations under the License.<a name="line.16"></a>
+<span class="sourceLineNo">017</span> */<a name="line.17"></a>
+<span class="sourceLineNo">018</span><a name="line.18"></a>
+<span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.testclassification;<a name="line.19"></a>
+<span class="sourceLineNo">020</span><a name="line.20"></a>
+<span class="sourceLineNo">021</span>/**<a name="line.21"></a>
+<span class="sourceLineNo">022</span> * Tag a test as not easily falling into any of the below categories.<a name="line.22"></a>
+<span class="sourceLineNo">023</span> *<a name="line.23"></a>
+<span class="sourceLineNo">024</span> * @see org.apache.hadoop.hbase.testclassification.ClientTests<a name="line.24"></a>
+<span class="sourceLineNo">025</span> * @see org.apache.hadoop.hbase.testclassification.CoprocessorTests<a name="line.25"></a>
+<span class="sourceLineNo">026</span> * @see org.apache.hadoop.hbase.testclassification.FilterTests<a name="line.26"></a>
+<span class="sourceLineNo">027</span> * @see org.apache.hadoop.hbase.testclassification.FlakeyTests<a name="line.27"></a>
+<span class="sourceLineNo">028</span> * @see org.apache.hadoop.hbase.testclassification.IOTests<a name="line.28"></a>
+<span class="sourceLineNo">029</span> * @see org.apache.hadoop.hbase.testclassification.MapReduceTests<a name="line.29"></a>
+<span class="sourceLineNo">030</span> * @see org.apache.hadoop.hbase.testclassification.MasterTests<a name="line.30"></a>
+<span class="sourceLineNo">031</span> * @see org.apache.hadoop.hbase.testclassification.MiscTests<a name="line.31"></a>
+<span class="sourceLineNo">032</span> * @see org.apache.hadoop.hbase.testclassification.RegionServerTests<a name="line.32"></a>
+<span class="sourceLineNo">033</span> * @see org.apache.hadoop.hbase.testclassification.ReplicationTests<a name="line.33"></a>
+<span class="sourceLineNo">034</span> * @see org.apache.hadoop.hbase.testclassification.RPCTests<a name="line.34"></a>
+<span class="sourceLineNo">035</span> * @see org.apache.hadoop.hbase.testclassification.SecurityTests<a name="line.35"></a>
+<span class="sourceLineNo">036</span> * @see org.apache.hadoop.hbase.testclassification.VerySlowRegionServerTests<a name="line.36"></a>
+<span class="sourceLineNo">037</span> * @see org.apache.hadoop.hbase.testclassification.VerySlowMapReduceTests<a name="line.37"></a>
+<span class="sourceLineNo">038</span> */<a name="line.38"></a>
 <span class="sourceLineNo">039</span>public interface MiscTests {<a name="line.39"></a>
 <span class="sourceLineNo">040</span>}<a name="line.40"></a>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/RPCTests.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/RPCTests.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/RPCTests.html
index 010a93a..3a19768 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/RPCTests.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/RPCTests.html
@@ -7,43 +7,43 @@
 <body>
 <div class="sourceContainer">
 <pre><span class="sourceLineNo">001</span>/*<a name="line.1"></a>
-<span class="sourceLineNo">002</span> *<a name="line.2"></a>
-<span class="sourceLineNo">003</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.3"></a>
-<span class="sourceLineNo">004</span> * or more contributor license agreements.  See the NOTICE file<a name="line.4"></a>
-<span class="sourceLineNo">005</span> * distributed with this work for additional information<a name="line.5"></a>
-<span class="sourceLineNo">006</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.6"></a>
-<span class="sourceLineNo">007</span> * to you under the Apache License, Version 2.0 (the<a name="line.7"></a>
-<span class="sourceLineNo">008</span> * "License"); you may not use this file except in compliance<a name="line.8"></a>
-<span class="sourceLineNo">009</span> * with the License.  You may obtain a copy of the License at<a name="line.9"></a>
-<span class="sourceLineNo">010</span> *<a name="line.10"></a>
-<span class="sourceLineNo">011</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.11"></a>
-<span class="sourceLineNo">012</span> *<a name="line.12"></a>
-<span class="sourceLineNo">013</span> * Unless required by applicable law or agreed to in writing, software<a name="line.13"></a>
-<span class="sourceLineNo">014</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.14"></a>
-<span class="sourceLineNo">015</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.15"></a>
-<span class="sourceLineNo">016</span> * See the License for the specific language governing permissions and<a name="line.16"></a>
-<span class="sourceLineNo">017</span> * limitations under the License.<a name="line.17"></a>
-<span class="sourceLineNo">018</span> */<a name="line.18"></a>
-<span class="sourceLineNo">019</span>/**<a name="line.19"></a>
-<span class="sourceLineNo">020</span> * Tag a test as related to RPC.<a name="line.20"></a>
-<span class="sourceLineNo">021</span> * @see org.apache.hadoop.hbase.testclassification.ClientTests<a name="line.21"></a>
-<span class="sourceLineNo">022</span> * @see org.apache.hadoop.hbase.testclassification.CoprocessorTests<a name="line.22"></a>
-<span class="sourceLineNo">023</span> * @see org.apache.hadoop.hbase.testclassification.FilterTests<a name="line.23"></a>
-<span class="sourceLineNo">024</span> * @see org.apache.hadoop.hbase.testclassification.FlakeyTests<a name="line.24"></a>
-<span class="sourceLineNo">025</span> * @see org.apache.hadoop.hbase.testclassification.IOTests<a name="line.25"></a>
-<span class="sourceLineNo">026</span> * @see org.apache.hadoop.hbase.testclassification.MapReduceTests<a name="line.26"></a>
-<span class="sourceLineNo">027</span> * @see org.apache.hadoop.hbase.testclassification.MasterTests<a name="line.27"></a>
-<span class="sourceLineNo">028</span> * @see org.apache.hadoop.hbase.testclassification.MiscTests<a name="line.28"></a>
-<span class="sourceLineNo">029</span> * @see org.apache.hadoop.hbase.testclassification.RegionServerTests<a name="line.29"></a>
-<span class="sourceLineNo">030</span> * @see org.apache.hadoop.hbase.testclassification.ReplicationTests<a name="line.30"></a>
-<span class="sourceLineNo">031</span> * @see org.apache.hadoop.hbase.testclassification.RPCTests<a name="line.31"></a>
-<span class="sourceLineNo">032</span> * @see org.apache.hadoop.hbase.testclassification.SecurityTests<a name="line.32"></a>
-<span class="sourceLineNo">033</span> * @see org.apache.hadoop.hbase.testclassification.VerySlowRegionServerTests<a name="line.33"></a>
-<span class="sourceLineNo">034</span> * @see org.apache.hadoop.hbase.testclassification.VerySlowMapReduceTests<a name="line.34"></a>
-<span class="sourceLineNo">035</span> */<a name="line.35"></a>
-<span class="sourceLineNo">036</span>package org.apache.hadoop.hbase.testclassification;<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">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
+<span class="sourceLineNo">003</span> * or more contributor license agreements.  See the NOTICE file<a name="line.3"></a>
+<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
+<span class="sourceLineNo">005</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.5"></a>
+<span class="sourceLineNo">006</span> * to you under the Apache License, Version 2.0 (the<a name="line.6"></a>
+<span class="sourceLineNo">007</span> * "License"); you may not use this file except in compliance<a name="line.7"></a>
+<span class="sourceLineNo">008</span> * with the License.  You may obtain a copy of the License at<a name="line.8"></a>
+<span class="sourceLineNo">009</span> *<a name="line.9"></a>
+<span class="sourceLineNo">010</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.10"></a>
+<span class="sourceLineNo">011</span> *<a name="line.11"></a>
+<span class="sourceLineNo">012</span> * Unless required by applicable law or agreed to in writing, software<a name="line.12"></a>
+<span class="sourceLineNo">013</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.13"></a>
+<span class="sourceLineNo">014</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.14"></a>
+<span class="sourceLineNo">015</span> * See the License for the specific language governing permissions and<a name="line.15"></a>
+<span class="sourceLineNo">016</span> * limitations under the License.<a name="line.16"></a>
+<span class="sourceLineNo">017</span> */<a name="line.17"></a>
+<span class="sourceLineNo">018</span><a name="line.18"></a>
+<span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.testclassification;<a name="line.19"></a>
+<span class="sourceLineNo">020</span><a name="line.20"></a>
+<span class="sourceLineNo">021</span>/**<a name="line.21"></a>
+<span class="sourceLineNo">022</span> * Tag a test as related to RPC.<a name="line.22"></a>
+<span class="sourceLineNo">023</span> *<a name="line.23"></a>
+<span class="sourceLineNo">024</span> * @see org.apache.hadoop.hbase.testclassification.ClientTests<a name="line.24"></a>
+<span class="sourceLineNo">025</span> * @see org.apache.hadoop.hbase.testclassification.CoprocessorTests<a name="line.25"></a>
+<span class="sourceLineNo">026</span> * @see org.apache.hadoop.hbase.testclassification.FilterTests<a name="line.26"></a>
+<span class="sourceLineNo">027</span> * @see org.apache.hadoop.hbase.testclassification.FlakeyTests<a name="line.27"></a>
+<span class="sourceLineNo">028</span> * @see org.apache.hadoop.hbase.testclassification.IOTests<a name="line.28"></a>
+<span class="sourceLineNo">029</span> * @see org.apache.hadoop.hbase.testclassification.MapReduceTests<a name="line.29"></a>
+<span class="sourceLineNo">030</span> * @see org.apache.hadoop.hbase.testclassification.MasterTests<a name="line.30"></a>
+<span class="sourceLineNo">031</span> * @see org.apache.hadoop.hbase.testclassification.MiscTests<a name="line.31"></a>
+<span class="sourceLineNo">032</span> * @see org.apache.hadoop.hbase.testclassification.RegionServerTests<a name="line.32"></a>
+<span class="sourceLineNo">033</span> * @see org.apache.hadoop.hbase.testclassification.ReplicationTests<a name="line.33"></a>
+<span class="sourceLineNo">034</span> * @see org.apache.hadoop.hbase.testclassification.RPCTests<a name="line.34"></a>
+<span class="sourceLineNo">035</span> * @see org.apache.hadoop.hbase.testclassification.SecurityTests<a name="line.35"></a>
+<span class="sourceLineNo">036</span> * @see org.apache.hadoop.hbase.testclassification.VerySlowRegionServerTests<a name="line.36"></a>
+<span class="sourceLineNo">037</span> * @see org.apache.hadoop.hbase.testclassification.VerySlowMapReduceTests<a name="line.37"></a>
+<span class="sourceLineNo">038</span> */<a name="line.38"></a>
 <span class="sourceLineNo">039</span>public interface RPCTests {<a name="line.39"></a>
 <span class="sourceLineNo">040</span>}<a name="line.40"></a>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/RegionServerTests.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/RegionServerTests.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/RegionServerTests.html
index e06a6ac..b4c022f 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/RegionServerTests.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/RegionServerTests.html
@@ -7,46 +7,45 @@
 <body>
 <div class="sourceContainer">
 <pre><span class="sourceLineNo">001</span>/*<a name="line.1"></a>
-<span class="sourceLineNo">002</span> *<a name="line.2"></a>
-<span class="sourceLineNo">003</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.3"></a>
-<span class="sourceLineNo">004</span> * or more contributor license agreements.  See the NOTICE file<a name="line.4"></a>
-<span class="sourceLineNo">005</span> * distributed with this work for additional information<a name="line.5"></a>
-<span class="sourceLineNo">006</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.6"></a>
-<span class="sourceLineNo">007</span> * to you under the Apache License, Version 2.0 (the<a name="line.7"></a>
-<span class="sourceLineNo">008</span> * "License"); you may not use this file except in compliance<a name="line.8"></a>
-<span class="sourceLineNo">009</span> * with the License.  You may obtain a copy of the License at<a name="line.9"></a>
-<span class="sourceLineNo">010</span> *<a name="line.10"></a>
-<span class="sourceLineNo">011</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.11"></a>
-<span class="sourceLineNo">012</span> *<a name="line.12"></a>
-<span class="sourceLineNo">013</span> * Unless required by applicable law or agreed to in writing, software<a name="line.13"></a>
-<span class="sourceLineNo">014</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.14"></a>
-<span class="sourceLineNo">015</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.15"></a>
-<span class="sourceLineNo">016</span> * See the License for the specific language governing permissions and<a name="line.16"></a>
-<span class="sourceLineNo">017</span> * limitations under the License.<a name="line.17"></a>
-<span class="sourceLineNo">018</span> */<a name="line.18"></a>
-<span class="sourceLineNo">019</span><a name="line.19"></a>
-<span class="sourceLineNo">020</span>/**<a name="line.20"></a>
-<span class="sourceLineNo">021</span> * Tag a test as related to the regionserver,<a name="line.21"></a>
-<span class="sourceLineNo">022</span> * @see org.apache.hadoop.hbase.testclassification.ClientTests<a name="line.22"></a>
-<span class="sourceLineNo">023</span> * @see org.apache.hadoop.hbase.testclassification.CoprocessorTests<a name="line.23"></a>
-<span class="sourceLineNo">024</span> * @see org.apache.hadoop.hbase.testclassification.FilterTests<a name="line.24"></a>
-<span class="sourceLineNo">025</span> * @see org.apache.hadoop.hbase.testclassification.FlakeyTests<a name="line.25"></a>
-<span class="sourceLineNo">026</span> * @see org.apache.hadoop.hbase.testclassification.IOTests<a name="line.26"></a>
-<span class="sourceLineNo">027</span> * @see org.apache.hadoop.hbase.testclassification.MapReduceTests<a name="line.27"></a>
-<span class="sourceLineNo">028</span> * @see org.apache.hadoop.hbase.testclassification.MasterTests<a name="line.28"></a>
-<span class="sourceLineNo">029</span> * @see org.apache.hadoop.hbase.testclassification.MiscTests<a name="line.29"></a>
-<span class="sourceLineNo">030</span> * @see org.apache.hadoop.hbase.testclassification.RegionServerTests<a name="line.30"></a>
-<span class="sourceLineNo">031</span> * @see org.apache.hadoop.hbase.testclassification.ReplicationTests<a name="line.31"></a>
-<span class="sourceLineNo">032</span> * @see org.apache.hadoop.hbase.testclassification.RPCTests<a name="line.32"></a>
-<span class="sourceLineNo">033</span> * @see org.apache.hadoop.hbase.testclassification.SecurityTests<a name="line.33"></a>
-<span class="sourceLineNo">034</span> * @see org.apache.hadoop.hbase.testclassification.VerySlowRegionServerTests<a name="line.34"></a>
-<span class="sourceLineNo">035</span> * @see org.apache.hadoop.hbase.testclassification.VerySlowMapReduceTests<a name="line.35"></a>
-<span class="sourceLineNo">036</span> */<a name="line.36"></a>
-<span class="sourceLineNo">037</span>package org.apache.hadoop.hbase.testclassification;<a name="line.37"></a>
-<span class="sourceLineNo">038</span><a name="line.38"></a>
-<span class="sourceLineNo">039</span><a name="line.39"></a>
-<span class="sourceLineNo">040</span>public interface RegionServerTests {<a name="line.40"></a>
-<span class="sourceLineNo">041</span>}<a name="line.41"></a>
+<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
+<span class="sourceLineNo">003</span> * or more contributor license agreements.  See the NOTICE file<a name="line.3"></a>
+<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
+<span class="sourceLineNo">005</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.5"></a>
+<span class="sourceLineNo">006</span> * to you under the Apache License, Version 2.0 (the<a name="line.6"></a>
+<span class="sourceLineNo">007</span> * "License"); you may not use this file except in compliance<a name="line.7"></a>
+<span class="sourceLineNo">008</span> * with the License.  You may obtain a copy of the License at<a name="line.8"></a>
+<span class="sourceLineNo">009</span> *<a name="line.9"></a>
+<span class="sourceLineNo">010</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.10"></a>
+<span class="sourceLineNo">011</span> *<a name="line.11"></a>
+<span class="sourceLineNo">012</span> * Unless required by applicable law or agreed to in writing, software<a name="line.12"></a>
+<span class="sourceLineNo">013</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.13"></a>
+<span class="sourceLineNo">014</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.14"></a>
+<span class="sourceLineNo">015</span> * See the License for the specific language governing permissions and<a name="line.15"></a>
+<span class="sourceLineNo">016</span> * limitations under the License.<a name="line.16"></a>
+<span class="sourceLineNo">017</span> */<a name="line.17"></a>
+<span class="sourceLineNo">018</span><a name="line.18"></a>
+<span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.testclassification;<a name="line.19"></a>
+<span class="sourceLineNo">020</span><a name="line.20"></a>
+<span class="sourceLineNo">021</span>/**<a name="line.21"></a>
+<span class="sourceLineNo">022</span> * Tag a test as related to the regionserver.<a name="line.22"></a>
+<span class="sourceLineNo">023</span> *<a name="line.23"></a>
+<span class="sourceLineNo">024</span> * @see org.apache.hadoop.hbase.testclassification.ClientTests<a name="line.24"></a>
+<span class="sourceLineNo">025</span> * @see org.apache.hadoop.hbase.testclassification.CoprocessorTests<a name="line.25"></a>
+<span class="sourceLineNo">026</span> * @see org.apache.hadoop.hbase.testclassification.FilterTests<a name="line.26"></a>
+<span class="sourceLineNo">027</span> * @see org.apache.hadoop.hbase.testclassification.FlakeyTests<a name="line.27"></a>
+<span class="sourceLineNo">028</span> * @see org.apache.hadoop.hbase.testclassification.IOTests<a name="line.28"></a>
+<span class="sourceLineNo">029</span> * @see org.apache.hadoop.hbase.testclassification.MapReduceTests<a name="line.29"></a>
+<span class="sourceLineNo">030</span> * @see org.apache.hadoop.hbase.testclassification.MasterTests<a name="line.30"></a>
+<span class="sourceLineNo">031</span> * @see org.apache.hadoop.hbase.testclassification.MiscTests<a name="line.31"></a>
+<span class="sourceLineNo">032</span> * @see org.apache.hadoop.hbase.testclassification.RegionServerTests<a name="line.32"></a>
+<span class="sourceLineNo">033</span> * @see org.apache.hadoop.hbase.testclassification.ReplicationTests<a name="line.33"></a>
+<span class="sourceLineNo">034</span> * @see org.apache.hadoop.hbase.testclassification.RPCTests<a name="line.34"></a>
+<span class="sourceLineNo">035</span> * @see org.apache.hadoop.hbase.testclassification.SecurityTests<a name="line.35"></a>
+<span class="sourceLineNo">036</span> * @see org.apache.hadoop.hbase.testclassification.VerySlowRegionServerTests<a name="line.36"></a>
+<span class="sourceLineNo">037</span> * @see org.apache.hadoop.hbase.testclassification.VerySlowMapReduceTests<a name="line.37"></a>
+<span class="sourceLineNo">038</span> */<a name="line.38"></a>
+<span class="sourceLineNo">039</span>public interface RegionServerTests {<a name="line.39"></a>
+<span class="sourceLineNo">040</span>}<a name="line.40"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/ReplicationTests.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/ReplicationTests.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/ReplicationTests.html
index c30b9b5..9559bb3 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/ReplicationTests.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/ReplicationTests.html
@@ -7,43 +7,43 @@
 <body>
 <div class="sourceContainer">
 <pre><span class="sourceLineNo">001</span>/*<a name="line.1"></a>
-<span class="sourceLineNo">002</span> *<a name="line.2"></a>
-<span class="sourceLineNo">003</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.3"></a>
-<span class="sourceLineNo">004</span> * or more contributor license agreements.  See the NOTICE file<a name="line.4"></a>
-<span class="sourceLineNo">005</span> * distributed with this work for additional information<a name="line.5"></a>
-<span class="sourceLineNo">006</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.6"></a>
-<span class="sourceLineNo">007</span> * to you under the Apache License, Version 2.0 (the<a name="line.7"></a>
-<span class="sourceLineNo">008</span> * "License"); you may not use this file except in compliance<a name="line.8"></a>
-<span class="sourceLineNo">009</span> * with the License.  You may obtain a copy of the License at<a name="line.9"></a>
-<span class="sourceLineNo">010</span> *<a name="line.10"></a>
-<span class="sourceLineNo">011</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.11"></a>
-<span class="sourceLineNo">012</span> *<a name="line.12"></a>
-<span class="sourceLineNo">013</span> * Unless required by applicable law or agreed to in writing, software<a name="line.13"></a>
-<span class="sourceLineNo">014</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.14"></a>
-<span class="sourceLineNo">015</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.15"></a>
-<span class="sourceLineNo">016</span> * See the License for the specific language governing permissions and<a name="line.16"></a>
-<span class="sourceLineNo">017</span> * limitations under the License.<a name="line.17"></a>
-<span class="sourceLineNo">018</span> */<a name="line.18"></a>
-<span class="sourceLineNo">019</span><a name="line.19"></a>
-<span class="sourceLineNo">020</span>/**<a name="line.20"></a>
-<span class="sourceLineNo">021</span> * Tag a test as related to replication,<a name="line.21"></a>
-<span class="sourceLineNo">022</span> * @see org.apache.hadoop.hbase.testclassification.ClientTests<a name="line.22"></a>
-<span class="sourceLineNo">023</span> * @see org.apache.hadoop.hbase.testclassification.CoprocessorTests<a name="line.23"></a>
-<span class="sourceLineNo">024</span> * @see org.apache.hadoop.hbase.testclassification.FilterTests<a name="line.24"></a>
-<span class="sourceLineNo">025</span> * @see org.apache.hadoop.hbase.testclassification.FlakeyTests<a name="line.25"></a>
-<span class="sourceLineNo">026</span> * @see org.apache.hadoop.hbase.testclassification.IOTests<a name="line.26"></a>
-<span class="sourceLineNo">027</span> * @see org.apache.hadoop.hbase.testclassification.MapReduceTests<a name="line.27"></a>
-<span class="sourceLineNo">028</span> * @see org.apache.hadoop.hbase.testclassification.MasterTests<a name="line.28"></a>
-<span class="sourceLineNo">029</span> * @see org.apache.hadoop.hbase.testclassification.MiscTests<a name="line.29"></a>
-<span class="sourceLineNo">030</span> * @see org.apache.hadoop.hbase.testclassification.RegionServerTests<a name="line.30"></a>
-<span class="sourceLineNo">031</span> * @see org.apache.hadoop.hbase.testclassification.ReplicationTests<a name="line.31"></a>
-<span class="sourceLineNo">032</span> * @see org.apache.hadoop.hbase.testclassification.RPCTests<a name="line.32"></a>
-<span class="sourceLineNo">033</span> * @see org.apache.hadoop.hbase.testclassification.SecurityTests<a name="line.33"></a>
-<span class="sourceLineNo">034</span> * @see org.apache.hadoop.hbase.testclassification.VerySlowRegionServerTests<a name="line.34"></a>
-<span class="sourceLineNo">035</span> * @see org.apache.hadoop.hbase.testclassification.VerySlowMapReduceTests<a name="line.35"></a>
-<span class="sourceLineNo">036</span> */<a name="line.36"></a>
-<span class="sourceLineNo">037</span>package org.apache.hadoop.hbase.testclassification;<a name="line.37"></a>
-<span class="sourceLineNo">038</span><a name="line.38"></a>
+<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
+<span class="sourceLineNo">003</span> * or more contributor license agreements.  See the NOTICE file<a name="line.3"></a>
+<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
+<span class="sourceLineNo">005</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.5"></a>
+<span class="sourceLineNo">006</span> * to you under the Apache License, Version 2.0 (the<a name="line.6"></a>
+<span class="sourceLineNo">007</span> * "License"); you may not use this file except in compliance<a name="line.7"></a>
+<span class="sourceLineNo">008</span> * with the License.  You may obtain a copy of the License at<a name="line.8"></a>
+<span class="sourceLineNo">009</span> *<a name="line.9"></a>
+<span class="sourceLineNo">010</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.10"></a>
+<span class="sourceLineNo">011</span> *<a name="line.11"></a>
+<span class="sourceLineNo">012</span> * Unless required by applicable law or agreed to in writing, software<a name="line.12"></a>
+<span class="sourceLineNo">013</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.13"></a>
+<span class="sourceLineNo">014</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.14"></a>
+<span class="sourceLineNo">015</span> * See the License for the specific language governing permissions and<a name="line.15"></a>
+<span class="sourceLineNo">016</span> * limitations under the License.<a name="line.16"></a>
+<span class="sourceLineNo">017</span> */<a name="line.17"></a>
+<span class="sourceLineNo">018</span><a name="line.18"></a>
+<span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.testclassification;<a name="line.19"></a>
+<span class="sourceLineNo">020</span><a name="line.20"></a>
+<span class="sourceLineNo">021</span>/**<a name="line.21"></a>
+<span class="sourceLineNo">022</span> * Tag a test as related to replication.<a name="line.22"></a>
+<span class="sourceLineNo">023</span> *<a name="line.23"></a>
+<span class="sourceLineNo">024</span> * @see org.apache.hadoop.hbase.testclassification.ClientTests<a name="line.24"></a>
+<span class="sourceLineNo">025</span> * @see org.apache.hadoop.hbase.testclassification.CoprocessorTests<a name="line.25"></a>
+<span class="sourceLineNo">026</span> * @see org.apache.hadoop.hbase.testclassification.FilterTests<a name="line.26"></a>
+<span class="sourceLineNo">027</span> * @see org.apache.hadoop.hbase.testclassification.FlakeyTests<a name="line.27"></a>
+<span class="sourceLineNo">028</span> * @see org.apache.hadoop.hbase.testclassification.IOTests<a name="line.28"></a>
+<span class="sourceLineNo">029</span> * @see org.apache.hadoop.hbase.testclassification.MapReduceTests<a name="line.29"></a>
+<span class="sourceLineNo">030</span> * @see org.apache.hadoop.hbase.testclassification.MasterTests<a name="line.30"></a>
+<span class="sourceLineNo">031</span> * @see org.apache.hadoop.hbase.testclassification.MiscTests<a name="line.31"></a>
+<span class="sourceLineNo">032</span> * @see org.apache.hadoop.hbase.testclassification.RegionServerTests<a name="line.32"></a>
+<span class="sourceLineNo">033</span> * @see org.apache.hadoop.hbase.testclassification.ReplicationTests<a name="line.33"></a>
+<span class="sourceLineNo">034</span> * @see org.apache.hadoop.hbase.testclassification.RPCTests<a name="line.34"></a>
+<span class="sourceLineNo">035</span> * @see org.apache.hadoop.hbase.testclassification.SecurityTests<a name="line.35"></a>
+<span class="sourceLineNo">036</span> * @see org.apache.hadoop.hbase.testclassification.VerySlowRegionServerTests<a name="line.36"></a>
+<span class="sourceLineNo">037</span> * @see org.apache.hadoop.hbase.testclassification.VerySlowMapReduceTests<a name="line.37"></a>
+<span class="sourceLineNo">038</span> */<a name="line.38"></a>
 <span class="sourceLineNo">039</span>public interface ReplicationTests {<a name="line.39"></a>
 <span class="sourceLineNo">040</span>}<a name="line.40"></a>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/RestTests.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/RestTests.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/RestTests.html
index 3978f58..2da7b1b 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/RestTests.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/RestTests.html
@@ -7,46 +7,45 @@
 <body>
 <div class="sourceContainer">
 <pre><span class="sourceLineNo">001</span>/*<a name="line.1"></a>
-<span class="sourceLineNo">002</span> *<a name="line.2"></a>
-<span class="sourceLineNo">003</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.3"></a>
-<span class="sourceLineNo">004</span> * or more contributor license agreements.  See the NOTICE file<a name="line.4"></a>
-<span class="sourceLineNo">005</span> * distributed with this work for additional information<a name="line.5"></a>
-<span class="sourceLineNo">006</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.6"></a>
-<span class="sourceLineNo">007</span> * to you under the Apache License, Version 2.0 (the<a name="line.7"></a>
-<span class="sourceLineNo">008</span> * "License"); you may not use this file except in compliance<a name="line.8"></a>
-<span class="sourceLineNo">009</span> * with the License.  You may obtain a copy of the License at<a name="line.9"></a>
-<span class="sourceLineNo">010</span> *<a name="line.10"></a>
-<span class="sourceLineNo">011</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.11"></a>
-<span class="sourceLineNo">012</span> *<a name="line.12"></a>
-<span class="sourceLineNo">013</span> * Unless required by applicable law or agreed to in writing, software<a name="line.13"></a>
-<span class="sourceLineNo">014</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.14"></a>
-<span class="sourceLineNo">015</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.15"></a>
-<span class="sourceLineNo">016</span> * See the License for the specific language governing permissions and<a name="line.16"></a>
-<span class="sourceLineNo">017</span> * limitations under the License.<a name="line.17"></a>
-<span class="sourceLineNo">018</span> */<a name="line.18"></a>
-<span class="sourceLineNo">019</span><a name="line.19"></a>
-<span class="sourceLineNo">020</span>/**<a name="line.20"></a>
-<span class="sourceLineNo">021</span> * Tag a test as related to the rest capability of HBase.<a name="line.21"></a>
-<span class="sourceLineNo">022</span> *<a name="line.22"></a>
-<span class="sourceLineNo">023</span> * @see org.apache.hadoop.hbase.testclassification.ClientTests<a name="line.23"></a>
-<span class="sourceLineNo">024</span> * @see org.apache.hadoop.hbase.testclassification.CoprocessorTests<a name="line.24"></a>
-<span class="sourceLineNo">025</span> * @see org.apache.hadoop.hbase.testclassification.FilterTests<a name="line.25"></a>
-<span class="sourceLineNo">026</span> * @see org.apache.hadoop.hbase.testclassification.FlakeyTests<a name="line.26"></a>
-<span class="sourceLineNo">027</span> * @see org.apache.hadoop.hbase.testclassification.IOTests<a name="line.27"></a>
-<span class="sourceLineNo">028</span> * @see org.apache.hadoop.hbase.testclassification.MapReduceTests<a name="line.28"></a>
-<span class="sourceLineNo">029</span> * @see org.apache.hadoop.hbase.testclassification.MasterTests<a name="line.29"></a>
-<span class="sourceLineNo">030</span> * @see org.apache.hadoop.hbase.testclassification.MiscTests<a name="line.30"></a>
-<span class="sourceLineNo">031</span> * @see org.apache.hadoop.hbase.testclassification.RegionServerTests<a name="line.31"></a>
-<span class="sourceLineNo">032</span> * @see org.apache.hadoop.hbase.testclassification.ReplicationTests<a name="line.32"></a>
-<span class="sourceLineNo">033</span> * @see org.apache.hadoop.hbase.testclassification.RPCTests<a name="line.33"></a>
-<span class="sourceLineNo">034</span> * @see org.apache.hadoop.hbase.testclassification.SecurityTests<a name="line.34"></a>
-<span class="sourceLineNo">035</span> * @see org.apache.hadoop.hbase.testclassification.VerySlowRegionServerTests<a name="line.35"></a>
-<span class="sourceLineNo">036</span> * @see org.apache.hadoop.hbase.testclassification.VerySlowMapReduceTests<a name="line.36"></a>
-<span class="sourceLineNo">037</span> */<a name="line.37"></a>
-<span class="sourceLineNo">038</span>package org.apache.hadoop.hbase.testclassification;<a name="line.38"></a>
-<span class="sourceLineNo">039</span><a name="line.39"></a>
-<span class="sourceLineNo">040</span>public interface RestTests {<a name="line.40"></a>
-<span class="sourceLineNo">041</span>}<a name="line.41"></a>
+<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
+<span class="sourceLineNo">003</span> * or more contributor license agreements.  See the NOTICE file<a name="line.3"></a>
+<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
+<span class="sourceLineNo">005</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.5"></a>
+<span class="sourceLineNo">006</span> * to you under the Apache License, Version 2.0 (the<a name="line.6"></a>
+<span class="sourceLineNo">007</span> * "License"); you may not use this file except in compliance<a name="line.7"></a>
+<span class="sourceLineNo">008</span> * with the License.  You may obtain a copy of the License at<a name="line.8"></a>
+<span class="sourceLineNo">009</span> *<a name="line.9"></a>
+<span class="sourceLineNo">010</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.10"></a>
+<span class="sourceLineNo">011</span> *<a name="line.11"></a>
+<span class="sourceLineNo">012</span> * Unless required by applicable law or agreed to in writing, software<a name="line.12"></a>
+<span class="sourceLineNo">013</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.13"></a>
+<span class="sourceLineNo">014</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.14"></a>
+<span class="sourceLineNo">015</span> * See the License for the specific language governing permissions and<a name="line.15"></a>
+<span class="sourceLineNo">016</span> * limitations under the License.<a name="line.16"></a>
+<span class="sourceLineNo">017</span> */<a name="line.17"></a>
+<span class="sourceLineNo">018</span><a name="line.18"></a>
+<span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.testclassification;<a name="line.19"></a>
+<span class="sourceLineNo">020</span><a name="line.20"></a>
+<span class="sourceLineNo">021</span>/**<a name="line.21"></a>
+<span class="sourceLineNo">022</span> * Tag a test as related to the REST capability of HBase.<a name="line.22"></a>
+<span class="sourceLineNo">023</span> *<a name="line.23"></a>
+<span class="sourceLineNo">024</span> * @see org.apache.hadoop.hbase.testclassification.ClientTests<a name="line.24"></a>
+<span class="sourceLineNo">025</span> * @see org.apache.hadoop.hbase.testclassification.CoprocessorTests<a name="line.25"></a>
+<span class="sourceLineNo">026</span> * @see org.apache.hadoop.hbase.testclassification.FilterTests<a name="line.26"></a>
+<span class="sourceLineNo">027</span> * @see org.apache.hadoop.hbase.testclassification.FlakeyTests<a name="line.27"></a>
+<span class="sourceLineNo">028</span> * @see org.apache.hadoop.hbase.testclassification.IOTests<a name="line.28"></a>
+<span class="sourceLineNo">029</span> * @see org.apache.hadoop.hbase.testclassification.MapReduceTests<a name="line.29"></a>
+<span class="sourceLineNo">030</span> * @see org.apache.hadoop.hbase.testclassification.MasterTests<a name="line.30"></a>
+<span class="sourceLineNo">031</span> * @see org.apache.hadoop.hbase.testclassification.MiscTests<a name="line.31"></a>
+<span class="sourceLineNo">032</span> * @see org.apache.hadoop.hbase.testclassification.RegionServerTests<a name="line.32"></a>
+<span class="sourceLineNo">033</span> * @see org.apache.hadoop.hbase.testclassification.ReplicationTests<a name="line.33"></a>
+<span class="sourceLineNo">034</span> * @see org.apache.hadoop.hbase.testclassification.RPCTests<a name="line.34"></a>
+<span class="sourceLineNo">035</span> * @see org.apache.hadoop.hbase.testclassification.SecurityTests<a name="line.35"></a>
+<span class="sourceLineNo">036</span> * @see org.apache.hadoop.hbase.testclassification.VerySlowRegionServerTests<a name="line.36"></a>
+<span class="sourceLineNo">037</span> * @see org.apache.hadoop.hbase.testclassification.VerySlowMapReduceTests<a name="line.37"></a>
+<span class="sourceLineNo">038</span> */<a name="line.38"></a>
+<span class="sourceLineNo">039</span>public interface RestTests {<a name="line.39"></a>
+<span class="sourceLineNo">040</span>}<a name="line.40"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/SecurityTests.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/SecurityTests.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/SecurityTests.html
index 3955eb8..bc30a48 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/SecurityTests.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/SecurityTests.html
@@ -7,47 +7,45 @@
 <body>
 <div class="sourceContainer">
 <pre><span class="sourceLineNo">001</span>/*<a name="line.1"></a>
-<span class="sourceLineNo">002</span> *<a name="line.2"></a>
-<span class="sourceLineNo">003</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.3"></a>
-<span class="sourceLineNo">004</span> * or more contributor license agreements.  See the NOTICE file<a name="line.4"></a>
-<span class="sourceLineNo">005</span> * distributed with this work for additional information<a name="line.5"></a>
-<span class="sourceLineNo">006</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.6"></a>
-<span class="sourceLineNo">007</span> * to you under the Apache License, Version 2.0 (the<a name="line.7"></a>
-<span class="sourceLineNo">008</span> * "License"); you may not use this file except in compliance<a name="line.8"></a>
-<span class="sourceLineNo">009</span> * with the License.  You may obtain a copy of the License at<a name="line.9"></a>
-<span class="sourceLineNo">010</span> *<a name="line.10"></a>
-<span class="sourceLineNo">011</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.11"></a>
-<span class="sourceLineNo">012</span> *<a name="line.12"></a>
-<span class="sourceLineNo">013</span> * Unless required by applicable law or agreed to in writing, software<a name="line.13"></a>
-<span class="sourceLineNo">014</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.14"></a>
-<span class="sourceLineNo">015</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.15"></a>
-<span class="sourceLineNo">016</span> * See the License for the specific language governing permissions and<a name="line.16"></a>
-<span class="sourceLineNo">017</span> * limitations under the License.<a name="line.17"></a>
-<span class="sourceLineNo">018</span> */<a name="line.18"></a>
-<span class="sourceLineNo">019</span><a name="line.19"></a>
-<span class="sourceLineNo">020</span>/**<a name="line.20"></a>
-<span class="sourceLineNo">021</span> * Tag a test as related to security.<a name="line.21"></a>
-<span class="sourceLineNo">022</span> *<a name="line.22"></a>
-<span class="sourceLineNo">023</span> * @see org.apache.hadoop.hbase.testclassification.ClientTests<a name="line.23"></a>
-<span class="sourceLineNo">024</span> * @see org.apache.hadoop.hbase.testclassification.CoprocessorTests<a name="line.24"></a>
-<span class="sourceLineNo">025</span> * @see org.apache.hadoop.hbase.testclassification.FilterTests<a name="line.25"></a>
-<span class="sourceLineNo">026</span> * @see org.apache.hadoop.hbase.testclassification.FlakeyTests<a name="line.26"></a>
-<span class="sourceLineNo">027</span> * @see org.apache.hadoop.hbase.testclassification.IOTests<a name="line.27"></a>
-<span class="sourceLineNo">028</span> * @see org.apache.hadoop.hbase.testclassification.MapReduceTests<a name="line.28"></a>
-<span class="sourceLineNo">029</span> * @see org.apache.hadoop.hbase.testclassification.MasterTests<a name="line.29"></a>
-<span class="sourceLineNo">030</span> * @see org.apache.hadoop.hbase.testclassification.MiscTests<a name="line.30"></a>
-<span class="sourceLineNo">031</span> * @see org.apache.hadoop.hbase.testclassification.RegionServerTests<a name="line.31"></a>
-<span class="sourceLineNo">032</span> * @see org.apache.hadoop.hbase.testclassification.ReplicationTests<a name="line.32"></a>
-<span class="sourceLineNo">033</span> * @see org.apache.hadoop.hbase.testclassification.RPCTests<a name="line.33"></a>
-<span class="sourceLineNo">034</span> * @see org.apache.hadoop.hbase.testclassification.SecurityTests<a name="line.34"></a>
-<span class="sourceLineNo">035</span> * @see org.apache.hadoop.hbase.testclassification.VerySlowRegionServerTests<a name="line.35"></a>
-<span class="sourceLineNo">036</span> * @see org.apache.hadoop.hbase.testclassification.VerySlowMapReduceTests<a name="line.36"></a>
-<span class="sourceLineNo">037</span> */<a name="line.37"></a>
-<span class="sourceLineNo">038</span>package org.apache.hadoop.hbase.testclassification;<a name="line.38"></a>
-<span class="sourceLineNo">039</span><a name="line.39"></a>
-<span class="sourceLineNo">040</span><a name="line.40"></a>
-<span class="sourceLineNo">041</span>public interface SecurityTests {<a name="line.41"></a>
-<span class="sourceLineNo">042</span>}<a name="line.42"></a>
+<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
+<span class="sourceLineNo">003</span> * or more contributor license agreements.  See the NOTICE file<a name="line.3"></a>
+<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
+<span class="sourceLineNo">005</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.5"></a>
+<span class="sourceLineNo">006</span> * to you under the Apache License, Version 2.0 (the<a name="line.6"></a>
+<span class="sourceLineNo">007</span> * "License"); you may not use this file except in compliance<a name="line.7"></a>
+<span class="sourceLineNo">008</span> * with the License.  You may obtain a copy of the License at<a name="line.8"></a>
+<span class="sourceLineNo">009</span> *<a name="line.9"></a>
+<span class="sourceLineNo">010</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.10"></a>
+<span class="sourceLineNo">011</span> *<a name="line.11"></a>
+<span class="sourceLineNo">012</span> * Unless required by applicable law or agreed to in writing, software<a name="line.12"></a>
+<span class="sourceLineNo">013</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.13"></a>
+<span class="sourceLineNo">014</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.14"></a>
+<span class="sourceLineNo">015</span> * See the License for the specific language governing permissions and<a name="line.15"></a>
+<span class="sourceLineNo">016</span> * limitations under the License.<a name="line.16"></a>
+<span class="sourceLineNo">017</span> */<a name="line.17"></a>
+<span class="sourceLineNo">018</span><a name="line.18"></a>
+<span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.testclassification;<a name="line.19"></a>
+<span class="sourceLineNo">020</span><a name="line.20"></a>
+<span class="sourceLineNo">021</span>/**<a name="line.21"></a>
+<span class="sourceLineNo">022</span> * Tag a test as related to security.<a name="line.22"></a>
+<span class="sourceLineNo">023</span> *<a name="line.23"></a>
+<span class="sourceLineNo">024</span> * @see org.apache.hadoop.hbase.testclassification.ClientTests<a name="line.24"></a>
+<span class="sourceLineNo">025</span> * @see org.apache.hadoop.hbase.testclassification.CoprocessorTests<a name="line.25"></a>
+<span class="sourceLineNo">026</span> * @see org.apache.hadoop.hbase.testclassification.FilterTests<a name="line.26"></a>
+<span class="sourceLineNo">027</span> * @see org.apache.hadoop.hbase.testclassification.FlakeyTests<a name="line.27"></a>
+<span class="sourceLineNo">028</span> * @see org.apache.hadoop.hbase.testclassification.IOTests<a name="line.28"></a>
+<span class="sourceLineNo">029</span> * @see org.apache.hadoop.hbase.testclassification.MapReduceTests<a name="line.29"></a>
+<span class="sourceLineNo">030</span> * @see org.apache.hadoop.hbase.testclassification.MasterTests<a name="line.30"></a>
+<span class="sourceLineNo">031</span> * @see org.apache.hadoop.hbase.testclassification.MiscTests<a name="line.31"></a>
+<span class="sourceLineNo">032</span> * @see org.apache.hadoop.hbase.testclassification.RegionServerTests<a name="line.32"></a>
+<span class="sourceLineNo">033</span> * @see org.apache.hadoop.hbase.testclassification.ReplicationTests<a name="line.33"></a>
+<span class="sourceLineNo">034</span> * @see org.apache.hadoop.hbase.testclassification.RPCTests<a name="line.34"></a>
+<span class="sourceLineNo">035</span> * @see org.apache.hadoop.hbase.testclassification.SecurityTests<a name="line.35"></a>
+<span class="sourceLineNo">036</span> * @see org.apache.hadoop.hbase.testclassification.VerySlowRegionServerTests<a name="line.36"></a>
+<span class="sourceLineNo">037</span> * @see org.apache.hadoop.hbase.testclassification.VerySlowMapReduceTests<a name="line.37"></a>
+<span class="sourceLineNo">038</span> */<a name="line.38"></a>
+<span class="sourceLineNo">039</span>public interface SecurityTests {<a name="line.39"></a>
+<span class="sourceLineNo">040</span>}<a name="line.40"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/SmallTests.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/SmallTests.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/SmallTests.html
index e85b42b..cff7c0d 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/SmallTests.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/testclassification/SmallTests.html
@@ -7,39 +7,40 @@
 <body>
 <div class="sourceContainer">
 <pre><span class="sourceLineNo">001</span>/*<a name="line.1"></a>
-<span class="sourceLineNo">002</span> *<a name="line.2"></a>
-<span class="sourceLineNo">003</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.3"></a>
-<span class="sourceLineNo">004</span> * or more contributor license agreements.  See the NOTICE file<a name="line.4"></a>
-<span class="sourceLineNo">005</span> * distributed with this work for additional information<a name="line.5"></a>
-<span class="sourceLineNo">006</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.6"></a>
-<span class="sourceLineNo">007</span> * to you under the Apache License, Version 2.0 (the<a name="line.7"></a>
-<span class="sourceLineNo">008</span> * "License"); you may not use this file except in compliance<a name="line.8"></a>
-<span class="sourceLineNo">009</span> * with the License.  You may obtain a copy of the License at<a name="line.9"></a>
-<span class="sourceLineNo">010</span> *<a name="line.10"></a>
-<span class="sourceLineNo">011</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.11"></a>
-<span class="sourceLineNo">012</span> *<a name="line.12"></a>
-<span class="sourceLineNo">013</span> * Unless required by applicable law or agreed to in writing, software<a name="line.13"></a>
-<span class="sourceLineNo">014</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.14"></a>
-<span class="sourceLineNo">015</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.15"></a>
-<span class="sourceLineNo">016</span> * See the License for the specific language governing permissions and<a name="line.16"></a>
-<span class="sourceLineNo">017</span> * limitations under the License.<a name="line.17"></a>
-<span class="sourceLineNo">018</span> */<a name="line.18"></a>
-<span class="sourceLineNo">019</span><a name="line.19"></a>
-<span class="sourceLineNo">020</span>package org.apache.hadoop.hbase.testclassification;<a name="line.20"></a>
-<span class="sourceLineNo">021</span><a name="line.21"></a>
-<span class="sourceLineNo">022</span>/**<a name="line.22"></a>
-<span class="sourceLineNo">023</span> * Tag a test as 'small', meaning that the test class has the following<a name="line.23"></a>
-<span class="sourceLineNo">024</span> * characteristics:<a name="line.24"></a>
-<span class="sourceLineNo">025</span> *  - can be run simultaneously with other small tests in the same JVM<a name="line.25"></a>
-<span class="sourceLineNo">026</span> *  - ideally, last less than 15 seconds<a name="line.26"></a>
-<span class="sourceLineNo">027</span> *  - does not use a cluster<a name="line.27"></a>
-<span class="sourceLineNo">028</span> *<a name="line.28"></a>
-<span class="sourceLineNo">029</span> * @see MediumTests<a name="line.29"></a>
-<span class="sourceLineNo">030</span> * @see LargeTests<a name="line.30"></a>
-<span class="sourceLineNo">031</span> * @see IntegrationTests<a name="line.31"></a>
-<span class="sourceLineNo">032</span> */<a name="line.32"></a>
-<span class="sourceLineNo">033</span>public interface SmallTests {<a name="line.33"></a>
-<span class="sourceLineNo">034</span>}<a name="line.34"></a>
+<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
+<span class="sourceLineNo">003</span> * or more contributor license agreements.  See the NOTICE file<a name="line.3"></a>
+<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
+<span class="sourceLineNo">005</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.5"></a>
+<span class="sourceLineNo">006</span> * to you under the Apache License, Version 2.0 (the<a name="line.6"></a>
+<span class="sourceLineNo">007</span> * "License"); you may not use this file except in compliance<a name="line.7"></a>
+<span class="sourceLineNo">008</span> * with the License.  You may obtain a copy of the License at<a name="line.8"></a>
+<span class="sourceLineNo">009</span> *<a name="line.9"></a>
+<span class="sourceLineNo">010</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.10"></a>
+<span class="sourceLineNo">011</span> *<a name="line.11"></a>
+<span class="sourceLineNo">012</span> * Unless required by applicable law or agreed to in writing, software<a name="line.12"></a>
+<span class="sourceLineNo">013</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.13"></a>
+<span class="sourceLineNo">014</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.14"></a>
+<span class="sourceLineNo">015</span> * See the License for the specific language governing permissions and<a name="line.15"></a>
+<span class="sourceLineNo">016</span> * limitations under the License.<a name="line.16"></a>
+<span class="sourceLineNo">017</span> */<a name="line.17"></a>
+<span class="sourceLineNo">018</span><a name="line.18"></a>
+<span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.testclassification;<a name="line.19"></a>
+<span class="sourceLineNo">020</span><a name="line.20"></a>
+<span class="sourceLineNo">021</span>/**<a name="line.21"></a>
+<span class="sourceLineNo">022</span> * Tag a test as 'small', meaning that the test class has the following<a name="line.22"></a>
+<span class="sourceLineNo">023</span> * characteristics:<a name="line.23"></a>
+<span class="sourceLineNo">024</span> * &lt;ul&gt;<a name="line.24"></a>
+<span class="sourceLineNo">025</span> *  &lt;li&gt;can be run simultaneously with other small tests in the same JVM&lt;/li&gt;<a name="line.25"></a>
+<span class="sourceLineNo">026</span> *  &lt;li&gt;ideally, last less than 15 seconds&lt;/li&gt;<a name="line.26"></a>
+<span class="sourceLineNo">027</span> *  &lt;li&gt;does not use a cluster&lt;/li&gt;<a name="line.27"></a>
+<span class="sourceLineNo">028</span> * &lt;/ul&gt;<a name="line.28"></a>
+<span class="sourceLineNo">029</span> *<a name="line.29"></a>
+<span class="sourceLineNo">030</span> * @see MediumTests<a name="line.30"></a>
+<span class="sourceLineNo">031</span> * @see LargeTests<a name="line.31"></a>
+<span class="sourceLineNo">032</span> * @see IntegrationTests<a name="line.32"></a>
+<span class="sourceLineNo">033</span> */<a name="line.33"></a>
+<span class="sourceLineNo">034</span>public interface SmallTests {<a name="line.34"></a>
+<span class="sourceLineNo">035</span>}<a name="line.35"></a>
 
 
 


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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html
index 81f531b..04be024 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html
@@ -53,2036 +53,2078 @@
 <span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.AuthUtil;<a name="line.45"></a>
 <span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.46"></a>
 <span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.HConstants;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.security.Superusers;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.shaded.com.google.protobuf.InvalidProtocolBufferException;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil.ZKUtilOp.CreateAndFailSilent;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil.ZKUtilOp.DeleteNodeFailSilent;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil.ZKUtilOp.SetData;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.security.SecurityUtil;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.security.UserGroupInformation;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.security.authentication.util.KerberosUtil;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.zookeeper.AsyncCallback;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.zookeeper.CreateMode;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.zookeeper.KeeperException;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.zookeeper.KeeperException.NoNodeException;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.zookeeper.Op;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.zookeeper.Watcher;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.zookeeper.ZooDefs.Ids;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.zookeeper.ZooDefs.Perms;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.zookeeper.ZooKeeper;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.zookeeper.client.ZooKeeperSaslClient;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.zookeeper.data.ACL;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.zookeeper.data.Id;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.zookeeper.data.Stat;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.zookeeper.proto.CreateRequest;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.zookeeper.proto.DeleteRequest;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.zookeeper.proto.SetDataRequest;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.zookeeper.server.ZooKeeperSaslServer;<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> * Internal HBase utility class for ZooKeeper.<a name="line.81"></a>
-<span class="sourceLineNo">082</span> *<a name="line.82"></a>
-<span class="sourceLineNo">083</span> * &lt;p&gt;Contains only static methods and constants.<a name="line.83"></a>
-<span class="sourceLineNo">084</span> *<a name="line.84"></a>
-<span class="sourceLineNo">085</span> * &lt;p&gt;Methods all throw {@link KeeperException} if there is an unexpected<a name="line.85"></a>
-<span class="sourceLineNo">086</span> * zookeeper exception, so callers of these methods must handle appropriately.<a name="line.86"></a>
-<span class="sourceLineNo">087</span> * If ZK is required for the operation, the server will need to be aborted.<a name="line.87"></a>
-<span class="sourceLineNo">088</span> */<a name="line.88"></a>
-<span class="sourceLineNo">089</span>@InterfaceAudience.Private<a name="line.89"></a>
-<span class="sourceLineNo">090</span>public class ZKUtil {<a name="line.90"></a>
-<span class="sourceLineNo">091</span>  private static final Log LOG = LogFactory.getLog(ZKUtil.class);<a name="line.91"></a>
-<span class="sourceLineNo">092</span><a name="line.92"></a>
-<span class="sourceLineNo">093</span>  private static int zkDumpConnectionTimeOut;<a name="line.93"></a>
-<span class="sourceLineNo">094</span><a name="line.94"></a>
-<span class="sourceLineNo">095</span>  /**<a name="line.95"></a>
-<span class="sourceLineNo">096</span>   * Creates a new connection to ZooKeeper, pulling settings and ensemble config<a name="line.96"></a>
-<span class="sourceLineNo">097</span>   * from the specified configuration object using methods from {@link ZKConfig}.<a name="line.97"></a>
-<span class="sourceLineNo">098</span>   *<a name="line.98"></a>
-<span class="sourceLineNo">099</span>   * Sets the connection status monitoring watcher to the specified watcher.<a name="line.99"></a>
-<span class="sourceLineNo">100</span>   *<a name="line.100"></a>
-<span class="sourceLineNo">101</span>   * @param conf configuration to pull ensemble and other settings from<a name="line.101"></a>
-<span class="sourceLineNo">102</span>   * @param watcher watcher to monitor connection changes<a name="line.102"></a>
-<span class="sourceLineNo">103</span>   * @return connection to zookeeper<a name="line.103"></a>
-<span class="sourceLineNo">104</span>   * @throws IOException if unable to connect to zk or config problem<a name="line.104"></a>
-<span class="sourceLineNo">105</span>   */<a name="line.105"></a>
-<span class="sourceLineNo">106</span>  public static RecoverableZooKeeper connect(Configuration conf, Watcher watcher)<a name="line.106"></a>
-<span class="sourceLineNo">107</span>  throws IOException {<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    String ensemble = ZKConfig.getZKQuorumServersString(conf);<a name="line.108"></a>
-<span class="sourceLineNo">109</span>    return connect(conf, ensemble, watcher);<a name="line.109"></a>
-<span class="sourceLineNo">110</span>  }<a name="line.110"></a>
-<span class="sourceLineNo">111</span><a name="line.111"></a>
-<span class="sourceLineNo">112</span>  public static RecoverableZooKeeper connect(Configuration conf, String ensemble,<a name="line.112"></a>
-<span class="sourceLineNo">113</span>      Watcher watcher)<a name="line.113"></a>
-<span class="sourceLineNo">114</span>  throws IOException {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    return connect(conf, ensemble, watcher, null);<a name="line.115"></a>
-<span class="sourceLineNo">116</span>  }<a name="line.116"></a>
-<span class="sourceLineNo">117</span><a name="line.117"></a>
-<span class="sourceLineNo">118</span>  public static RecoverableZooKeeper connect(Configuration conf, String ensemble,<a name="line.118"></a>
-<span class="sourceLineNo">119</span>      Watcher watcher, final String identifier)<a name="line.119"></a>
-<span class="sourceLineNo">120</span>  throws IOException {<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    if(ensemble == null) {<a name="line.121"></a>
-<span class="sourceLineNo">122</span>      throw new IOException("Unable to determine ZooKeeper ensemble");<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    }<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    int timeout = conf.getInt(HConstants.ZK_SESSION_TIMEOUT,<a name="line.124"></a>
-<span class="sourceLineNo">125</span>        HConstants.DEFAULT_ZK_SESSION_TIMEOUT);<a name="line.125"></a>
-<span class="sourceLineNo">126</span>    if (LOG.isTraceEnabled()) {<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      LOG.trace(identifier + " opening connection to ZooKeeper ensemble=" + ensemble);<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    }<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    int retry = conf.getInt("zookeeper.recovery.retry", 3);<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    int retryIntervalMillis =<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      conf.getInt("zookeeper.recovery.retry.intervalmill", 1000);<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    int maxSleepTime = conf.getInt("zookeeper.recovery.retry.maxsleeptime", 60000);<a name="line.132"></a>
-<span class="sourceLineNo">133</span>    zkDumpConnectionTimeOut = conf.getInt("zookeeper.dump.connection.timeout",<a name="line.133"></a>
-<span class="sourceLineNo">134</span>        1000);<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    return new RecoverableZooKeeper(ensemble, timeout, watcher,<a name="line.135"></a>
-<span class="sourceLineNo">136</span>        retry, retryIntervalMillis, maxSleepTime, identifier);<a name="line.136"></a>
-<span class="sourceLineNo">137</span>  }<a name="line.137"></a>
-<span class="sourceLineNo">138</span><a name="line.138"></a>
-<span class="sourceLineNo">139</span>  /**<a name="line.139"></a>
-<span class="sourceLineNo">140</span>   * Log in the current zookeeper server process using the given configuration<a name="line.140"></a>
-<span class="sourceLineNo">141</span>   * keys for the credential file and login principal.<a name="line.141"></a>
-<span class="sourceLineNo">142</span>   *<a name="line.142"></a>
-<span class="sourceLineNo">143</span>   * &lt;p&gt;&lt;strong&gt;This is only applicable when running on secure hbase&lt;/strong&gt;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>   * On regular HBase (without security features), this will safely be ignored.<a name="line.144"></a>
-<span class="sourceLineNo">145</span>   * &lt;/p&gt;<a name="line.145"></a>
+<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.security.Superusers;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil.ZKUtilOp.CreateAndFailSilent;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil.ZKUtilOp.DeleteNodeFailSilent;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil.ZKUtilOp.SetData;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.security.SecurityUtil;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.security.UserGroupInformation;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.security.authentication.util.KerberosUtil;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.zookeeper.AsyncCallback;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.zookeeper.CreateMode;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.zookeeper.KeeperException;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.zookeeper.KeeperException.NoNodeException;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.zookeeper.Op;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.zookeeper.Watcher;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.zookeeper.ZooDefs.Ids;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.zookeeper.ZooDefs.Perms;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.zookeeper.ZooKeeper;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.zookeeper.client.ZooKeeperSaslClient;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.zookeeper.data.ACL;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.zookeeper.data.Id;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.zookeeper.data.Stat;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.zookeeper.proto.CreateRequest;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.zookeeper.proto.DeleteRequest;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.zookeeper.proto.SetDataRequest;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.zookeeper.server.ZooKeeperSaslServer;<a name="line.75"></a>
+<span class="sourceLineNo">076</span><a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.shaded.com.google.protobuf.InvalidProtocolBufferException;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos;<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> * Internal HBase utility class for ZooKeeper.<a name="line.82"></a>
+<span class="sourceLineNo">083</span> *<a name="line.83"></a>
+<span class="sourceLineNo">084</span> * &lt;p&gt;Contains only static methods and constants.<a name="line.84"></a>
+<span class="sourceLineNo">085</span> *<a name="line.85"></a>
+<span class="sourceLineNo">086</span> * &lt;p&gt;Methods all throw {@link KeeperException} if there is an unexpected<a name="line.86"></a>
+<span class="sourceLineNo">087</span> * zookeeper exception, so callers of these methods must handle appropriately.<a name="line.87"></a>
+<span class="sourceLineNo">088</span> * If ZK is required for the operation, the server will need to be aborted.<a name="line.88"></a>
+<span class="sourceLineNo">089</span> */<a name="line.89"></a>
+<span class="sourceLineNo">090</span>@InterfaceAudience.Private<a name="line.90"></a>
+<span class="sourceLineNo">091</span>public final class ZKUtil {<a name="line.91"></a>
+<span class="sourceLineNo">092</span>  private static final Log LOG = LogFactory.getLog(ZKUtil.class);<a name="line.92"></a>
+<span class="sourceLineNo">093</span><a name="line.93"></a>
+<span class="sourceLineNo">094</span>  private static int zkDumpConnectionTimeOut;<a name="line.94"></a>
+<span class="sourceLineNo">095</span><a name="line.95"></a>
+<span class="sourceLineNo">096</span>  private ZKUtil() {<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>   * Creates a new connection to ZooKeeper, pulling settings and ensemble config<a name="line.100"></a>
+<span class="sourceLineNo">101</span>   * from the specified configuration object using methods from {@link ZKConfig}.<a name="line.101"></a>
+<span class="sourceLineNo">102</span>   *<a name="line.102"></a>
+<span class="sourceLineNo">103</span>   * Sets the connection status monitoring watcher to the specified watcher.<a name="line.103"></a>
+<span class="sourceLineNo">104</span>   *<a name="line.104"></a>
+<span class="sourceLineNo">105</span>   * @param conf configuration to pull ensemble and other settings from<a name="line.105"></a>
+<span class="sourceLineNo">106</span>   * @param watcher watcher to monitor connection changes<a name="line.106"></a>
+<span class="sourceLineNo">107</span>   * @return connection to zookeeper<a name="line.107"></a>
+<span class="sourceLineNo">108</span>   * @throws IOException if unable to connect to zk or config problem<a name="line.108"></a>
+<span class="sourceLineNo">109</span>   */<a name="line.109"></a>
+<span class="sourceLineNo">110</span>  public static RecoverableZooKeeper connect(Configuration conf, Watcher watcher)<a name="line.110"></a>
+<span class="sourceLineNo">111</span>  throws IOException {<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    String ensemble = ZKConfig.getZKQuorumServersString(conf);<a name="line.112"></a>
+<span class="sourceLineNo">113</span>    return connect(conf, ensemble, watcher);<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>  public static RecoverableZooKeeper connect(Configuration conf, String ensemble,<a name="line.116"></a>
+<span class="sourceLineNo">117</span>      Watcher watcher)<a name="line.117"></a>
+<span class="sourceLineNo">118</span>  throws IOException {<a name="line.118"></a>
+<span class="sourceLineNo">119</span>    return connect(conf, ensemble, watcher, null);<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>  public static RecoverableZooKeeper connect(Configuration conf, String ensemble,<a name="line.122"></a>
+<span class="sourceLineNo">123</span>      Watcher watcher, final String identifier)<a name="line.123"></a>
+<span class="sourceLineNo">124</span>  throws IOException {<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    if(ensemble == null) {<a name="line.125"></a>
+<span class="sourceLineNo">126</span>      throw new IOException("Unable to determine ZooKeeper ensemble");<a name="line.126"></a>
+<span class="sourceLineNo">127</span>    }<a name="line.127"></a>
+<span class="sourceLineNo">128</span>    int timeout = conf.getInt(HConstants.ZK_SESSION_TIMEOUT,<a name="line.128"></a>
+<span class="sourceLineNo">129</span>        HConstants.DEFAULT_ZK_SESSION_TIMEOUT);<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    if (LOG.isTraceEnabled()) {<a name="line.130"></a>
+<span class="sourceLineNo">131</span>      LOG.trace(identifier + " opening connection to ZooKeeper ensemble=" + ensemble);<a name="line.131"></a>
+<span class="sourceLineNo">132</span>    }<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    int retry = conf.getInt("zookeeper.recovery.retry", 3);<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    int retryIntervalMillis =<a name="line.134"></a>
+<span class="sourceLineNo">135</span>      conf.getInt("zookeeper.recovery.retry.intervalmill", 1000);<a name="line.135"></a>
+<span class="sourceLineNo">136</span>    int maxSleepTime = conf.getInt("zookeeper.recovery.retry.maxsleeptime", 60000);<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    zkDumpConnectionTimeOut = conf.getInt("zookeeper.dump.connection.timeout",<a name="line.137"></a>
+<span class="sourceLineNo">138</span>        1000);<a name="line.138"></a>
+<span class="sourceLineNo">139</span>    return new RecoverableZooKeeper(ensemble, timeout, watcher,<a name="line.139"></a>
+<span class="sourceLineNo">140</span>        retry, retryIntervalMillis, maxSleepTime, identifier);<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>   * Log in the current zookeeper server process using the given configuration<a name="line.144"></a>
+<span class="sourceLineNo">145</span>   * keys for the credential file and login principal.<a name="line.145"></a>
 <span class="sourceLineNo">146</span>   *<a name="line.146"></a>
-<span class="sourceLineNo">147</span>   * @param conf The configuration data to use<a name="line.147"></a>
-<span class="sourceLineNo">148</span>   * @param keytabFileKey Property key used to configure the path to the credential file<a name="line.148"></a>
-<span class="sourceLineNo">149</span>   * @param userNameKey Property key used to configure the login principal<a name="line.149"></a>
-<span class="sourceLineNo">150</span>   * @param hostname Current hostname to use in any credentials<a name="line.150"></a>
-<span class="sourceLineNo">151</span>   * @throws IOException underlying exception from SecurityUtil.login() call<a name="line.151"></a>
-<span class="sourceLineNo">152</span>   */<a name="line.152"></a>
-<span class="sourceLineNo">153</span>  public static void loginServer(Configuration conf, String keytabFileKey,<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      String userNameKey, String hostname) throws IOException {<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    login(conf, keytabFileKey, userNameKey, hostname,<a name="line.155"></a>
-<span class="sourceLineNo">156</span>          ZooKeeperSaslServer.LOGIN_CONTEXT_NAME_KEY,<a name="line.156"></a>
-<span class="sourceLineNo">157</span>          JaasConfiguration.SERVER_KEYTAB_KERBEROS_CONFIG_NAME);<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>  /**<a name="line.160"></a>
-<span class="sourceLineNo">161</span>   * Log in the current zookeeper client using the given configuration<a name="line.161"></a>
-<span class="sourceLineNo">162</span>   * keys for the credential file and login principal.<a name="line.162"></a>
-<span class="sourceLineNo">163</span>   *<a name="line.163"></a>
-<span class="sourceLineNo">164</span>   * &lt;p&gt;&lt;strong&gt;This is only applicable when running on secure hbase&lt;/strong&gt;<a name="line.164"></a>
-<span class="sourceLineNo">165</span>   * On regular HBase (without security features), this will safely be ignored.<a name="line.165"></a>
-<span class="sourceLineNo">166</span>   * &lt;/p&gt;<a name="line.166"></a>
+<span class="sourceLineNo">147</span>   * &lt;p&gt;&lt;strong&gt;This is only applicable when running on secure hbase&lt;/strong&gt;<a name="line.147"></a>
+<span class="sourceLineNo">148</span>   * On regular HBase (without security features), this will safely be ignored.<a name="line.148"></a>
+<span class="sourceLineNo">149</span>   * &lt;/p&gt;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>   *<a name="line.150"></a>
+<span class="sourceLineNo">151</span>   * @param conf The configuration data to use<a name="line.151"></a>
+<span class="sourceLineNo">152</span>   * @param keytabFileKey Property key used to configure the path to the credential file<a name="line.152"></a>
+<span class="sourceLineNo">153</span>   * @param userNameKey Property key used to configure the login principal<a name="line.153"></a>
+<span class="sourceLineNo">154</span>   * @param hostname Current hostname to use in any credentials<a name="line.154"></a>
+<span class="sourceLineNo">155</span>   * @throws IOException underlying exception from SecurityUtil.login() call<a name="line.155"></a>
+<span class="sourceLineNo">156</span>   */<a name="line.156"></a>
+<span class="sourceLineNo">157</span>  public static void loginServer(Configuration conf, String keytabFileKey,<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      String userNameKey, String hostname) throws IOException {<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    login(conf, keytabFileKey, userNameKey, hostname,<a name="line.159"></a>
+<span class="sourceLineNo">160</span>          ZooKeeperSaslServer.LOGIN_CONTEXT_NAME_KEY,<a name="line.160"></a>
+<span class="sourceLineNo">161</span>          JaasConfiguration.SERVER_KEYTAB_KERBEROS_CONFIG_NAME);<a name="line.161"></a>
+<span class="sourceLineNo">162</span>  }<a name="line.162"></a>
+<span class="sourceLineNo">163</span><a name="line.163"></a>
+<span class="sourceLineNo">164</span>  /**<a name="line.164"></a>
+<span class="sourceLineNo">165</span>   * Log in the current zookeeper client using the given configuration<a name="line.165"></a>
+<span class="sourceLineNo">166</span>   * keys for the credential file and login principal.<a name="line.166"></a>
 <span class="sourceLineNo">167</span>   *<a name="line.167"></a>
-<span class="sourceLineNo">168</span>   * @param conf The configuration data to use<a name="line.168"></a>
-<span class="sourceLineNo">169</span>   * @param keytabFileKey Property key used to configure the path to the credential file<a name="line.169"></a>
-<span class="sourceLineNo">170</span>   * @param userNameKey Property key used to configure the login principal<a name="line.170"></a>
-<span class="sourceLineNo">171</span>   * @param hostname Current hostname to use in any credentials<a name="line.171"></a>
-<span class="sourceLineNo">172</span>   * @throws IOException underlying exception from SecurityUtil.login() call<a name="line.172"></a>
-<span class="sourceLineNo">173</span>   */<a name="line.173"></a>
-<span class="sourceLineNo">174</span>  public static void loginClient(Configuration conf, String keytabFileKey,<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      String userNameKey, String hostname) throws IOException {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    login(conf, keytabFileKey, userNameKey, hostname,<a name="line.176"></a>
-<span class="sourceLineNo">177</span>          ZooKeeperSaslClient.LOGIN_CONTEXT_NAME_KEY,<a name="line.177"></a>
-<span class="sourceLineNo">178</span>          JaasConfiguration.CLIENT_KEYTAB_KERBEROS_CONFIG_NAME);<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>   * Log in the current process using the given configuration keys for the<a name="line.182"></a>
-<span class="sourceLineNo">183</span>   * credential file and login principal.<a name="line.183"></a>
-<span class="sourceLineNo">184</span>   *<a name="line.184"></a>
-<span class="sourceLineNo">185</span>   * &lt;p&gt;&lt;strong&gt;This is only applicable when running on secure hbase&lt;/strong&gt;<a name="line.185"></a>
-<span class="sourceLineNo">186</span>   * On regular HBase (without security features), this will safely be ignored.<a name="line.186"></a>
-<span class="sourceLineNo">187</span>   * &lt;/p&gt;<a name="line.187"></a>
+<span class="sourceLineNo">168</span>   * &lt;p&gt;&lt;strong&gt;This is only applicable when running on secure hbase&lt;/strong&gt;<a name="line.168"></a>
+<span class="sourceLineNo">169</span>   * On regular HBase (without security features), this will safely be ignored.<a name="line.169"></a>
+<span class="sourceLineNo">170</span>   * &lt;/p&gt;<a name="line.170"></a>
+<span class="sourceLineNo">171</span>   *<a name="line.171"></a>
+<span class="sourceLineNo">172</span>   * @param conf The configuration data to use<a name="line.172"></a>
+<span class="sourceLineNo">173</span>   * @param keytabFileKey Property key used to configure the path to the credential file<a name="line.173"></a>
+<span class="sourceLineNo">174</span>   * @param userNameKey Property key used to configure the login principal<a name="line.174"></a>
+<span class="sourceLineNo">175</span>   * @param hostname Current hostname to use in any credentials<a name="line.175"></a>
+<span class="sourceLineNo">176</span>   * @throws IOException underlying exception from SecurityUtil.login() call<a name="line.176"></a>
+<span class="sourceLineNo">177</span>   */<a name="line.177"></a>
+<span class="sourceLineNo">178</span>  public static void loginClient(Configuration conf, String keytabFileKey,<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      String userNameKey, String hostname) throws IOException {<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    login(conf, keytabFileKey, userNameKey, hostname,<a name="line.180"></a>
+<span class="sourceLineNo">181</span>          ZooKeeperSaslClient.LOGIN_CONTEXT_NAME_KEY,<a name="line.181"></a>
+<span class="sourceLineNo">182</span>          JaasConfiguration.CLIENT_KEYTAB_KERBEROS_CONFIG_NAME);<a name="line.182"></a>
+<span class="sourceLineNo">183</span>  }<a name="line.183"></a>
+<span class="sourceLineNo">184</span><a name="line.184"></a>
+<span class="sourceLineNo">185</span>  /**<a name="line.185"></a>
+<span class="sourceLineNo">186</span>   * Log in the current process using the given configuration keys for the<a name="line.186"></a>
+<span class="sourceLineNo">187</span>   * credential file and login principal.<a name="line.187"></a>
 <span class="sourceLineNo">188</span>   *<a name="line.188"></a>
-<span class="sourceLineNo">189</span>   * @param conf The configuration data to use<a name="line.189"></a>
-<span class="sourceLineNo">190</span>   * @param keytabFileKey Property key used to configure the path to the credential file<a name="line.190"></a>
-<span class="sourceLineNo">191</span>   * @param userNameKey Property key used to configure the login principal<a name="line.191"></a>
-<span class="sourceLineNo">192</span>   * @param hostname Current hostname to use in any credentials<a name="line.192"></a>
-<span class="sourceLineNo">193</span>   * @param loginContextProperty property name to expose the entry name<a name="line.193"></a>
-<span class="sourceLineNo">194</span>   * @param loginContextName jaas entry name<a name="line.194"></a>
-<span class="sourceLineNo">195</span>   * @throws IOException underlying exception from SecurityUtil.login() call<a name="line.195"></a>
-<span class="sourceLineNo">196</span>   */<a name="line.196"></a>
-<span class="sourceLineNo">197</span>  private static void login(Configuration conf, String keytabFileKey,<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      String userNameKey, String hostname,<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      String loginContextProperty, String loginContextName)<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      throws IOException {<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    if (!isSecureZooKeeper(conf))<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>    // User has specified a jaas.conf, keep this one as the good one.<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    // HBASE_OPTS="-Djava.security.auth.login.config=jaas.conf"<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    if (System.getProperty("java.security.auth.login.config") != null)<a name="line.206"></a>
-<span class="sourceLineNo">207</span>      return;<a name="line.207"></a>
+<span class="sourceLineNo">189</span>   * &lt;p&gt;&lt;strong&gt;This is only applicable when running on secure hbase&lt;/strong&gt;<a name="line.189"></a>
+<span class="sourceLineNo">190</span>   * On regular HBase (without security features), this will safely be ignored.<a name="line.190"></a>
+<span class="sourceLineNo">191</span>   * &lt;/p&gt;<a name="line.191"></a>
+<span class="sourceLineNo">192</span>   *<a name="line.192"></a>
+<span class="sourceLineNo">193</span>   * @param conf The configuration data to use<a name="line.193"></a>
+<span class="sourceLineNo">194</span>   * @param keytabFileKey Property key used to configure the path to the credential file<a name="line.194"></a>
+<span class="sourceLineNo">195</span>   * @param userNameKey Property key used to configure the login principal<a name="line.195"></a>
+<span class="sourceLineNo">196</span>   * @param hostname Current hostname to use in any credentials<a name="line.196"></a>
+<span class="sourceLineNo">197</span>   * @param loginContextProperty property name to expose the entry name<a name="line.197"></a>
+<span class="sourceLineNo">198</span>   * @param loginContextName jaas entry name<a name="line.198"></a>
+<span class="sourceLineNo">199</span>   * @throws IOException underlying exception from SecurityUtil.login() call<a name="line.199"></a>
+<span class="sourceLineNo">200</span>   */<a name="line.200"></a>
+<span class="sourceLineNo">201</span>  private static void login(Configuration conf, String keytabFileKey,<a name="line.201"></a>
+<span class="sourceLineNo">202</span>      String userNameKey, String hostname,<a name="line.202"></a>
+<span class="sourceLineNo">203</span>      String loginContextProperty, String loginContextName)<a name="line.203"></a>
+<span class="sourceLineNo">204</span>      throws IOException {<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    if (!isSecureZooKeeper(conf)) {<a name="line.205"></a>
+<span class="sourceLineNo">206</span>      return;<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    }<a name="line.207"></a>
 <span class="sourceLineNo">208</span><a name="line.208"></a>
-<span class="sourceLineNo">209</span>    // No keytab specified, no auth<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    String keytabFilename = conf.get(keytabFileKey);<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    if (keytabFilename == null) {<a name="line.211"></a>
-<span class="sourceLineNo">212</span>      LOG.warn("no keytab specified for: " + keytabFileKey);<a name="line.212"></a>
-<span class="sourceLineNo">213</span>      return;<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    }<a name="line.214"></a>
-<span class="sourceLineNo">215</span><a name="line.215"></a>
-<span class="sourceLineNo">216</span>    String principalConfig = conf.get(userNameKey, System.getProperty("user.name"));<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    String principalName = SecurityUtil.getServerPrincipal(principalConfig, hostname);<a name="line.217"></a>
-<span class="sourceLineNo">218</span><a name="line.218"></a>
-<span class="sourceLineNo">219</span>    // Initialize the "jaas.conf" for keyTab/principal,<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    // If keyTab is not specified use the Ticket Cache.<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    // and set the zookeeper login context name.<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    JaasConfiguration jaasConf = new JaasConfiguration(loginContextName,<a name="line.222"></a>
-<span class="sourceLineNo">223</span>        principalName, keytabFilename);<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    javax.security.auth.login.Configuration.setConfiguration(jaasConf);<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    System.setProperty(loginContextProperty, loginContextName);<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>  /**<a name="line.228"></a>
-<span class="sourceLineNo">229</span>   * A JAAS configuration that defines the login modules that we want to use for login.<a name="line.229"></a>
-<span class="sourceLineNo">230</span>   */<a name="line.230"></a>
-<span class="sourceLineNo">231</span>  private static class JaasConfiguration extends javax.security.auth.login.Configuration {<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    private static final String SERVER_KEYTAB_KERBEROS_CONFIG_NAME =<a name="line.232"></a>
-<span class="sourceLineNo">233</span>      "zookeeper-server-keytab-kerberos";<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    private static final String CLIENT_KEYTAB_KERBEROS_CONFIG_NAME =<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      "zookeeper-client-keytab-kerberos";<a name="line.235"></a>
-<span class="sourceLineNo">236</span><a name="line.236"></a>
-<span class="sourceLineNo">237</span>    private static final Map&lt;String, String&gt; BASIC_JAAS_OPTIONS = new HashMap&lt;&gt;();<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    static {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>      String jaasEnvVar = System.getenv("HBASE_JAAS_DEBUG");<a name="line.239"></a>
-<span class="sourceLineNo">240</span>      if (jaasEnvVar != null &amp;&amp; "true".equalsIgnoreCase(jaasEnvVar)) {<a name="line.240"></a>
-<span class="sourceLineNo">241</span>        BASIC_JAAS_OPTIONS.put("debug", "true");<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      }<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    }<a name="line.243"></a>
-<span class="sourceLineNo">244</span><a name="line.244"></a>
-<span class="sourceLineNo">245</span>    private static final Map&lt;String,String&gt; KEYTAB_KERBEROS_OPTIONS = new HashMap&lt;&gt;();<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    static {<a name="line.246"></a>
-<span class="sourceLineNo">247</span>      KEYTAB_KERBEROS_OPTIONS.put("doNotPrompt", "true");<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      KEYTAB_KERBEROS_OPTIONS.put("storeKey", "true");<a name="line.248"></a>
-<span class="sourceLineNo">249</span>      KEYTAB_KERBEROS_OPTIONS.put("refreshKrb5Config", "true");<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      KEYTAB_KERBEROS_OPTIONS.putAll(BASIC_JAAS_OPTIONS);<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>    private static final AppConfigurationEntry KEYTAB_KERBEROS_LOGIN =<a name="line.253"></a>
-<span class="sourceLineNo">254</span>      new AppConfigurationEntry(KerberosUtil.getKrb5LoginModuleName(),<a name="line.254"></a>
-<span class="sourceLineNo">255</span>                                LoginModuleControlFlag.REQUIRED,<a name="line.255"></a>
-<span class="sourceLineNo">256</span>                                KEYTAB_KERBEROS_OPTIONS);<a name="line.256"></a>
-<span class="sourceLineNo">257</span><a name="line.257"></a>
-<span class="sourceLineNo">258</span>    private static final AppConfigurationEntry[] KEYTAB_KERBEROS_CONF =<a name="line.258"></a>
-<span class="sourceLineNo">259</span>      new AppConfigurationEntry[]{KEYTAB_KERBEROS_LOGIN};<a name="line.259"></a>
-<span class="sourceLineNo">260</span><a name="line.260"></a>
-<span class="sourceLineNo">261</span>    private javax.security.auth.login.Configuration baseConfig;<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    private final String loginContextName;<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    private final boolean useTicketCache;<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    private final String keytabFile;<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    private final String principal;<a name="line.265"></a>
+<span class="sourceLineNo">209</span>    // User has specified a jaas.conf, keep this one as the good one.<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    // HBASE_OPTS="-Djava.security.auth.login.config=jaas.conf"<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    if (System.getProperty("java.security.auth.login.config") != null) {<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      return;<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>    // No keytab specified, no auth<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    String keytabFilename = conf.get(keytabFileKey);<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    if (keytabFilename == null) {<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      LOG.warn("no keytab specified for: " + keytabFileKey);<a name="line.218"></a>
+<span class="sourceLineNo">219</span>      return;<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    }<a name="line.220"></a>
+<span class="sourceLineNo">221</span><a name="line.221"></a>
+<span class="sourceLineNo">222</span>    String principalConfig = conf.get(userNameKey, System.getProperty("user.name"));<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    String principalName = SecurityUtil.getServerPrincipal(principalConfig, hostname);<a name="line.223"></a>
+<span class="sourceLineNo">224</span><a name="line.224"></a>
+<span class="sourceLineNo">225</span>    // Initialize the "jaas.conf" for keyTab/principal,<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    // If keyTab is not specified use the Ticket Cache.<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    // and set the zookeeper login context name.<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    JaasConfiguration jaasConf = new JaasConfiguration(loginContextName,<a name="line.228"></a>
+<span class="sourceLineNo">229</span>        principalName, keytabFilename);<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    javax.security.auth.login.Configuration.setConfiguration(jaasConf);<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    System.setProperty(loginContextProperty, loginContextName);<a name="line.231"></a>
+<span class="sourceLineNo">232</span>  }<a name="line.232"></a>
+<span class="sourceLineNo">233</span><a name="line.233"></a>
+<span class="sourceLineNo">234</span>  /**<a name="line.234"></a>
+<span class="sourceLineNo">235</span>   * A JAAS configuration that defines the login modules that we want to use for login.<a name="line.235"></a>
+<span class="sourceLineNo">236</span>   */<a name="line.236"></a>
+<span class="sourceLineNo">237</span>  private static class JaasConfiguration extends javax.security.auth.login.Configuration {<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    private static final String SERVER_KEYTAB_KERBEROS_CONFIG_NAME =<a name="line.238"></a>
+<span class="sourceLineNo">239</span>      "zookeeper-server-keytab-kerberos";<a name="line.239"></a>
+<span class="sourceLineNo">240</span>    private static final String CLIENT_KEYTAB_KERBEROS_CONFIG_NAME =<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      "zookeeper-client-keytab-kerberos";<a name="line.241"></a>
+<span class="sourceLineNo">242</span><a name="line.242"></a>
+<span class="sourceLineNo">243</span>    private static final Map&lt;String, String&gt; BASIC_JAAS_OPTIONS = new HashMap&lt;&gt;();<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    static {<a name="line.244"></a>
+<span class="sourceLineNo">245</span>      String jaasEnvVar = System.getenv("HBASE_JAAS_DEBUG");<a name="line.245"></a>
+<span class="sourceLineNo">246</span>      if (jaasEnvVar != null &amp;&amp; "true".equalsIgnoreCase(jaasEnvVar)) {<a name="line.246"></a>
+<span class="sourceLineNo">247</span>        BASIC_JAAS_OPTIONS.put("debug", "true");<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>    private static final Map&lt;String,String&gt; KEYTAB_KERBEROS_OPTIONS = new HashMap&lt;&gt;();<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    static {<a name="line.252"></a>
+<span class="sourceLineNo">253</span>      KEYTAB_KERBEROS_OPTIONS.put("doNotPrompt", "true");<a name="line.253"></a>
+<span class="sourceLineNo">254</span>      KEYTAB_KERBEROS_OPTIONS.put("storeKey", "true");<a name="line.254"></a>
+<span class="sourceLineNo">255</span>      KEYTAB_KERBEROS_OPTIONS.put("refreshKrb5Config", "true");<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      KEYTAB_KERBEROS_OPTIONS.putAll(BASIC_JAAS_OPTIONS);<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    }<a name="line.257"></a>
+<span class="sourceLineNo">258</span><a name="line.258"></a>
+<span class="sourceLineNo">259</span>    private static final AppConfigurationEntry KEYTAB_KERBEROS_LOGIN =<a name="line.259"></a>
+<span class="sourceLineNo">260</span>      new AppConfigurationEntry(KerberosUtil.getKrb5LoginModuleName(),<a name="line.260"></a>
+<span class="sourceLineNo">261</span>                                LoginModuleControlFlag.REQUIRED,<a name="line.261"></a>
+<span class="sourceLineNo">262</span>                                KEYTAB_KERBEROS_OPTIONS);<a name="line.262"></a>
+<span class="sourceLineNo">263</span><a name="line.263"></a>
+<span class="sourceLineNo">264</span>    private static final AppConfigurationEntry[] KEYTAB_KERBEROS_CONF =<a name="line.264"></a>
+<span class="sourceLineNo">265</span>      new AppConfigurationEntry[]{KEYTAB_KERBEROS_LOGIN};<a name="line.265"></a>
 <span class="sourceLineNo">266</span><a name="line.266"></a>
-<span class="sourceLineNo">267</span>    public JaasConfiguration(String loginContextName, String principal, String keytabFile) {<a name="line.267"></a>
-<span class="sourceLineNo">268</span>      this(loginContextName, principal, keytabFile, keytabFile == null || keytabFile.length() == 0);<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>    private JaasConfiguration(String loginContextName, String principal,<a name="line.271"></a>
-<span class="sourceLineNo">272</span>                             String keytabFile, boolean useTicketCache) {<a name="line.272"></a>
-<span class="sourceLineNo">273</span>      try {<a name="line.273"></a>
-<span class="sourceLineNo">274</span>        this.baseConfig = javax.security.auth.login.Configuration.getConfiguration();<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      } catch (SecurityException e) {<a name="line.275"></a>
-<span class="sourceLineNo">276</span>        this.baseConfig = null;<a name="line.276"></a>
-<span class="sourceLineNo">277</span>      }<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      this.loginContextName = loginContextName;<a name="line.278"></a>
-<span class="sourceLineNo">279</span>      this.useTicketCache = useTicketCache;<a name="line.279"></a>
-<span class="sourceLineNo">280</span>      this.keytabFile = keytabFile;<a name="line.280"></a>
-<span class="sourceLineNo">281</span>      this.principal = principal;<a name="line.281"></a>
-<span class="sourceLineNo">282</span>      LOG.info("JaasConfiguration loginContextName=" + loginContextName +<a name="line.282"></a>
-<span class="sourceLineNo">283</span>               " principal=" + principal + " useTicketCache=" + useTicketCache +<a name="line.283"></a>
-<span class="sourceLineNo">284</span>               " keytabFile=" + keytabFile);<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>    @Override<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    public AppConfigurationEntry[] getAppConfigurationEntry(String appName) {<a name="line.288"></a>
-<span class="sourceLineNo">289</span>      if (loginContextName.equals(appName)) {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        if (!useTicketCache) {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>          KEYTAB_KERBEROS_OPTIONS.put("keyTab", keytabFile);<a name="line.291"></a>
-<span class="sourceLineNo">292</span>          KEYTAB_KERBEROS_OPTIONS.put("useKeyTab", "true");<a name="line.292"></a>
-<span class="sourceLineNo">293</span>        }<a name="line.293"></a>
-<span class="sourceLineNo">294</span>        KEYTAB_KERBEROS_OPTIONS.put("principal", principal);<a name="line.294"></a>
-<span class="sourceLineNo">295</span>        KEYTAB_KERBEROS_OPTIONS.put("useTicketCache", useTicketCache ? "true" : "false");<a name="line.295"></a>
-<span class="sourceLineNo">296</span>        return KEYTAB_KERBEROS_CONF;<a name="line.296"></a>
-<span class="sourceLineNo">297</span>      }<a name="line.297"></a>
-<span class="sourceLineNo">298</span>      if (baseConfig != null) return baseConfig.getAppConfigurationEntry(appName);<a name="line.298"></a>
-<span class="sourceLineNo">299</span>      return(null);<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    }<a name="line.300"></a>
-<span class="sourceLineNo">301</span>  }<a name="line.301"></a>
-<span class="sourceLineNo">302</span><a name="line.302"></a>
-<span class="sourceLineNo">303</span>  //<a name="line.303"></a>
-<span class="sourceLineNo">304</span>  // Helper methods<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>   * Returns the full path of the immediate parent of the specified node.<a name="line.307"></a>
-<span class="sourceLineNo">308</span>   * @param node path to get parent of<a name="line.308"></a>
-<span class="sourceLineNo">309</span>   * @return parent of path, null if passed the root node or an invalid node<a name="line.309"></a>
-<span class="sourceLineNo">310</span>   */<a name="line.310"></a>
-<span class="sourceLineNo">311</span>  public static String getParent(String node) {<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    int idx = node.lastIndexOf(ZNodePaths.ZNODE_PATH_SEPARATOR);<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    return idx &lt;= 0 ? null : node.substring(0, idx);<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">267</span>    private javax.security.auth.login.Configuration baseConfig;<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    private final String loginContextName;<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    private final boolean useTicketCache;<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    private final String keytabFile;<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    private final String principal;<a name="line.271"></a>
+<span class="sourceLineNo">272</span><a name="line.272"></a>
+<span class="sourceLineNo">273</span>    public JaasConfiguration(String loginContextName, String principal, String keytabFile) {<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      this(loginContextName, principal, keytabFile, keytabFile == null || keytabFile.length() == 0);<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>    private JaasConfiguration(String loginContextName, String principal,<a name="line.277"></a>
+<span class="sourceLineNo">278</span>                             String keytabFile, boolean useTicketCache) {<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      try {<a name="line.279"></a>
+<span class="sourceLineNo">280</span>        this.baseConfig = javax.security.auth.login.Configuration.getConfiguration();<a name="line.280"></a>
+<span class="sourceLineNo">281</span>      } catch (SecurityException e) {<a name="line.281"></a>
+<span class="sourceLineNo">282</span>        this.baseConfig = null;<a name="line.282"></a>
+<span class="sourceLineNo">283</span>      }<a name="line.283"></a>
+<span class="sourceLineNo">284</span>      this.loginContextName = loginContextName;<a name="line.284"></a>
+<span class="sourceLineNo">285</span>      this.useTicketCache = useTicketCache;<a name="line.285"></a>
+<span class="sourceLineNo">286</span>      this.keytabFile = keytabFile;<a name="line.286"></a>
+<span class="sourceLineNo">287</span>      this.principal = principal;<a name="line.287"></a>
+<span class="sourceLineNo">288</span>      LOG.info("JaasConfiguration loginContextName=" + loginContextName +<a name="line.288"></a>
+<span class="sourceLineNo">289</span>               " principal=" + principal + " useTicketCache=" + useTicketCache +<a name="line.289"></a>
+<span class="sourceLineNo">290</span>               " keytabFile=" + keytabFile);<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    }<a name="line.291"></a>
+<span class="sourceLineNo">292</span><a name="line.292"></a>
+<span class="sourceLineNo">293</span>    @Override<a name="line.293"></a>
+<span class="sourceLineNo">294</span>    public AppConfigurationEntry[] getAppConfigurationEntry(String appName) {<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      if (loginContextName.equals(appName)) {<a name="line.295"></a>
+<span class="sourceLineNo">296</span>        if (!useTicketCache) {<a name="line.296"></a>
+<span class="sourceLineNo">297</span>          KEYTAB_KERBEROS_OPTIONS.put("keyTab", keytabFile);<a name="line.297"></a>
+<span class="sourceLineNo">298</span>          KEYTAB_KERBEROS_OPTIONS.put("useKeyTab", "true");<a name="line.298"></a>
+<span class="sourceLineNo">299</span>        }<a name="line.299"></a>
+<span class="sourceLineNo">300</span>        KEYTAB_KERBEROS_OPTIONS.put("principal", principal);<a name="line.300"></a>
+<span class="sourceLineNo">301</span>        KEYTAB_KERBEROS_OPTIONS.put("useTicketCache", useTicketCache ? "true" : "false");<a name="line.301"></a>
+<span class="sourceLineNo">302</span>        return KEYTAB_KERBEROS_CONF;<a name="line.302"></a>
+<span class="sourceLineNo">303</span>      }<a name="line.303"></a>
+<span class="sourceLineNo">304</span><a name="line.304"></a>
+<span class="sourceLineNo">305</span>      if (baseConfig != null) {<a name="line.305"></a>
+<span class="sourceLineNo">306</span>        return baseConfig.getAppConfigurationEntry(appName);<a name="line.306"></a>
+<span class="sourceLineNo">307</span>      }<a name="line.307"></a>
+<span class="sourceLineNo">308</span><a name="line.308"></a>
+<span class="sourceLineNo">309</span>      return(null);<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><a name="line.312"></a>
+<span class="sourceLineNo">313</span>  //<a name="line.313"></a>
+<span class="sourceLineNo">314</span>  // Helper methods<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>   * Get the name of the current node from the specified fully-qualified path.<a name="line.317"></a>
-<span class="sourceLineNo">318</span>   * @param path fully-qualified path<a name="line.318"></a>
-<span class="sourceLineNo">319</span>   * @return name of the current node<a name="line.319"></a>
+<span class="sourceLineNo">317</span>   * Returns the full path of the immediate parent of the specified node.<a name="line.317"></a>
+<span class="sourceLineNo">318</span>   * @param node path to get parent of<a name="line.318"></a>
+<span class="sourceLineNo">319</span>   * @return parent of path, null if passed the root node or an invalid node<a name="line.319"></a>
 <span class="sourceLineNo">320</span>   */<a name="line.320"></a>
-<span class="sourceLineNo">321</span>  public static String getNodeName(String path) {<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    return path.substring(path.lastIndexOf("/")+1);<a name="line.322"></a>
-<span class="sourceLineNo">323</span>  }<a name="line.323"></a>
-<span class="sourceLineNo">324</span><a name="line.324"></a>
-<span class="sourceLineNo">325</span>  //<a name="line.325"></a>
-<span class="sourceLineNo">326</span>  // Existence checks and watches<a name="line.326"></a>
-<span class="sourceLineNo">327</span>  //<a name="line.327"></a>
-<span class="sourceLineNo">328</span><a name="line.328"></a>
-<span class="sourceLineNo">329</span>  /**<a name="line.329"></a>
-<span class="sourceLineNo">330</span>   * Watch the specified znode for delete/create/change events.  The watcher is<a name="line.330"></a>
-<span class="sourceLineNo">331</span>   * set whether or not the node exists.  If the node already exists, the method<a name="line.331"></a>
-<span class="sourceLineNo">332</span>   * returns true.  If the node does not exist, the method returns false.<a name="line.332"></a>
-<span class="sourceLineNo">333</span>   *<a name="line.333"></a>
-<span class="sourceLineNo">334</span>   * @param zkw zk reference<a name="line.334"></a>
-<span class="sourceLineNo">335</span>   * @param znode path of node to watch<a name="line.335"></a>
-<span class="sourceLineNo">336</span>   * @return true if znode exists, false if does not exist or error<a name="line.336"></a>
-<span class="sourceLineNo">337</span>   * @throws KeeperException if unexpected zookeeper exception<a name="line.337"></a>
-<span class="sourceLineNo">338</span>   */<a name="line.338"></a>
-<span class="sourceLineNo">339</span>  public static boolean watchAndCheckExists(ZKWatcher zkw, String znode)<a name="line.339"></a>
-<span class="sourceLineNo">340</span>  throws KeeperException {<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    try {<a name="line.341"></a>
-<span class="sourceLineNo">342</span>      Stat s = zkw.getRecoverableZooKeeper().exists(znode, zkw);<a name="line.342"></a>
-<span class="sourceLineNo">343</span>      boolean exists = s != null ? true : false;<a name="line.343"></a>
-<span class="sourceLineNo">344</span>      if (exists) {<a name="line.344"></a>
-<span class="sourceLineNo">345</span>        LOG.debug(zkw.prefix("Set watcher on existing znode=" + znode));<a name="line.345"></a>
-<span class="sourceLineNo">346</span>      } else {<a name="line.346"></a>
-<span class="sourceLineNo">347</span>        LOG.debug(zkw.prefix("Set watcher on znode that does not yet exist, " + znode));<a name="line.347"></a>
-<span class="sourceLineNo">348</span>      }<a name="line.348"></a>
-<span class="sourceLineNo">349</span>      return exists;<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    } catch (KeeperException e) {<a name="line.350"></a>
-<span class="sourceLineNo">351</span>      LOG.warn(zkw.prefix("Unable to set watcher on znode " + znode), e);<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      zkw.keeperException(e);<a name="line.352"></a>
-<span class="sourceLineNo">353</span>      return false;<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    } catch (InterruptedException e) {<a name="line.354"></a>
-<span class="sourceLineNo">355</span>      LOG.warn(zkw.prefix("Unable to set watcher on znode " + znode), e);<a name="line.355"></a>
-<span class="sourceLineNo">356</span>      zkw.interruptedException(e);<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      return false;<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    }<a name="line.358"></a>
-<span class="sourceLineNo">359</span>  }<a name="line.359"></a>
-<span class="sourceLineNo">360</span><a name="line.360"></a>
-<span class="sourceLineNo">361</span>  /**<a name="line.361"></a>
-<span class="sourceLineNo">362</span>   * Watch the specified znode, but only if exists. Useful when watching<a name="line.362"></a>
-<span class="sourceLineNo">363</span>   * for deletions. Uses .getData() (and handles NoNodeException) instead<a name="line.363"></a>
-<span class="sourceLineNo">364</span>   * of .exists() to accomplish this, as .getData() will only set a watch if<a name="line.364"></a>
-<span class="sourceLineNo">365</span>   * the znode exists.<a name="line.365"></a>
-<span class="sourceLineNo">366</span>   * @param zkw zk reference<a name="line.366"></a>
-<span class="sourceLineNo">367</span>   * @param znode path of node to watch<a name="line.367"></a>
-<span class="sourceLineNo">368</span>   * @return true if the watch is set, false if node does not exists<a name="line.368"></a>
-<span class="sourceLineNo">369</span>   * @throws KeeperException if unexpected zookeeper exception<a name="line.369"></a>
-<span class="sourceLineNo">370</span>   */<a name="line.370"></a>
-<span class="sourceLineNo">371</span>  public static boolean setWatchIfNodeExists(ZKWatcher zkw, String znode)<a name="line.371"></a>
-<span class="sourceLineNo">372</span>      throws KeeperException {<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    try {<a name="line.373"></a>
-<span class="sourceLineNo">374</span>      zkw.getRecoverableZooKeeper().getData(znode, true, null);<a name="line.374"></a>
-<span class="sourceLineNo">375</span>      return true;<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    } catch (NoNodeException e) {<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      return false;<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    } catch (InterruptedException e) {<a name="line.378"></a>
-<span class="sourceLineNo">379</span>      LOG.warn(zkw.prefix("Unable to set watcher on znode " + znode), e);<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      zkw.interruptedException(e);<a name="line.380"></a>
-<span class="sourceLineNo">381</span>      return false;<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>   * Check if the specified node exists.  Sets no watches.<a name="line.386"></a>
-<span class="sourceLineNo">387</span>   *<a name="line.387"></a>
-<span class="sourceLineNo">388</span>   * @param zkw zk reference<a name="line.388"></a>
-<span class="sourceLineNo">389</span>   * @param znode path of node to watch<a name="line.389"></a>
-<span class="sourceLineNo">390</span>   * @return version of the node if it exists, -1 if does not exist<a name="line.390"></a>
-<span class="sourceLineNo">391</span>   * @throws KeeperException if unexpected zookeeper exception<a name="line.391"></a>
-<span class="sourceLineNo">392</span>   */<a name="line.392"></a>
-<span class="sourceLineNo">393</span>  public static int checkExists(ZKWatcher zkw, String znode)<a name="line.393"></a>
-<span class="sourceLineNo">394</span>  throws KeeperException {<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    try {<a name="line.395"></a>
-<span class="sourceLineNo">396</span>      Stat s = zkw.getRecoverableZooKeeper().exists(znode, null);<a name="line.396"></a>
-<span class="sourceLineNo">397</span>      return s != null ? s.getVersion() : -1;<a name="line.397"></a>
-<span class="sourceLineNo">398</span>    } catch (KeeperException e) {<a name="line.398"></a>
-<span class="sourceLineNo">399</span>      LOG.warn(zkw.prefix("Unable to set watcher on znode (" + znode + ")"), e);<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      zkw.keeperException(e);<a name="line.400"></a>
-<span class="sourceLineNo">401</span>      return -1;<a name="line.401"></a>
-<span class="sourceLineNo">402</span>    } catch (InterruptedException e) {<a name="line.402"></a>
-<span class="sourceLineNo">403</span>      LOG.warn(zkw.prefix("Unable to set watcher on znode (" + znode + ")"), e);<a name="line.403"></a>
-<span class="sourceLineNo">404</span>      zkw.interruptedException(e);<a name="line.404"></a>
-<span class="sourceLineNo">405</span>      return -1;<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    }<a name="line.406"></a>
-<span class="sourceLineNo">407</span>  }<a name="line.407"></a>
-<span class="sourceLineNo">408</span><a name="line.408"></a>
-<span class="sourceLineNo">409</span>  //<a name="line.409"></a>
-<span class="sourceLineNo">410</span>  // Znode listings<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>   * Lists the children znodes of the specified znode.  Also sets a watch on<a name="line.414"></a>
-<span class="sourceLineNo">415</span>   * the specified znode which will capture a NodeDeleted event on the specified<a name="line.415"></a>
-<span class="sourceLineNo">416</span>   * znode as well as NodeChildrenChanged if any children of the specified znode<a name="line.416"></a>
-<span class="sourceLineNo">417</span>   * are created or deleted.<a name="line.417"></a>
-<span class="sourceLineNo">418</span>   *<a name="line.418"></a>
-<span class="sourceLineNo">419</span>   * Returns null if the specified node does not exist.  Otherwise returns a<a name="line.419"></a>
-<span class="sourceLineNo">420</span>   * list of children of the specified node.  If the node exists but it has no<a name="line.420"></a>
-<span class="sourceLineNo">421</span>   * children, an empty list will be returned.<a name="line.421"></a>
-<span class="sourceLineNo">422</span>   *<a name="line.422"></a>
-<span class="sourceLineNo">423</span>   * @param zkw zk reference<a name="line.423"></a>
-<span class="sourceLineNo">424</span>   * @param znode path of node to list and watch children of<a name="line.424"></a>
-<span class="sourceLineNo">425</span>   * @return list of children of the specified node, an empty list if the node<a name="line.425"></a>
-<span class="sourceLineNo">426</span>   *          exists but has no children, and null if the node does not exist<a name="line.426"></a>
-<span class="sourceLineNo">427</span>   * @throws KeeperException if unexpected zookeeper exception<a name="line.427"></a>
-<span class="sourceLineNo">428</span>   */<a name="line.428"></a>
-<span class="sourceLineNo">429</span>  public static List&lt;String&gt; listChildrenAndWatchForNewChildren(<a name="line.429"></a>
-<span class="sourceLineNo">430</span>          ZKWatcher zkw, String znode)<a name="line.430"></a>
-<span class="sourceLineNo">431</span>  throws KeeperException {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>    try {<a name="line.432"></a>
-<span class="sourceLineNo">433</span>      List&lt;String&gt; children = zkw.getRecoverableZooKeeper().getChildren(znode, zkw);<a name="line.433"></a>
-<span class="sourceLineNo">434</span>      return children;<a name="line.434"></a>
-<span class="sourceLineNo">435</span>    } catch(KeeperException.NoNodeException ke) {<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      LOG.debug(zkw.prefix("Unable to list children of znode " + znode + " " +<a name="line.436"></a>
-<span class="sourceLineNo">437</span>          "because node does not exist (not an error)"));<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      return null;<a name="line.438"></a>
-<span class="sourceLineNo">439</span>    } catch (KeeperException e) {<a name="line.439"></a>
-<span class="sourceLineNo">440</span>      LOG.warn(zkw.prefix("Unable to list children of znode " + znode + " "), e);<a name="line.440"></a>
-<span class="sourceLineNo">441</span>      zkw.keeperException(e);<a name="line.441"></a>
-<span class="sourceLineNo">442</span>      return null;<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    } catch (InterruptedException e) {<a name="line.443"></a>
-<span class="sourceLineNo">444</span>      LOG.warn(zkw.prefix("Unable to list children of znode " + znode + " "), e);<a name="line.444"></a>
-<span class="sourceLineNo">445</span>      zkw.interruptedException(e);<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      return null;<a name="line.446"></a>
-<span class="sourceLineNo">447</span>    }<a name="line.447"></a>
-<span class="sourceLineNo">448</span>  }<a name="line.448"></a>
-<span class="sourceLineNo">449</span><a name="line.449"></a>
-<span class="sourceLineNo">450</span>  /**<a name="line.450"></a>
-<span class="sourceLineNo">451</span>   * List all the children of the specified znode, setting a watch for children<a name="line.451"></a>
-<span class="sourceLineNo">452</span>   * changes and also setting a watch on every individual child in order to get<a name="line.452"></a>
-<span class="sourceLineNo">453</span>   * the NodeCreated and NodeDeleted events.<a name="line.453"></a>
-<span class="sourceLineNo">454</span>   * @param zkw zookeeper reference<a name="line.454"></a>
-<span class="sourceLineNo">455</span>   * @param znode node to get children of and watch<a name="line.455"></a>
-<span class="sourceLineNo">456</span>   * @return list of znode names, null if the node doesn't exist<a name="line.456"></a>
-<span class="sourceLineNo">457</span>   * @throws KeeperException<a name="line.457"></a>
-<span class="sourceLineNo">458</span>   */<a name="line.458"></a>
-<span class="sourceLineNo">459</span>  public static List&lt;String&gt; listChildrenAndWatchThem(ZKWatcher zkw,<a name="line.459"></a>
-<span class="sourceLineNo">460</span>      String znode) throws KeeperException {<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    List&lt;String&gt; children = listChildrenAndWatchForNewChildren(zkw, znode);<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    if (children == null) {<a name="line.462"></a>
-<span class="sourceLineNo">463</span>      return null;<a name="line.463"></a>
-<span class="sourceLineNo">464</span>    }<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    for (String child : children) {<a name="line.465"></a>
-<span class="sourceLineNo">466</span>      watchAndCheckExists(zkw, ZNodePaths.joinZNode(znode, child));<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    }<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    return children;<a name="line.468"></a>
-<span class="sourceLineNo">469</span>  }<a name="line.469"></a>
-<span class="sourceLineNo">470</span><a name="line.470"></a>
-<span class="sourceLineNo">471</span>  /**<a name="line.471"></a>
-<span class="sourceLineNo">472</span>   * Lists the children of the specified znode without setting any watches.<a name="line.472"></a>
-<span class="sourceLineNo">473</span>   *<a name="line.473"></a>
-<span class="sourceLineNo">474</span>   * Sets no watches at all, this method is best effort.<a name="line.474"></a>
-<span class="sourceLineNo">475</span>   *<a name="line.475"></a>
-<span class="sourceLineNo">476</span>   * Returns an empty list if the node has no children.  Returns null if the<a name="line.476"></a>
-<span class="sourceLineNo">477</span>   * parent node itself does not exist.<a name="line.477"></a>
-<span class="sourceLineNo">478</span>   *<a name="line.478"></a>
-<span class="sourceLineNo">479</span>   * @param zkw zookeeper reference<a name="line.479"></a>
-<span class="sourceLineNo">480</span>   * @param znode node to get children<a name="line.480"></a>
-<span class="sourceLineNo">481</span>   * @return list of data of children of specified znode, empty if no children,<a name="line.481"></a>
-<span class="sourceLineNo">482</span>   *         null if parent does not exist<a name="line.482"></a>
-<span class="sourceLineNo">483</span>   * @throws KeeperException if unexpected zookeeper exception<a name="line.483"></a>
-<span class="sourceLineNo">484</span>   */<a name="line.484"></a>
-<span class="sourceLineNo">485</span>  public static List&lt;String&gt; listChildrenNoWatch(ZKWatcher zkw, String znode)<a name="line.485"></a>
-<span class="sourceLineNo">486</span>  throws KeeperException {<a name="line.486"></a>
-<span class="sourceLineNo">487</span>    List&lt;String&gt; children = null;<a name="line.487"></a>
-<span class="sourceLineNo">488</span>    try {<a name="line.488"></a>
-<span class="sourceLineNo">489</span>      // List the children without watching<a name="line.489"></a>
-<span class="sourceLineNo">490</span>      children = zkw.getRecoverableZooKeeper().getChildren(znode, null);<a name="line.490"></a>
-<span class="sourceLineNo">491</span>    } catch(KeeperException.NoNodeException nne) {<a name="line.491"></a>
-<span class="sourceLineNo">492</span>      return null;<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    } catch(InterruptedException ie) {<a name="line.493"></a>
-<span class="sourceLineNo">494</span>      zkw.interruptedException(ie);<a name="line.494"></a>
-<span class="sourceLineNo">495</span>    }<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    return children;<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>   * Simple class to hold a node path and node data.<a name="line.500"></a>
-<span class="sourceLineNo">501</span>   * @deprecated Unused<a name="line.501"></a>
-<span class="sourceLineNo">502</span>   */<a name="line.502"></a>
-<span class="sourceLineNo">503</span>  @Deprecated<a name="line.503"></a>
-<span class="sourceLineNo">504</span>  public static class NodeAndData {<a name="line.504"></a>
-<span class="sourceLineNo">505</span>    private String node;<a name="line.505"></a>
-<span class="sourceLineNo">506</span>    private byte [] data;<a name="line.506"></a>
-<span class="sourceLineNo">507</span>    public NodeAndData(String node, byte [] data) {<a name="line.507"></a>
-<span class="sourceLineNo">508</span>      this.node = node;<a name="line.508"></a>
-<span class="sourceLineNo">509</span>      this.data = data;<a name="line.509"></a>
-<span class="sourceLineNo">510</span>    }<a name="line.510"></a>
-<span class="sourceLineNo">511</span>    public String getNode() {<a name="line.511"></a>
-<span class="sourceLineNo">512</span>      return node;<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    }<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    public byte [] getData() {<a name="line.514"></a>
-<span class="sourceLineNo">515</span>      return data;<a name="line.515"></a>
-<span class="sourceLineNo">516</span>    }<a name="line.516"></a>
-<span class="sourceLineNo">517</span>    @Override<a name="line.517"></a>
-<span class="sourceLineNo">518</span>    public String toString() {<a name="line.518"></a>
-<span class="sourceLineNo">519</span>      return node;<a name="line.519"></a>
+<span class="sourceLineNo">321</span>  public static String getParent(String node) {<a name="line.321"></a>
+<span class="sourceLineNo">322</span>    int idx = node.lastIndexOf(ZNodePaths.ZNODE_PATH_SEPARATOR);<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    return idx &lt;= 0 ? null : node.substring(0, idx);<a name="line.323"></a>
+<span class="sourceLineNo">324</span>  }<a name="line.324"></a>
+<span class="sourceLineNo">325</span><a name="line.325"></a>
+<span class="sourceLineNo">326</span>  /**<a name="line.326"></a>
+<span class="sourceLineNo">327</span>   * Get the name of the current node from the specified fully-qualified path.<a name="line.327"></a>
+<span class="sourceLineNo">328</span>   * @param path fully-qualified path<a name="line.328"></a>
+<span class="sourceLineNo">329</span>   * @return name of the current node<a name="line.329"></a>
+<span class="sourceLineNo">330</span>   */<a name="line.330"></a>
+<span class="sourceLineNo">331</span>  public static String getNodeName(String path) {<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    return path.substring(path.lastIndexOf("/")+1);<a name="line.332"></a>
+<span class="sourceLineNo">333</span>  }<a name="line.333"></a>
+<span class="sourceLineNo">334</span><a name="line.334"></a>
+<span class="sourceLineNo">335</span>  //<a name="line.335"></a>
+<span class="sourceLineNo">336</span>  // Existence checks and watches<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>   * Watch the specified znode for delete/create/change events.  The watcher is<a name="line.340"></a>
+<span class="sourceLineNo">341</span>   * set whether or not the node exists.  If the node already exists, the method<a name="line.341"></a>
+<span class="sourceLineNo">342</span>   * returns true.  If the node does not exist, the method returns false.<a name="line.342"></a>
+<span class="sourceLineNo">343</span>   *<a name="line.343"></a>
+<span class="sourceLineNo">344</span>   * @param zkw zk reference<a name="line.344"></a>
+<span class="sourceLineNo">345</span>   * @param znode path of node to watch<a name="line.345"></a>
+<span class="sourceLineNo">346</span>   * @return true if znode exists, false if does not exist or error<a name="line.346"></a>
+<span class="sourceLineNo">347</span>   * @throws KeeperException if unexpected zookeeper exception<a name="line.347"></a>
+<span class="sourceLineNo">348</span>   */<a name="line.348"></a>
+<span class="sourceLineNo">349</span>  public static boolean watchAndCheckExists(ZKWatcher zkw, String znode)<a name="line.349"></a>
+<span class="sourceLineNo">350</span>  throws KeeperException {<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    try {<a name="line.351"></a>
+<span class="sourceLineNo">352</span>      Stat s = zkw.getRecoverableZooKeeper().exists(znode, zkw);<a name="line.352"></a>
+<span class="sourceLineNo">353</span>      boolean exists = s != null ? true : false;<a name="line.353"></a>
+<span class="sourceLineNo">354</span>      if (exists) {<a name="line.354"></a>
+<span class="sourceLineNo">355</span>        LOG.debug(zkw.prefix("Set watcher on existing znode=" + znode));<a name="line.355"></a>
+<span class="sourceLineNo">356</span>      } else {<a name="line.356"></a>
+<span class="sourceLineNo">357</span>        LOG.debug(zkw.prefix("Set watcher on znode that does not yet exist, " + znode));<a name="line.357"></a>
+<span class="sourceLineNo">358</span>      }<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      return exists;<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    } catch (KeeperException e) {<a name="line.360"></a>
+<span class="sourceLineNo">361</span>      LOG.warn(zkw.prefix("Unable to set watcher on znode " + znode), e);<a name="line.361"></a>
+<span class="sourceLineNo">362</span>      zkw.keeperException(e);<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      return false;<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    } catch (InterruptedException e) {<a name="line.364"></a>
+<span class="sourceLineNo">365</span>      LOG.warn(zkw.prefix("Unable to set watcher on znode " + znode), e);<a name="line.365"></a>
+<span class="sourceLineNo">366</span>      zkw.interruptedException(e);<a name="line.366"></a>
+<span class="sourceLineNo">367</span>      return false;<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>  /**<a name="line.371"></a>
+<span class="sourceLineNo">372</span>   * Watch the specified znode, but only if exists. Useful when watching<a name="line.372"></a>
+<span class="sourceLineNo">373</span>   * for deletions. Uses .getData() (and handles NoNodeException) instead<a name="line.373"></a>
+<span class="sourceLineNo">374</span>   * of .exists() to accomplish this, as .getData() will only set a watch if<a name="line.374"></a>
+<span class="sourceLineNo">375</span>   * the znode exists.<a name="line.375"></a>
+<span class="sourceLineNo">376</span>   * @param zkw zk reference<a name="line.376"></a>
+<span class="sourceLineNo">377</span>   * @param znode path of node to watch<a name="line.377"></a>
+<span class="sourceLineNo">378</span>   * @return true if the watch is set, false if node does not exists<a name="line.378"></a>
+<span class="sourceLineNo">379</span>   * @throws KeeperException if unexpected zookeeper exception<a name="line.379"></a>
+<span class="sourceLineNo">380</span>   */<a name="line.380"></a>
+<span class="sourceLineNo">381</span>  public static boolean setWatchIfNodeExists(ZKWatcher zkw, String znode)<a name="line.381"></a>
+<span class="sourceLineNo">382</span>      throws KeeperException {<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    try {<a name="line.383"></a>
+<span class="sourceLineNo">384</span>      zkw.getRecoverableZooKeeper().getData(znode, true, null);<a name="line.384"></a>
+<span class="sourceLineNo">385</span>      return true;<a name="line.385"></a>
+<span class="sourceLineNo">386</span>    } catch (NoNodeException e) {<a name="line.386"></a>
+<span class="sourceLineNo">387</span>      return false;<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    } catch (InterruptedException e) {<a name="line.388"></a>
+<span class="sourceLineNo">389</span>      LOG.warn(zkw.prefix("Unable to set watcher on znode " + znode), e);<a name="line.389"></a>
+<span class="sourceLineNo">390</span>      zkw.interruptedException(e);<a name="line.390"></a>
+<span class="sourceLineNo">391</span>      return false;<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">395</span>  /**<a name="line.395"></a>
+<span class="sourceLineNo">396</span>   * Check if the specified node exists.  Sets no watches.<a name="line.396"></a>
+<span class="sourceLineNo">397</span>   *<a name="line.397"></a>
+<span class="sourceLineNo">398</span>   * @param zkw zk reference<a name="line.398"></a>
+<span class="sourceLineNo">399</span>   * @param znode path of node to watch<a name="line.399"></a>
+<span class="sourceLineNo">400</span>   * @return version of the node if it exists, -1 if does not exist<a name="line.400"></a>
+<span class="sourceLineNo">401</span>   * @throws KeeperException if unexpected zookeeper exception<a name="line.401"></a>
+<span class="sourceLineNo">402</span>   */<a name="line.402"></a>
+<span class="sourceLineNo">403</span>  public static int checkExists(ZKWatcher zkw, String znode)<a name="line.403"></a>
+<span class="sourceLineNo">404</span>  throws KeeperException {<a name="line.404"></a>
+<span class="sourceLineNo">405</span>    try {<a name="line.405"></a>
+<span class="sourceLineNo">406</span>      Stat s = zkw.getRecoverableZooKeeper().exists(znode, null);<a name="line.406"></a>
+<span class="sourceLineNo">407</span>      return s != null ? s.getVersion() : -1;<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    } catch (KeeperException e) {<a name="line.408"></a>
+<span class="sourceLineNo">409</span>      LOG.warn(zkw.prefix("Unable to set watcher on znode (" + znode + ")"), e);<a name="line.409"></a>
+<span class="sourceLineNo">410</span>      zkw.keeperException(e);<a name="line.410"></a>
+<span class="sourceLineNo">411</span>      return -1;<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    } catch (InterruptedException e) {<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      LOG.warn(zkw.prefix("Unable to set watcher on znode (" + znode + ")"), e);<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      zkw.interruptedException(e);<a name="line.414"></a>
+<span class="sourceLineNo">415</span>      return -1;<a name="line.415"></a>
+<span class="sourceLineNo">416</span>    }<a name="line.416"></a>
+<span class="sourceLineNo">417</span>  }<a name="line.417"></a>
+<span class="sourceLineNo">418</span><a name="line.418"></a>
+<span class="sourceLineNo">419</span>  //<a name="line.419"></a>
+<span class="sourceLineNo">420</span>  // Znode listings<a name="line.420"></a>
+<span class="sourceLineNo">421</span>  //<a name="line.421"></a>
+<span class="sourceLineNo">422</span><a name="line.422"></a>
+<span class="sourceLineNo">423</span>  /**<a name="line.423"></a>
+<span class="sourceLineNo">424</span>   * Lists the children znodes of the specified znode.  Also sets a watch on<a name="line.424"></a>
+<span class="sourceLineNo">425</span>   * the specified znode which will capture a NodeDeleted event on the specified<a name="line.425"></a>
+<span class="sourceLineNo">426</span>   * znode as well as NodeChildrenChanged if any children of the specified znode<a name="line.426"></a>
+<span class="sourceLineNo">427</span>   * are created or deleted.<a name="line.427"></a>
+<span class="sourceLineNo">428</span>   *<a name="line.428"></a>
+<span class="sourceLineNo">429</span>   * Returns null if the specified node does not exist.  Otherwise returns a<a name="line.429"></a>
+<span class="sourceLineNo">430</span>   * list of children of the specified node.  If the node exists but it has no<a name="line.430"></a>
+<span class="sourceLineNo">431</span>   * children, an empty list will be returned.<a name="line.431"></a>
+<span class="sourceLineNo">432</span>   *<a name="line.432"></a>
+<span class="sourceLineNo">433</span>   * @param zkw zk reference<a name="line.433"></a>
+<span class="sourceLineNo">434</span>   * @param znode path of node to list and watch children of<a name="line.434"></a>
+<span class="sourceLineNo">435</span>   * @return list of children of the specified node, an empty list if the node<a name="line.435"></a>
+<span class="sourceLineNo">436</span>   *          exists but has no children, and null if the node does not exist<a name="line.436"></a>
+<span class="sourceLineNo">437</span>   * @throws KeeperException if unexpected zookeeper exception<a name="line.437"></a>
+<span class="sourceLineNo">438</span>   */<a name="line.438"></a>
+<span class="sourceLineNo">439</span>  public static List&lt;String&gt; listChildrenAndWatchForNewChildren(<a name="line.439"></a>
+<span class="sourceLineNo">440</span>          ZKWatcher zkw, String znode)<a name="line.440"></a>
+<span class="sourceLineNo">441</span>  throws KeeperException {<a name="line.441"></a>
+<span class="sourceLineNo">442</span>    try {<a name="line.442"></a>
+<span class="sourceLineNo">443</span>      List&lt;String&gt; children = zkw.getRecoverableZooKeeper().getChildren(znode, zkw);<a name="line.443"></a>
+<span class="sourceLineNo">444</span>      return children;<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    } catch(KeeperException.NoNodeException ke) {<a name="line.445"></a>
+<span class="sourceLineNo">446</span>      LOG.debug(zkw.prefix("Unable to list children of znode " + znode + " " +<a name="line.446"></a>
+<span class="sourceLineNo">447</span>          "because node does not exist (not an error)"));<a name="line.447"></a>
+<span class="sourceLineNo">448</span>      return null;<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    } catch (KeeperException e) {<a name="line.449"></a>
+<span class="sourceLineNo">450</span>      LOG.warn(zkw.prefix("Unable to list children of znode " + znode + " "), e);<a name="line.450"></a>
+<span class="sourceLineNo">451</span>      zkw.keeperException(e);<a name="line.451"></a>
+<span class="sourceLineNo">452</span>      return null;<a name="line.452"></a>
+<span class="sourceLineNo">453</span>    } catch (InterruptedException e) {<a name="line.453"></a>
+<span class="sourceLineNo">454</span>      LOG.warn(zkw.prefix("Unable to list children of znode " + znode + " "), e);<a name="line.454"></a>
+<span class="sourceLineNo">45

<TRUNCATED>

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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/48bd3915/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.html b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.html
index 81f531b..04be024 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.html
@@ -53,2036 +53,2078 @@
 <span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.AuthUtil;<a name="line.45"></a>
 <span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.46"></a>
 <span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.HConstants;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.security.Superusers;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.shaded.com.google.protobuf.InvalidProtocolBufferException;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil.ZKUtilOp.CreateAndFailSilent;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil.ZKUtilOp.DeleteNodeFailSilent;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil.ZKUtilOp.SetData;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.security.SecurityUtil;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.security.UserGroupInformation;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.security.authentication.util.KerberosUtil;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.zookeeper.AsyncCallback;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.zookeeper.CreateMode;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.zookeeper.KeeperException;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.zookeeper.KeeperException.NoNodeException;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.zookeeper.Op;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.zookeeper.Watcher;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.zookeeper.ZooDefs.Ids;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.zookeeper.ZooDefs.Perms;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.zookeeper.ZooKeeper;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.zookeeper.client.ZooKeeperSaslClient;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.zookeeper.data.ACL;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.zookeeper.data.Id;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.zookeeper.data.Stat;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.zookeeper.proto.CreateRequest;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.zookeeper.proto.DeleteRequest;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.zookeeper.proto.SetDataRequest;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.zookeeper.server.ZooKeeperSaslServer;<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> * Internal HBase utility class for ZooKeeper.<a name="line.81"></a>
-<span class="sourceLineNo">082</span> *<a name="line.82"></a>
-<span class="sourceLineNo">083</span> * &lt;p&gt;Contains only static methods and constants.<a name="line.83"></a>
-<span class="sourceLineNo">084</span> *<a name="line.84"></a>
-<span class="sourceLineNo">085</span> * &lt;p&gt;Methods all throw {@link KeeperException} if there is an unexpected<a name="line.85"></a>
-<span class="sourceLineNo">086</span> * zookeeper exception, so callers of these methods must handle appropriately.<a name="line.86"></a>
-<span class="sourceLineNo">087</span> * If ZK is required for the operation, the server will need to be aborted.<a name="line.87"></a>
-<span class="sourceLineNo">088</span> */<a name="line.88"></a>
-<span class="sourceLineNo">089</span>@InterfaceAudience.Private<a name="line.89"></a>
-<span class="sourceLineNo">090</span>public class ZKUtil {<a name="line.90"></a>
-<span class="sourceLineNo">091</span>  private static final Log LOG = LogFactory.getLog(ZKUtil.class);<a name="line.91"></a>
-<span class="sourceLineNo">092</span><a name="line.92"></a>
-<span class="sourceLineNo">093</span>  private static int zkDumpConnectionTimeOut;<a name="line.93"></a>
-<span class="sourceLineNo">094</span><a name="line.94"></a>
-<span class="sourceLineNo">095</span>  /**<a name="line.95"></a>
-<span class="sourceLineNo">096</span>   * Creates a new connection to ZooKeeper, pulling settings and ensemble config<a name="line.96"></a>
-<span class="sourceLineNo">097</span>   * from the specified configuration object using methods from {@link ZKConfig}.<a name="line.97"></a>
-<span class="sourceLineNo">098</span>   *<a name="line.98"></a>
-<span class="sourceLineNo">099</span>   * Sets the connection status monitoring watcher to the specified watcher.<a name="line.99"></a>
-<span class="sourceLineNo">100</span>   *<a name="line.100"></a>
-<span class="sourceLineNo">101</span>   * @param conf configuration to pull ensemble and other settings from<a name="line.101"></a>
-<span class="sourceLineNo">102</span>   * @param watcher watcher to monitor connection changes<a name="line.102"></a>
-<span class="sourceLineNo">103</span>   * @return connection to zookeeper<a name="line.103"></a>
-<span class="sourceLineNo">104</span>   * @throws IOException if unable to connect to zk or config problem<a name="line.104"></a>
-<span class="sourceLineNo">105</span>   */<a name="line.105"></a>
-<span class="sourceLineNo">106</span>  public static RecoverableZooKeeper connect(Configuration conf, Watcher watcher)<a name="line.106"></a>
-<span class="sourceLineNo">107</span>  throws IOException {<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    String ensemble = ZKConfig.getZKQuorumServersString(conf);<a name="line.108"></a>
-<span class="sourceLineNo">109</span>    return connect(conf, ensemble, watcher);<a name="line.109"></a>
-<span class="sourceLineNo">110</span>  }<a name="line.110"></a>
-<span class="sourceLineNo">111</span><a name="line.111"></a>
-<span class="sourceLineNo">112</span>  public static RecoverableZooKeeper connect(Configuration conf, String ensemble,<a name="line.112"></a>
-<span class="sourceLineNo">113</span>      Watcher watcher)<a name="line.113"></a>
-<span class="sourceLineNo">114</span>  throws IOException {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    return connect(conf, ensemble, watcher, null);<a name="line.115"></a>
-<span class="sourceLineNo">116</span>  }<a name="line.116"></a>
-<span class="sourceLineNo">117</span><a name="line.117"></a>
-<span class="sourceLineNo">118</span>  public static RecoverableZooKeeper connect(Configuration conf, String ensemble,<a name="line.118"></a>
-<span class="sourceLineNo">119</span>      Watcher watcher, final String identifier)<a name="line.119"></a>
-<span class="sourceLineNo">120</span>  throws IOException {<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    if(ensemble == null) {<a name="line.121"></a>
-<span class="sourceLineNo">122</span>      throw new IOException("Unable to determine ZooKeeper ensemble");<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    }<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    int timeout = conf.getInt(HConstants.ZK_SESSION_TIMEOUT,<a name="line.124"></a>
-<span class="sourceLineNo">125</span>        HConstants.DEFAULT_ZK_SESSION_TIMEOUT);<a name="line.125"></a>
-<span class="sourceLineNo">126</span>    if (LOG.isTraceEnabled()) {<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      LOG.trace(identifier + " opening connection to ZooKeeper ensemble=" + ensemble);<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    }<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    int retry = conf.getInt("zookeeper.recovery.retry", 3);<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    int retryIntervalMillis =<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      conf.getInt("zookeeper.recovery.retry.intervalmill", 1000);<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    int maxSleepTime = conf.getInt("zookeeper.recovery.retry.maxsleeptime", 60000);<a name="line.132"></a>
-<span class="sourceLineNo">133</span>    zkDumpConnectionTimeOut = conf.getInt("zookeeper.dump.connection.timeout",<a name="line.133"></a>
-<span class="sourceLineNo">134</span>        1000);<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    return new RecoverableZooKeeper(ensemble, timeout, watcher,<a name="line.135"></a>
-<span class="sourceLineNo">136</span>        retry, retryIntervalMillis, maxSleepTime, identifier);<a name="line.136"></a>
-<span class="sourceLineNo">137</span>  }<a name="line.137"></a>
-<span class="sourceLineNo">138</span><a name="line.138"></a>
-<span class="sourceLineNo">139</span>  /**<a name="line.139"></a>
-<span class="sourceLineNo">140</span>   * Log in the current zookeeper server process using the given configuration<a name="line.140"></a>
-<span class="sourceLineNo">141</span>   * keys for the credential file and login principal.<a name="line.141"></a>
-<span class="sourceLineNo">142</span>   *<a name="line.142"></a>
-<span class="sourceLineNo">143</span>   * &lt;p&gt;&lt;strong&gt;This is only applicable when running on secure hbase&lt;/strong&gt;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>   * On regular HBase (without security features), this will safely be ignored.<a name="line.144"></a>
-<span class="sourceLineNo">145</span>   * &lt;/p&gt;<a name="line.145"></a>
+<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.security.Superusers;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil.ZKUtilOp.CreateAndFailSilent;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil.ZKUtilOp.DeleteNodeFailSilent;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil.ZKUtilOp.SetData;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.security.SecurityUtil;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.security.UserGroupInformation;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.security.authentication.util.KerberosUtil;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.zookeeper.AsyncCallback;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.zookeeper.CreateMode;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.zookeeper.KeeperException;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.zookeeper.KeeperException.NoNodeException;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.zookeeper.Op;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.zookeeper.Watcher;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.zookeeper.ZooDefs.Ids;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.zookeeper.ZooDefs.Perms;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.zookeeper.ZooKeeper;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.zookeeper.client.ZooKeeperSaslClient;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.zookeeper.data.ACL;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.zookeeper.data.Id;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.zookeeper.data.Stat;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.zookeeper.proto.CreateRequest;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.zookeeper.proto.DeleteRequest;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.zookeeper.proto.SetDataRequest;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.zookeeper.server.ZooKeeperSaslServer;<a name="line.75"></a>
+<span class="sourceLineNo">076</span><a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.shaded.com.google.protobuf.InvalidProtocolBufferException;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos;<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> * Internal HBase utility class for ZooKeeper.<a name="line.82"></a>
+<span class="sourceLineNo">083</span> *<a name="line.83"></a>
+<span class="sourceLineNo">084</span> * &lt;p&gt;Contains only static methods and constants.<a name="line.84"></a>
+<span class="sourceLineNo">085</span> *<a name="line.85"></a>
+<span class="sourceLineNo">086</span> * &lt;p&gt;Methods all throw {@link KeeperException} if there is an unexpected<a name="line.86"></a>
+<span class="sourceLineNo">087</span> * zookeeper exception, so callers of these methods must handle appropriately.<a name="line.87"></a>
+<span class="sourceLineNo">088</span> * If ZK is required for the operation, the server will need to be aborted.<a name="line.88"></a>
+<span class="sourceLineNo">089</span> */<a name="line.89"></a>
+<span class="sourceLineNo">090</span>@InterfaceAudience.Private<a name="line.90"></a>
+<span class="sourceLineNo">091</span>public final class ZKUtil {<a name="line.91"></a>
+<span class="sourceLineNo">092</span>  private static final Log LOG = LogFactory.getLog(ZKUtil.class);<a name="line.92"></a>
+<span class="sourceLineNo">093</span><a name="line.93"></a>
+<span class="sourceLineNo">094</span>  private static int zkDumpConnectionTimeOut;<a name="line.94"></a>
+<span class="sourceLineNo">095</span><a name="line.95"></a>
+<span class="sourceLineNo">096</span>  private ZKUtil() {<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>   * Creates a new connection to ZooKeeper, pulling settings and ensemble config<a name="line.100"></a>
+<span class="sourceLineNo">101</span>   * from the specified configuration object using methods from {@link ZKConfig}.<a name="line.101"></a>
+<span class="sourceLineNo">102</span>   *<a name="line.102"></a>
+<span class="sourceLineNo">103</span>   * Sets the connection status monitoring watcher to the specified watcher.<a name="line.103"></a>
+<span class="sourceLineNo">104</span>   *<a name="line.104"></a>
+<span class="sourceLineNo">105</span>   * @param conf configuration to pull ensemble and other settings from<a name="line.105"></a>
+<span class="sourceLineNo">106</span>   * @param watcher watcher to monitor connection changes<a name="line.106"></a>
+<span class="sourceLineNo">107</span>   * @return connection to zookeeper<a name="line.107"></a>
+<span class="sourceLineNo">108</span>   * @throws IOException if unable to connect to zk or config problem<a name="line.108"></a>
+<span class="sourceLineNo">109</span>   */<a name="line.109"></a>
+<span class="sourceLineNo">110</span>  public static RecoverableZooKeeper connect(Configuration conf, Watcher watcher)<a name="line.110"></a>
+<span class="sourceLineNo">111</span>  throws IOException {<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    String ensemble = ZKConfig.getZKQuorumServersString(conf);<a name="line.112"></a>
+<span class="sourceLineNo">113</span>    return connect(conf, ensemble, watcher);<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>  public static RecoverableZooKeeper connect(Configuration conf, String ensemble,<a name="line.116"></a>
+<span class="sourceLineNo">117</span>      Watcher watcher)<a name="line.117"></a>
+<span class="sourceLineNo">118</span>  throws IOException {<a name="line.118"></a>
+<span class="sourceLineNo">119</span>    return connect(conf, ensemble, watcher, null);<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>  public static RecoverableZooKeeper connect(Configuration conf, String ensemble,<a name="line.122"></a>
+<span class="sourceLineNo">123</span>      Watcher watcher, final String identifier)<a name="line.123"></a>
+<span class="sourceLineNo">124</span>  throws IOException {<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    if(ensemble == null) {<a name="line.125"></a>
+<span class="sourceLineNo">126</span>      throw new IOException("Unable to determine ZooKeeper ensemble");<a name="line.126"></a>
+<span class="sourceLineNo">127</span>    }<a name="line.127"></a>
+<span class="sourceLineNo">128</span>    int timeout = conf.getInt(HConstants.ZK_SESSION_TIMEOUT,<a name="line.128"></a>
+<span class="sourceLineNo">129</span>        HConstants.DEFAULT_ZK_SESSION_TIMEOUT);<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    if (LOG.isTraceEnabled()) {<a name="line.130"></a>
+<span class="sourceLineNo">131</span>      LOG.trace(identifier + " opening connection to ZooKeeper ensemble=" + ensemble);<a name="line.131"></a>
+<span class="sourceLineNo">132</span>    }<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    int retry = conf.getInt("zookeeper.recovery.retry", 3);<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    int retryIntervalMillis =<a name="line.134"></a>
+<span class="sourceLineNo">135</span>      conf.getInt("zookeeper.recovery.retry.intervalmill", 1000);<a name="line.135"></a>
+<span class="sourceLineNo">136</span>    int maxSleepTime = conf.getInt("zookeeper.recovery.retry.maxsleeptime", 60000);<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    zkDumpConnectionTimeOut = conf.getInt("zookeeper.dump.connection.timeout",<a name="line.137"></a>
+<span class="sourceLineNo">138</span>        1000);<a name="line.138"></a>
+<span class="sourceLineNo">139</span>    return new RecoverableZooKeeper(ensemble, timeout, watcher,<a name="line.139"></a>
+<span class="sourceLineNo">140</span>        retry, retryIntervalMillis, maxSleepTime, identifier);<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>   * Log in the current zookeeper server process using the given configuration<a name="line.144"></a>
+<span class="sourceLineNo">145</span>   * keys for the credential file and login principal.<a name="line.145"></a>
 <span class="sourceLineNo">146</span>   *<a name="line.146"></a>
-<span class="sourceLineNo">147</span>   * @param conf The configuration data to use<a name="line.147"></a>
-<span class="sourceLineNo">148</span>   * @param keytabFileKey Property key used to configure the path to the credential file<a name="line.148"></a>
-<span class="sourceLineNo">149</span>   * @param userNameKey Property key used to configure the login principal<a name="line.149"></a>
-<span class="sourceLineNo">150</span>   * @param hostname Current hostname to use in any credentials<a name="line.150"></a>
-<span class="sourceLineNo">151</span>   * @throws IOException underlying exception from SecurityUtil.login() call<a name="line.151"></a>
-<span class="sourceLineNo">152</span>   */<a name="line.152"></a>
-<span class="sourceLineNo">153</span>  public static void loginServer(Configuration conf, String keytabFileKey,<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      String userNameKey, String hostname) throws IOException {<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    login(conf, keytabFileKey, userNameKey, hostname,<a name="line.155"></a>
-<span class="sourceLineNo">156</span>          ZooKeeperSaslServer.LOGIN_CONTEXT_NAME_KEY,<a name="line.156"></a>
-<span class="sourceLineNo">157</span>          JaasConfiguration.SERVER_KEYTAB_KERBEROS_CONFIG_NAME);<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>  /**<a name="line.160"></a>
-<span class="sourceLineNo">161</span>   * Log in the current zookeeper client using the given configuration<a name="line.161"></a>
-<span class="sourceLineNo">162</span>   * keys for the credential file and login principal.<a name="line.162"></a>
-<span class="sourceLineNo">163</span>   *<a name="line.163"></a>
-<span class="sourceLineNo">164</span>   * &lt;p&gt;&lt;strong&gt;This is only applicable when running on secure hbase&lt;/strong&gt;<a name="line.164"></a>
-<span class="sourceLineNo">165</span>   * On regular HBase (without security features), this will safely be ignored.<a name="line.165"></a>
-<span class="sourceLineNo">166</span>   * &lt;/p&gt;<a name="line.166"></a>
+<span class="sourceLineNo">147</span>   * &lt;p&gt;&lt;strong&gt;This is only applicable when running on secure hbase&lt;/strong&gt;<a name="line.147"></a>
+<span class="sourceLineNo">148</span>   * On regular HBase (without security features), this will safely be ignored.<a name="line.148"></a>
+<span class="sourceLineNo">149</span>   * &lt;/p&gt;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>   *<a name="line.150"></a>
+<span class="sourceLineNo">151</span>   * @param conf The configuration data to use<a name="line.151"></a>
+<span class="sourceLineNo">152</span>   * @param keytabFileKey Property key used to configure the path to the credential file<a name="line.152"></a>
+<span class="sourceLineNo">153</span>   * @param userNameKey Property key used to configure the login principal<a name="line.153"></a>
+<span class="sourceLineNo">154</span>   * @param hostname Current hostname to use in any credentials<a name="line.154"></a>
+<span class="sourceLineNo">155</span>   * @throws IOException underlying exception from SecurityUtil.login() call<a name="line.155"></a>
+<span class="sourceLineNo">156</span>   */<a name="line.156"></a>
+<span class="sourceLineNo">157</span>  public static void loginServer(Configuration conf, String keytabFileKey,<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      String userNameKey, String hostname) throws IOException {<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    login(conf, keytabFileKey, userNameKey, hostname,<a name="line.159"></a>
+<span class="sourceLineNo">160</span>          ZooKeeperSaslServer.LOGIN_CONTEXT_NAME_KEY,<a name="line.160"></a>
+<span class="sourceLineNo">161</span>          JaasConfiguration.SERVER_KEYTAB_KERBEROS_CONFIG_NAME);<a name="line.161"></a>
+<span class="sourceLineNo">162</span>  }<a name="line.162"></a>
+<span class="sourceLineNo">163</span><a name="line.163"></a>
+<span class="sourceLineNo">164</span>  /**<a name="line.164"></a>
+<span class="sourceLineNo">165</span>   * Log in the current zookeeper client using the given configuration<a name="line.165"></a>
+<span class="sourceLineNo">166</span>   * keys for the credential file and login principal.<a name="line.166"></a>
 <span class="sourceLineNo">167</span>   *<a name="line.167"></a>
-<span class="sourceLineNo">168</span>   * @param conf The configuration data to use<a name="line.168"></a>
-<span class="sourceLineNo">169</span>   * @param keytabFileKey Property key used to configure the path to the credential file<a name="line.169"></a>
-<span class="sourceLineNo">170</span>   * @param userNameKey Property key used to configure the login principal<a name="line.170"></a>
-<span class="sourceLineNo">171</span>   * @param hostname Current hostname to use in any credentials<a name="line.171"></a>
-<span class="sourceLineNo">172</span>   * @throws IOException underlying exception from SecurityUtil.login() call<a name="line.172"></a>
-<span class="sourceLineNo">173</span>   */<a name="line.173"></a>
-<span class="sourceLineNo">174</span>  public static void loginClient(Configuration conf, String keytabFileKey,<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      String userNameKey, String hostname) throws IOException {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    login(conf, keytabFileKey, userNameKey, hostname,<a name="line.176"></a>
-<span class="sourceLineNo">177</span>          ZooKeeperSaslClient.LOGIN_CONTEXT_NAME_KEY,<a name="line.177"></a>
-<span class="sourceLineNo">178</span>          JaasConfiguration.CLIENT_KEYTAB_KERBEROS_CONFIG_NAME);<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>   * Log in the current process using the given configuration keys for the<a name="line.182"></a>
-<span class="sourceLineNo">183</span>   * credential file and login principal.<a name="line.183"></a>
-<span class="sourceLineNo">184</span>   *<a name="line.184"></a>
-<span class="sourceLineNo">185</span>   * &lt;p&gt;&lt;strong&gt;This is only applicable when running on secure hbase&lt;/strong&gt;<a name="line.185"></a>
-<span class="sourceLineNo">186</span>   * On regular HBase (without security features), this will safely be ignored.<a name="line.186"></a>
-<span class="sourceLineNo">187</span>   * &lt;/p&gt;<a name="line.187"></a>
+<span class="sourceLineNo">168</span>   * &lt;p&gt;&lt;strong&gt;This is only applicable when running on secure hbase&lt;/strong&gt;<a name="line.168"></a>
+<span class="sourceLineNo">169</span>   * On regular HBase (without security features), this will safely be ignored.<a name="line.169"></a>
+<span class="sourceLineNo">170</span>   * &lt;/p&gt;<a name="line.170"></a>
+<span class="sourceLineNo">171</span>   *<a name="line.171"></a>
+<span class="sourceLineNo">172</span>   * @param conf The configuration data to use<a name="line.172"></a>
+<span class="sourceLineNo">173</span>   * @param keytabFileKey Property key used to configure the path to the credential file<a name="line.173"></a>
+<span class="sourceLineNo">174</span>   * @param userNameKey Property key used to configure the login principal<a name="line.174"></a>
+<span class="sourceLineNo">175</span>   * @param hostname Current hostname to use in any credentials<a name="line.175"></a>
+<span class="sourceLineNo">176</span>   * @throws IOException underlying exception from SecurityUtil.login() call<a name="line.176"></a>
+<span class="sourceLineNo">177</span>   */<a name="line.177"></a>
+<span class="sourceLineNo">178</span>  public static void loginClient(Configuration conf, String keytabFileKey,<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      String userNameKey, String hostname) throws IOException {<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    login(conf, keytabFileKey, userNameKey, hostname,<a name="line.180"></a>
+<span class="sourceLineNo">181</span>          ZooKeeperSaslClient.LOGIN_CONTEXT_NAME_KEY,<a name="line.181"></a>
+<span class="sourceLineNo">182</span>          JaasConfiguration.CLIENT_KEYTAB_KERBEROS_CONFIG_NAME);<a name="line.182"></a>
+<span class="sourceLineNo">183</span>  }<a name="line.183"></a>
+<span class="sourceLineNo">184</span><a name="line.184"></a>
+<span class="sourceLineNo">185</span>  /**<a name="line.185"></a>
+<span class="sourceLineNo">186</span>   * Log in the current process using the given configuration keys for the<a name="line.186"></a>
+<span class="sourceLineNo">187</span>   * credential file and login principal.<a name="line.187"></a>
 <span class="sourceLineNo">188</span>   *<a name="line.188"></a>
-<span class="sourceLineNo">189</span>   * @param conf The configuration data to use<a name="line.189"></a>
-<span class="sourceLineNo">190</span>   * @param keytabFileKey Property key used to configure the path to the credential file<a name="line.190"></a>
-<span class="sourceLineNo">191</span>   * @param userNameKey Property key used to configure the login principal<a name="line.191"></a>
-<span class="sourceLineNo">192</span>   * @param hostname Current hostname to use in any credentials<a name="line.192"></a>
-<span class="sourceLineNo">193</span>   * @param loginContextProperty property name to expose the entry name<a name="line.193"></a>
-<span class="sourceLineNo">194</span>   * @param loginContextName jaas entry name<a name="line.194"></a>
-<span class="sourceLineNo">195</span>   * @throws IOException underlying exception from SecurityUtil.login() call<a name="line.195"></a>
-<span class="sourceLineNo">196</span>   */<a name="line.196"></a>
-<span class="sourceLineNo">197</span>  private static void login(Configuration conf, String keytabFileKey,<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      String userNameKey, String hostname,<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      String loginContextProperty, String loginContextName)<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      throws IOException {<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    if (!isSecureZooKeeper(conf))<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>    // User has specified a jaas.conf, keep this one as the good one.<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    // HBASE_OPTS="-Djava.security.auth.login.config=jaas.conf"<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    if (System.getProperty("java.security.auth.login.config") != null)<a name="line.206"></a>
-<span class="sourceLineNo">207</span>      return;<a name="line.207"></a>
+<span class="sourceLineNo">189</span>   * &lt;p&gt;&lt;strong&gt;This is only applicable when running on secure hbase&lt;/strong&gt;<a name="line.189"></a>
+<span class="sourceLineNo">190</span>   * On regular HBase (without security features), this will safely be ignored.<a name="line.190"></a>
+<span class="sourceLineNo">191</span>   * &lt;/p&gt;<a name="line.191"></a>
+<span class="sourceLineNo">192</span>   *<a name="line.192"></a>
+<span class="sourceLineNo">193</span>   * @param conf The configuration data to use<a name="line.193"></a>
+<span class="sourceLineNo">194</span>   * @param keytabFileKey Property key used to configure the path to the credential file<a name="line.194"></a>
+<span class="sourceLineNo">195</span>   * @param userNameKey Property key used to configure the login principal<a name="line.195"></a>
+<span class="sourceLineNo">196</span>   * @param hostname Current hostname to use in any credentials<a name="line.196"></a>
+<span class="sourceLineNo">197</span>   * @param loginContextProperty property name to expose the entry name<a name="line.197"></a>
+<span class="sourceLineNo">198</span>   * @param loginContextName jaas entry name<a name="line.198"></a>
+<span class="sourceLineNo">199</span>   * @throws IOException underlying exception from SecurityUtil.login() call<a name="line.199"></a>
+<span class="sourceLineNo">200</span>   */<a name="line.200"></a>
+<span class="sourceLineNo">201</span>  private static void login(Configuration conf, String keytabFileKey,<a name="line.201"></a>
+<span class="sourceLineNo">202</span>      String userNameKey, String hostname,<a name="line.202"></a>
+<span class="sourceLineNo">203</span>      String loginContextProperty, String loginContextName)<a name="line.203"></a>
+<span class="sourceLineNo">204</span>      throws IOException {<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    if (!isSecureZooKeeper(conf)) {<a name="line.205"></a>
+<span class="sourceLineNo">206</span>      return;<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    }<a name="line.207"></a>
 <span class="sourceLineNo">208</span><a name="line.208"></a>
-<span class="sourceLineNo">209</span>    // No keytab specified, no auth<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    String keytabFilename = conf.get(keytabFileKey);<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    if (keytabFilename == null) {<a name="line.211"></a>
-<span class="sourceLineNo">212</span>      LOG.warn("no keytab specified for: " + keytabFileKey);<a name="line.212"></a>
-<span class="sourceLineNo">213</span>      return;<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    }<a name="line.214"></a>
-<span class="sourceLineNo">215</span><a name="line.215"></a>
-<span class="sourceLineNo">216</span>    String principalConfig = conf.get(userNameKey, System.getProperty("user.name"));<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    String principalName = SecurityUtil.getServerPrincipal(principalConfig, hostname);<a name="line.217"></a>
-<span class="sourceLineNo">218</span><a name="line.218"></a>
-<span class="sourceLineNo">219</span>    // Initialize the "jaas.conf" for keyTab/principal,<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    // If keyTab is not specified use the Ticket Cache.<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    // and set the zookeeper login context name.<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    JaasConfiguration jaasConf = new JaasConfiguration(loginContextName,<a name="line.222"></a>
-<span class="sourceLineNo">223</span>        principalName, keytabFilename);<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    javax.security.auth.login.Configuration.setConfiguration(jaasConf);<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    System.setProperty(loginContextProperty, loginContextName);<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>  /**<a name="line.228"></a>
-<span class="sourceLineNo">229</span>   * A JAAS configuration that defines the login modules that we want to use for login.<a name="line.229"></a>
-<span class="sourceLineNo">230</span>   */<a name="line.230"></a>
-<span class="sourceLineNo">231</span>  private static class JaasConfiguration extends javax.security.auth.login.Configuration {<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    private static final String SERVER_KEYTAB_KERBEROS_CONFIG_NAME =<a name="line.232"></a>
-<span class="sourceLineNo">233</span>      "zookeeper-server-keytab-kerberos";<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    private static final String CLIENT_KEYTAB_KERBEROS_CONFIG_NAME =<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      "zookeeper-client-keytab-kerberos";<a name="line.235"></a>
-<span class="sourceLineNo">236</span><a name="line.236"></a>
-<span class="sourceLineNo">237</span>    private static final Map&lt;String, String&gt; BASIC_JAAS_OPTIONS = new HashMap&lt;&gt;();<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    static {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>      String jaasEnvVar = System.getenv("HBASE_JAAS_DEBUG");<a name="line.239"></a>
-<span class="sourceLineNo">240</span>      if (jaasEnvVar != null &amp;&amp; "true".equalsIgnoreCase(jaasEnvVar)) {<a name="line.240"></a>
-<span class="sourceLineNo">241</span>        BASIC_JAAS_OPTIONS.put("debug", "true");<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      }<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    }<a name="line.243"></a>
-<span class="sourceLineNo">244</span><a name="line.244"></a>
-<span class="sourceLineNo">245</span>    private static final Map&lt;String,String&gt; KEYTAB_KERBEROS_OPTIONS = new HashMap&lt;&gt;();<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    static {<a name="line.246"></a>
-<span class="sourceLineNo">247</span>      KEYTAB_KERBEROS_OPTIONS.put("doNotPrompt", "true");<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      KEYTAB_KERBEROS_OPTIONS.put("storeKey", "true");<a name="line.248"></a>
-<span class="sourceLineNo">249</span>      KEYTAB_KERBEROS_OPTIONS.put("refreshKrb5Config", "true");<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      KEYTAB_KERBEROS_OPTIONS.putAll(BASIC_JAAS_OPTIONS);<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>    private static final AppConfigurationEntry KEYTAB_KERBEROS_LOGIN =<a name="line.253"></a>
-<span class="sourceLineNo">254</span>      new AppConfigurationEntry(KerberosUtil.getKrb5LoginModuleName(),<a name="line.254"></a>
-<span class="sourceLineNo">255</span>                                LoginModuleControlFlag.REQUIRED,<a name="line.255"></a>
-<span class="sourceLineNo">256</span>                                KEYTAB_KERBEROS_OPTIONS);<a name="line.256"></a>
-<span class="sourceLineNo">257</span><a name="line.257"></a>
-<span class="sourceLineNo">258</span>    private static final AppConfigurationEntry[] KEYTAB_KERBEROS_CONF =<a name="line.258"></a>
-<span class="sourceLineNo">259</span>      new AppConfigurationEntry[]{KEYTAB_KERBEROS_LOGIN};<a name="line.259"></a>
-<span class="sourceLineNo">260</span><a name="line.260"></a>
-<span class="sourceLineNo">261</span>    private javax.security.auth.login.Configuration baseConfig;<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    private final String loginContextName;<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    private final boolean useTicketCache;<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    private final String keytabFile;<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    private final String principal;<a name="line.265"></a>
+<span class="sourceLineNo">209</span>    // User has specified a jaas.conf, keep this one as the good one.<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    // HBASE_OPTS="-Djava.security.auth.login.config=jaas.conf"<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    if (System.getProperty("java.security.auth.login.config") != null) {<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      return;<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>    // No keytab specified, no auth<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    String keytabFilename = conf.get(keytabFileKey);<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    if (keytabFilename == null) {<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      LOG.warn("no keytab specified for: " + keytabFileKey);<a name="line.218"></a>
+<span class="sourceLineNo">219</span>      return;<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    }<a name="line.220"></a>
+<span class="sourceLineNo">221</span><a name="line.221"></a>
+<span class="sourceLineNo">222</span>    String principalConfig = conf.get(userNameKey, System.getProperty("user.name"));<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    String principalName = SecurityUtil.getServerPrincipal(principalConfig, hostname);<a name="line.223"></a>
+<span class="sourceLineNo">224</span><a name="line.224"></a>
+<span class="sourceLineNo">225</span>    // Initialize the "jaas.conf" for keyTab/principal,<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    // If keyTab is not specified use the Ticket Cache.<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    // and set the zookeeper login context name.<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    JaasConfiguration jaasConf = new JaasConfiguration(loginContextName,<a name="line.228"></a>
+<span class="sourceLineNo">229</span>        principalName, keytabFilename);<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    javax.security.auth.login.Configuration.setConfiguration(jaasConf);<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    System.setProperty(loginContextProperty, loginContextName);<a name="line.231"></a>
+<span class="sourceLineNo">232</span>  }<a name="line.232"></a>
+<span class="sourceLineNo">233</span><a name="line.233"></a>
+<span class="sourceLineNo">234</span>  /**<a name="line.234"></a>
+<span class="sourceLineNo">235</span>   * A JAAS configuration that defines the login modules that we want to use for login.<a name="line.235"></a>
+<span class="sourceLineNo">236</span>   */<a name="line.236"></a>
+<span class="sourceLineNo">237</span>  private static class JaasConfiguration extends javax.security.auth.login.Configuration {<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    private static final String SERVER_KEYTAB_KERBEROS_CONFIG_NAME =<a name="line.238"></a>
+<span class="sourceLineNo">239</span>      "zookeeper-server-keytab-kerberos";<a name="line.239"></a>
+<span class="sourceLineNo">240</span>    private static final String CLIENT_KEYTAB_KERBEROS_CONFIG_NAME =<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      "zookeeper-client-keytab-kerberos";<a name="line.241"></a>
+<span class="sourceLineNo">242</span><a name="line.242"></a>
+<span class="sourceLineNo">243</span>    private static final Map&lt;String, String&gt; BASIC_JAAS_OPTIONS = new HashMap&lt;&gt;();<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    static {<a name="line.244"></a>
+<span class="sourceLineNo">245</span>      String jaasEnvVar = System.getenv("HBASE_JAAS_DEBUG");<a name="line.245"></a>
+<span class="sourceLineNo">246</span>      if (jaasEnvVar != null &amp;&amp; "true".equalsIgnoreCase(jaasEnvVar)) {<a name="line.246"></a>
+<span class="sourceLineNo">247</span>        BASIC_JAAS_OPTIONS.put("debug", "true");<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>    private static final Map&lt;String,String&gt; KEYTAB_KERBEROS_OPTIONS = new HashMap&lt;&gt;();<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    static {<a name="line.252"></a>
+<span class="sourceLineNo">253</span>      KEYTAB_KERBEROS_OPTIONS.put("doNotPrompt", "true");<a name="line.253"></a>
+<span class="sourceLineNo">254</span>      KEYTAB_KERBEROS_OPTIONS.put("storeKey", "true");<a name="line.254"></a>
+<span class="sourceLineNo">255</span>      KEYTAB_KERBEROS_OPTIONS.put("refreshKrb5Config", "true");<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      KEYTAB_KERBEROS_OPTIONS.putAll(BASIC_JAAS_OPTIONS);<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    }<a name="line.257"></a>
+<span class="sourceLineNo">258</span><a name="line.258"></a>
+<span class="sourceLineNo">259</span>    private static final AppConfigurationEntry KEYTAB_KERBEROS_LOGIN =<a name="line.259"></a>
+<span class="sourceLineNo">260</span>      new AppConfigurationEntry(KerberosUtil.getKrb5LoginModuleName(),<a name="line.260"></a>
+<span class="sourceLineNo">261</span>                                LoginModuleControlFlag.REQUIRED,<a name="line.261"></a>
+<span class="sourceLineNo">262</span>                                KEYTAB_KERBEROS_OPTIONS);<a name="line.262"></a>
+<span class="sourceLineNo">263</span><a name="line.263"></a>
+<span class="sourceLineNo">264</span>    private static final AppConfigurationEntry[] KEYTAB_KERBEROS_CONF =<a name="line.264"></a>
+<span class="sourceLineNo">265</span>      new AppConfigurationEntry[]{KEYTAB_KERBEROS_LOGIN};<a name="line.265"></a>
 <span class="sourceLineNo">266</span><a name="line.266"></a>
-<span class="sourceLineNo">267</span>    public JaasConfiguration(String loginContextName, String principal, String keytabFile) {<a name="line.267"></a>
-<span class="sourceLineNo">268</span>      this(loginContextName, principal, keytabFile, keytabFile == null || keytabFile.length() == 0);<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>    private JaasConfiguration(String loginContextName, String principal,<a name="line.271"></a>
-<span class="sourceLineNo">272</span>                             String keytabFile, boolean useTicketCache) {<a name="line.272"></a>
-<span class="sourceLineNo">273</span>      try {<a name="line.273"></a>
-<span class="sourceLineNo">274</span>        this.baseConfig = javax.security.auth.login.Configuration.getConfiguration();<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      } catch (SecurityException e) {<a name="line.275"></a>
-<span class="sourceLineNo">276</span>        this.baseConfig = null;<a name="line.276"></a>
-<span class="sourceLineNo">277</span>      }<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      this.loginContextName = loginContextName;<a name="line.278"></a>
-<span class="sourceLineNo">279</span>      this.useTicketCache = useTicketCache;<a name="line.279"></a>
-<span class="sourceLineNo">280</span>      this.keytabFile = keytabFile;<a name="line.280"></a>
-<span class="sourceLineNo">281</span>      this.principal = principal;<a name="line.281"></a>
-<span class="sourceLineNo">282</span>      LOG.info("JaasConfiguration loginContextName=" + loginContextName +<a name="line.282"></a>
-<span class="sourceLineNo">283</span>               " principal=" + principal + " useTicketCache=" + useTicketCache +<a name="line.283"></a>
-<span class="sourceLineNo">284</span>               " keytabFile=" + keytabFile);<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>    @Override<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    public AppConfigurationEntry[] getAppConfigurationEntry(String appName) {<a name="line.288"></a>
-<span class="sourceLineNo">289</span>      if (loginContextName.equals(appName)) {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        if (!useTicketCache) {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>          KEYTAB_KERBEROS_OPTIONS.put("keyTab", keytabFile);<a name="line.291"></a>
-<span class="sourceLineNo">292</span>          KEYTAB_KERBEROS_OPTIONS.put("useKeyTab", "true");<a name="line.292"></a>
-<span class="sourceLineNo">293</span>        }<a name="line.293"></a>
-<span class="sourceLineNo">294</span>        KEYTAB_KERBEROS_OPTIONS.put("principal", principal);<a name="line.294"></a>
-<span class="sourceLineNo">295</span>        KEYTAB_KERBEROS_OPTIONS.put("useTicketCache", useTicketCache ? "true" : "false");<a name="line.295"></a>
-<span class="sourceLineNo">296</span>        return KEYTAB_KERBEROS_CONF;<a name="line.296"></a>
-<span class="sourceLineNo">297</span>      }<a name="line.297"></a>
-<span class="sourceLineNo">298</span>      if (baseConfig != null) return baseConfig.getAppConfigurationEntry(appName);<a name="line.298"></a>
-<span class="sourceLineNo">299</span>      return(null);<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    }<a name="line.300"></a>
-<span class="sourceLineNo">301</span>  }<a name="line.301"></a>
-<span class="sourceLineNo">302</span><a name="line.302"></a>
-<span class="sourceLineNo">303</span>  //<a name="line.303"></a>
-<span class="sourceLineNo">304</span>  // Helper methods<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>   * Returns the full path of the immediate parent of the specified node.<a name="line.307"></a>
-<span class="sourceLineNo">308</span>   * @param node path to get parent of<a name="line.308"></a>
-<span class="sourceLineNo">309</span>   * @return parent of path, null if passed the root node or an invalid node<a name="line.309"></a>
-<span class="sourceLineNo">310</span>   */<a name="line.310"></a>
-<span class="sourceLineNo">311</span>  public static String getParent(String node) {<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    int idx = node.lastIndexOf(ZNodePaths.ZNODE_PATH_SEPARATOR);<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    return idx &lt;= 0 ? null : node.substring(0, idx);<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">267</span>    private javax.security.auth.login.Configuration baseConfig;<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    private final String loginContextName;<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    private final boolean useTicketCache;<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    private final String keytabFile;<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    private final String principal;<a name="line.271"></a>
+<span class="sourceLineNo">272</span><a name="line.272"></a>
+<span class="sourceLineNo">273</span>    public JaasConfiguration(String loginContextName, String principal, String keytabFile) {<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      this(loginContextName, principal, keytabFile, keytabFile == null || keytabFile.length() == 0);<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>    private JaasConfiguration(String loginContextName, String principal,<a name="line.277"></a>
+<span class="sourceLineNo">278</span>                             String keytabFile, boolean useTicketCache) {<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      try {<a name="line.279"></a>
+<span class="sourceLineNo">280</span>        this.baseConfig = javax.security.auth.login.Configuration.getConfiguration();<a name="line.280"></a>
+<span class="sourceLineNo">281</span>      } catch (SecurityException e) {<a name="line.281"></a>
+<span class="sourceLineNo">282</span>        this.baseConfig = null;<a name="line.282"></a>
+<span class="sourceLineNo">283</span>      }<a name="line.283"></a>
+<span class="sourceLineNo">284</span>      this.loginContextName = loginContextName;<a name="line.284"></a>
+<span class="sourceLineNo">285</span>      this.useTicketCache = useTicketCache;<a name="line.285"></a>
+<span class="sourceLineNo">286</span>      this.keytabFile = keytabFile;<a name="line.286"></a>
+<span class="sourceLineNo">287</span>      this.principal = principal;<a name="line.287"></a>
+<span class="sourceLineNo">288</span>      LOG.info("JaasConfiguration loginContextName=" + loginContextName +<a name="line.288"></a>
+<span class="sourceLineNo">289</span>               " principal=" + principal + " useTicketCache=" + useTicketCache +<a name="line.289"></a>
+<span class="sourceLineNo">290</span>               " keytabFile=" + keytabFile);<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    }<a name="line.291"></a>
+<span class="sourceLineNo">292</span><a name="line.292"></a>
+<span class="sourceLineNo">293</span>    @Override<a name="line.293"></a>
+<span class="sourceLineNo">294</span>    public AppConfigurationEntry[] getAppConfigurationEntry(String appName) {<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      if (loginContextName.equals(appName)) {<a name="line.295"></a>
+<span class="sourceLineNo">296</span>        if (!useTicketCache) {<a name="line.296"></a>
+<span class="sourceLineNo">297</span>          KEYTAB_KERBEROS_OPTIONS.put("keyTab", keytabFile);<a name="line.297"></a>
+<span class="sourceLineNo">298</span>          KEYTAB_KERBEROS_OPTIONS.put("useKeyTab", "true");<a name="line.298"></a>
+<span class="sourceLineNo">299</span>        }<a name="line.299"></a>
+<span class="sourceLineNo">300</span>        KEYTAB_KERBEROS_OPTIONS.put("principal", principal);<a name="line.300"></a>
+<span class="sourceLineNo">301</span>        KEYTAB_KERBEROS_OPTIONS.put("useTicketCache", useTicketCache ? "true" : "false");<a name="line.301"></a>
+<span class="sourceLineNo">302</span>        return KEYTAB_KERBEROS_CONF;<a name="line.302"></a>
+<span class="sourceLineNo">303</span>      }<a name="line.303"></a>
+<span class="sourceLineNo">304</span><a name="line.304"></a>
+<span class="sourceLineNo">305</span>      if (baseConfig != null) {<a name="line.305"></a>
+<span class="sourceLineNo">306</span>        return baseConfig.getAppConfigurationEntry(appName);<a name="line.306"></a>
+<span class="sourceLineNo">307</span>      }<a name="line.307"></a>
+<span class="sourceLineNo">308</span><a name="line.308"></a>
+<span class="sourceLineNo">309</span>      return(null);<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><a name="line.312"></a>
+<span class="sourceLineNo">313</span>  //<a name="line.313"></a>
+<span class="sourceLineNo">314</span>  // Helper methods<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>   * Get the name of the current node from the specified fully-qualified path.<a name="line.317"></a>
-<span class="sourceLineNo">318</span>   * @param path fully-qualified path<a name="line.318"></a>
-<span class="sourceLineNo">319</span>   * @return name of the current node<a name="line.319"></a>
+<span class="sourceLineNo">317</span>   * Returns the full path of the immediate parent of the specified node.<a name="line.317"></a>
+<span class="sourceLineNo">318</span>   * @param node path to get parent of<a name="line.318"></a>
+<span class="sourceLineNo">319</span>   * @return parent of path, null if passed the root node or an invalid node<a name="line.319"></a>
 <span class="sourceLineNo">320</span>   */<a name="line.320"></a>
-<span class="sourceLineNo">321</span>  public static String getNodeName(String path) {<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    return path.substring(path.lastIndexOf("/")+1);<a name="line.322"></a>
-<span class="sourceLineNo">323</span>  }<a name="line.323"></a>
-<span class="sourceLineNo">324</span><a name="line.324"></a>
-<span class="sourceLineNo">325</span>  //<a name="line.325"></a>
-<span class="sourceLineNo">326</span>  // Existence checks and watches<a name="line.326"></a>
-<span class="sourceLineNo">327</span>  //<a name="line.327"></a>
-<span class="sourceLineNo">328</span><a name="line.328"></a>
-<span class="sourceLineNo">329</span>  /**<a name="line.329"></a>
-<span class="sourceLineNo">330</span>   * Watch the specified znode for delete/create/change events.  The watcher is<a name="line.330"></a>
-<span class="sourceLineNo">331</span>   * set whether or not the node exists.  If the node already exists, the method<a name="line.331"></a>
-<span class="sourceLineNo">332</span>   * returns true.  If the node does not exist, the method returns false.<a name="line.332"></a>
-<span class="sourceLineNo">333</span>   *<a name="line.333"></a>
-<span class="sourceLineNo">334</span>   * @param zkw zk reference<a name="line.334"></a>
-<span class="sourceLineNo">335</span>   * @param znode path of node to watch<a name="line.335"></a>
-<span class="sourceLineNo">336</span>   * @return true if znode exists, false if does not exist or error<a name="line.336"></a>
-<span class="sourceLineNo">337</span>   * @throws KeeperException if unexpected zookeeper exception<a name="line.337"></a>
-<span class="sourceLineNo">338</span>   */<a name="line.338"></a>
-<span class="sourceLineNo">339</span>  public static boolean watchAndCheckExists(ZKWatcher zkw, String znode)<a name="line.339"></a>
-<span class="sourceLineNo">340</span>  throws KeeperException {<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    try {<a name="line.341"></a>
-<span class="sourceLineNo">342</span>      Stat s = zkw.getRecoverableZooKeeper().exists(znode, zkw);<a name="line.342"></a>
-<span class="sourceLineNo">343</span>      boolean exists = s != null ? true : false;<a name="line.343"></a>
-<span class="sourceLineNo">344</span>      if (exists) {<a name="line.344"></a>
-<span class="sourceLineNo">345</span>        LOG.debug(zkw.prefix("Set watcher on existing znode=" + znode));<a name="line.345"></a>
-<span class="sourceLineNo">346</span>      } else {<a name="line.346"></a>
-<span class="sourceLineNo">347</span>        LOG.debug(zkw.prefix("Set watcher on znode that does not yet exist, " + znode));<a name="line.347"></a>
-<span class="sourceLineNo">348</span>      }<a name="line.348"></a>
-<span class="sourceLineNo">349</span>      return exists;<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    } catch (KeeperException e) {<a name="line.350"></a>
-<span class="sourceLineNo">351</span>      LOG.warn(zkw.prefix("Unable to set watcher on znode " + znode), e);<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      zkw.keeperException(e);<a name="line.352"></a>
-<span class="sourceLineNo">353</span>      return false;<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    } catch (InterruptedException e) {<a name="line.354"></a>
-<span class="sourceLineNo">355</span>      LOG.warn(zkw.prefix("Unable to set watcher on znode " + znode), e);<a name="line.355"></a>
-<span class="sourceLineNo">356</span>      zkw.interruptedException(e);<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      return false;<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    }<a name="line.358"></a>
-<span class="sourceLineNo">359</span>  }<a name="line.359"></a>
-<span class="sourceLineNo">360</span><a name="line.360"></a>
-<span class="sourceLineNo">361</span>  /**<a name="line.361"></a>
-<span class="sourceLineNo">362</span>   * Watch the specified znode, but only if exists. Useful when watching<a name="line.362"></a>
-<span class="sourceLineNo">363</span>   * for deletions. Uses .getData() (and handles NoNodeException) instead<a name="line.363"></a>
-<span class="sourceLineNo">364</span>   * of .exists() to accomplish this, as .getData() will only set a watch if<a name="line.364"></a>
-<span class="sourceLineNo">365</span>   * the znode exists.<a name="line.365"></a>
-<span class="sourceLineNo">366</span>   * @param zkw zk reference<a name="line.366"></a>
-<span class="sourceLineNo">367</span>   * @param znode path of node to watch<a name="line.367"></a>
-<span class="sourceLineNo">368</span>   * @return true if the watch is set, false if node does not exists<a name="line.368"></a>
-<span class="sourceLineNo">369</span>   * @throws KeeperException if unexpected zookeeper exception<a name="line.369"></a>
-<span class="sourceLineNo">370</span>   */<a name="line.370"></a>
-<span class="sourceLineNo">371</span>  public static boolean setWatchIfNodeExists(ZKWatcher zkw, String znode)<a name="line.371"></a>
-<span class="sourceLineNo">372</span>      throws KeeperException {<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    try {<a name="line.373"></a>
-<span class="sourceLineNo">374</span>      zkw.getRecoverableZooKeeper().getData(znode, true, null);<a name="line.374"></a>
-<span class="sourceLineNo">375</span>      return true;<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    } catch (NoNodeException e) {<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      return false;<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    } catch (InterruptedException e) {<a name="line.378"></a>
-<span class="sourceLineNo">379</span>      LOG.warn(zkw.prefix("Unable to set watcher on znode " + znode), e);<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      zkw.interruptedException(e);<a name="line.380"></a>
-<span class="sourceLineNo">381</span>      return false;<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>   * Check if the specified node exists.  Sets no watches.<a name="line.386"></a>
-<span class="sourceLineNo">387</span>   *<a name="line.387"></a>
-<span class="sourceLineNo">388</span>   * @param zkw zk reference<a name="line.388"></a>
-<span class="sourceLineNo">389</span>   * @param znode path of node to watch<a name="line.389"></a>
-<span class="sourceLineNo">390</span>   * @return version of the node if it exists, -1 if does not exist<a name="line.390"></a>
-<span class="sourceLineNo">391</span>   * @throws KeeperException if unexpected zookeeper exception<a name="line.391"></a>
-<span class="sourceLineNo">392</span>   */<a name="line.392"></a>
-<span class="sourceLineNo">393</span>  public static int checkExists(ZKWatcher zkw, String znode)<a name="line.393"></a>
-<span class="sourceLineNo">394</span>  throws KeeperException {<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    try {<a name="line.395"></a>
-<span class="sourceLineNo">396</span>      Stat s = zkw.getRecoverableZooKeeper().exists(znode, null);<a name="line.396"></a>
-<span class="sourceLineNo">397</span>      return s != null ? s.getVersion() : -1;<a name="line.397"></a>
-<span class="sourceLineNo">398</span>    } catch (KeeperException e) {<a name="line.398"></a>
-<span class="sourceLineNo">399</span>      LOG.warn(zkw.prefix("Unable to set watcher on znode (" + znode + ")"), e);<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      zkw.keeperException(e);<a name="line.400"></a>
-<span class="sourceLineNo">401</span>      return -1;<a name="line.401"></a>
-<span class="sourceLineNo">402</span>    } catch (InterruptedException e) {<a name="line.402"></a>
-<span class="sourceLineNo">403</span>      LOG.warn(zkw.prefix("Unable to set watcher on znode (" + znode + ")"), e);<a name="line.403"></a>
-<span class="sourceLineNo">404</span>      zkw.interruptedException(e);<a name="line.404"></a>
-<span class="sourceLineNo">405</span>      return -1;<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    }<a name="line.406"></a>
-<span class="sourceLineNo">407</span>  }<a name="line.407"></a>
-<span class="sourceLineNo">408</span><a name="line.408"></a>
-<span class="sourceLineNo">409</span>  //<a name="line.409"></a>
-<span class="sourceLineNo">410</span>  // Znode listings<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>   * Lists the children znodes of the specified znode.  Also sets a watch on<a name="line.414"></a>
-<span class="sourceLineNo">415</span>   * the specified znode which will capture a NodeDeleted event on the specified<a name="line.415"></a>
-<span class="sourceLineNo">416</span>   * znode as well as NodeChildrenChanged if any children of the specified znode<a name="line.416"></a>
-<span class="sourceLineNo">417</span>   * are created or deleted.<a name="line.417"></a>
-<span class="sourceLineNo">418</span>   *<a name="line.418"></a>
-<span class="sourceLineNo">419</span>   * Returns null if the specified node does not exist.  Otherwise returns a<a name="line.419"></a>
-<span class="sourceLineNo">420</span>   * list of children of the specified node.  If the node exists but it has no<a name="line.420"></a>
-<span class="sourceLineNo">421</span>   * children, an empty list will be returned.<a name="line.421"></a>
-<span class="sourceLineNo">422</span>   *<a name="line.422"></a>
-<span class="sourceLineNo">423</span>   * @param zkw zk reference<a name="line.423"></a>
-<span class="sourceLineNo">424</span>   * @param znode path of node to list and watch children of<a name="line.424"></a>
-<span class="sourceLineNo">425</span>   * @return list of children of the specified node, an empty list if the node<a name="line.425"></a>
-<span class="sourceLineNo">426</span>   *          exists but has no children, and null if the node does not exist<a name="line.426"></a>
-<span class="sourceLineNo">427</span>   * @throws KeeperException if unexpected zookeeper exception<a name="line.427"></a>
-<span class="sourceLineNo">428</span>   */<a name="line.428"></a>
-<span class="sourceLineNo">429</span>  public static List&lt;String&gt; listChildrenAndWatchForNewChildren(<a name="line.429"></a>
-<span class="sourceLineNo">430</span>          ZKWatcher zkw, String znode)<a name="line.430"></a>
-<span class="sourceLineNo">431</span>  throws KeeperException {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>    try {<a name="line.432"></a>
-<span class="sourceLineNo">433</span>      List&lt;String&gt; children = zkw.getRecoverableZooKeeper().getChildren(znode, zkw);<a name="line.433"></a>
-<span class="sourceLineNo">434</span>      return children;<a name="line.434"></a>
-<span class="sourceLineNo">435</span>    } catch(KeeperException.NoNodeException ke) {<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      LOG.debug(zkw.prefix("Unable to list children of znode " + znode + " " +<a name="line.436"></a>
-<span class="sourceLineNo">437</span>          "because node does not exist (not an error)"));<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      return null;<a name="line.438"></a>
-<span class="sourceLineNo">439</span>    } catch (KeeperException e) {<a name="line.439"></a>
-<span class="sourceLineNo">440</span>      LOG.warn(zkw.prefix("Unable to list children of znode " + znode + " "), e);<a name="line.440"></a>
-<span class="sourceLineNo">441</span>      zkw.keeperException(e);<a name="line.441"></a>
-<span class="sourceLineNo">442</span>      return null;<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    } catch (InterruptedException e) {<a name="line.443"></a>
-<span class="sourceLineNo">444</span>      LOG.warn(zkw.prefix("Unable to list children of znode " + znode + " "), e);<a name="line.444"></a>
-<span class="sourceLineNo">445</span>      zkw.interruptedException(e);<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      return null;<a name="line.446"></a>
-<span class="sourceLineNo">447</span>    }<a name="line.447"></a>
-<span class="sourceLineNo">448</span>  }<a name="line.448"></a>
-<span class="sourceLineNo">449</span><a name="line.449"></a>
-<span class="sourceLineNo">450</span>  /**<a name="line.450"></a>
-<span class="sourceLineNo">451</span>   * List all the children of the specified znode, setting a watch for children<a name="line.451"></a>
-<span class="sourceLineNo">452</span>   * changes and also setting a watch on every individual child in order to get<a name="line.452"></a>
-<span class="sourceLineNo">453</span>   * the NodeCreated and NodeDeleted events.<a name="line.453"></a>
-<span class="sourceLineNo">454</span>   * @param zkw zookeeper reference<a name="line.454"></a>
-<span class="sourceLineNo">455</span>   * @param znode node to get children of and watch<a name="line.455"></a>
-<span class="sourceLineNo">456</span>   * @return list of znode names, null if the node doesn't exist<a name="line.456"></a>
-<span class="sourceLineNo">457</span>   * @throws KeeperException<a name="line.457"></a>
-<span class="sourceLineNo">458</span>   */<a name="line.458"></a>
-<span class="sourceLineNo">459</span>  public static List&lt;String&gt; listChildrenAndWatchThem(ZKWatcher zkw,<a name="line.459"></a>
-<span class="sourceLineNo">460</span>      String znode) throws KeeperException {<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    List&lt;String&gt; children = listChildrenAndWatchForNewChildren(zkw, znode);<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    if (children == null) {<a name="line.462"></a>
-<span class="sourceLineNo">463</span>      return null;<a name="line.463"></a>
-<span class="sourceLineNo">464</span>    }<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    for (String child : children) {<a name="line.465"></a>
-<span class="sourceLineNo">466</span>      watchAndCheckExists(zkw, ZNodePaths.joinZNode(znode, child));<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    }<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    return children;<a name="line.468"></a>
-<span class="sourceLineNo">469</span>  }<a name="line.469"></a>
-<span class="sourceLineNo">470</span><a name="line.470"></a>
-<span class="sourceLineNo">471</span>  /**<a name="line.471"></a>
-<span class="sourceLineNo">472</span>   * Lists the children of the specified znode without setting any watches.<a name="line.472"></a>
-<span class="sourceLineNo">473</span>   *<a name="line.473"></a>
-<span class="sourceLineNo">474</span>   * Sets no watches at all, this method is best effort.<a name="line.474"></a>
-<span class="sourceLineNo">475</span>   *<a name="line.475"></a>
-<span class="sourceLineNo">476</span>   * Returns an empty list if the node has no children.  Returns null if the<a name="line.476"></a>
-<span class="sourceLineNo">477</span>   * parent node itself does not exist.<a name="line.477"></a>
-<span class="sourceLineNo">478</span>   *<a name="line.478"></a>
-<span class="sourceLineNo">479</span>   * @param zkw zookeeper reference<a name="line.479"></a>
-<span class="sourceLineNo">480</span>   * @param znode node to get children<a name="line.480"></a>
-<span class="sourceLineNo">481</span>   * @return list of data of children of specified znode, empty if no children,<a name="line.481"></a>
-<span class="sourceLineNo">482</span>   *         null if parent does not exist<a name="line.482"></a>
-<span class="sourceLineNo">483</span>   * @throws KeeperException if unexpected zookeeper exception<a name="line.483"></a>
-<span class="sourceLineNo">484</span>   */<a name="line.484"></a>
-<span class="sourceLineNo">485</span>  public static List&lt;String&gt; listChildrenNoWatch(ZKWatcher zkw, String znode)<a name="line.485"></a>
-<span class="sourceLineNo">486</span>  throws KeeperException {<a name="line.486"></a>
-<span class="sourceLineNo">487</span>    List&lt;String&gt; children = null;<a name="line.487"></a>
-<span class="sourceLineNo">488</span>    try {<a name="line.488"></a>
-<span class="sourceLineNo">489</span>      // List the children without watching<a name="line.489"></a>
-<span class="sourceLineNo">490</span>      children = zkw.getRecoverableZooKeeper().getChildren(znode, null);<a name="line.490"></a>
-<span class="sourceLineNo">491</span>    } catch(KeeperException.NoNodeException nne) {<a name="line.491"></a>
-<span class="sourceLineNo">492</span>      return null;<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    } catch(InterruptedException ie) {<a name="line.493"></a>
-<span class="sourceLineNo">494</span>      zkw.interruptedException(ie);<a name="line.494"></a>
-<span class="sourceLineNo">495</span>    }<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    return children;<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>   * Simple class to hold a node path and node data.<a name="line.500"></a>
-<span class="sourceLineNo">501</span>   * @deprecated Unused<a name="line.501"></a>
-<span class="sourceLineNo">502</span>   */<a name="line.502"></a>
-<span class="sourceLineNo">503</span>  @Deprecated<a name="line.503"></a>
-<span class="sourceLineNo">504</span>  public static class NodeAndData {<a name="line.504"></a>
-<span class="sourceLineNo">505</span>    private String node;<a name="line.505"></a>
-<span class="sourceLineNo">506</span>    private byte [] data;<a name="line.506"></a>
-<span class="sourceLineNo">507</span>    public NodeAndData(String node, byte [] data) {<a name="line.507"></a>
-<span class="sourceLineNo">508</span>      this.node = node;<a name="line.508"></a>
-<span class="sourceLineNo">509</span>      this.data = data;<a name="line.509"></a>
-<span class="sourceLineNo">510</span>    }<a name="line.510"></a>
-<span class="sourceLineNo">511</span>    public String getNode() {<a name="line.511"></a>
-<span class="sourceLineNo">512</span>      return node;<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    }<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    public byte [] getData() {<a name="line.514"></a>
-<span class="sourceLineNo">515</span>      return data;<a name="line.515"></a>
-<span class="sourceLineNo">516</span>    }<a name="line.516"></a>
-<span class="sourceLineNo">517</span>    @Override<a name="line.517"></a>
-<span class="sourceLineNo">518</span>    public String toString() {<a name="line.518"></a>
-<span class="sourceLineNo">519</span>      return node;<a name="line.519"></a>
+<span class="sourceLineNo">321</span>  public static String getParent(String node) {<a name="line.321"></a>
+<span class="sourceLineNo">322</span>    int idx = node.lastIndexOf(ZNodePaths.ZNODE_PATH_SEPARATOR);<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    return idx &lt;= 0 ? null : node.substring(0, idx);<a name="line.323"></a>
+<span class="sourceLineNo">324</span>  }<a name="line.324"></a>
+<span class="sourceLineNo">325</span><a name="line.325"></a>
+<span class="sourceLineNo">326</span>  /**<a name="line.326"></a>
+<span class="sourceLineNo">327</span>   * Get the name of the current node from the specified fully-qualified path.<a name="line.327"></a>
+<span class="sourceLineNo">328</span>   * @param path fully-qualified path<a name="line.328"></a>
+<span class="sourceLineNo">329</span>   * @return name of the current node<a name="line.329"></a>
+<span class="sourceLineNo">330</span>   */<a name="line.330"></a>
+<span class="sourceLineNo">331</span>  public static String getNodeName(String path) {<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    return path.substring(path.lastIndexOf("/")+1);<a name="line.332"></a>
+<span class="sourceLineNo">333</span>  }<a name="line.333"></a>
+<span class="sourceLineNo">334</span><a name="line.334"></a>
+<span class="sourceLineNo">335</span>  //<a name="line.335"></a>
+<span class="sourceLineNo">336</span>  // Existence checks and watches<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>   * Watch the specified znode for delete/create/change events.  The watcher is<a name="line.340"></a>
+<span class="sourceLineNo">341</span>   * set whether or not the node exists.  If the node already exists, the method<a name="line.341"></a>
+<span class="sourceLineNo">342</span>   * returns true.  If the node does not exist, the method returns false.<a name="line.342"></a>
+<span class="sourceLineNo">343</span>   *<a name="line.343"></a>
+<span class="sourceLineNo">344</span>   * @param zkw zk reference<a name="line.344"></a>
+<span class="sourceLineNo">345</span>   * @param znode path of node to watch<a name="line.345"></a>
+<span class="sourceLineNo">346</span>   * @return true if znode exists, false if does not exist or error<a name="line.346"></a>
+<span class="sourceLineNo">347</span>   * @throws KeeperException if unexpected zookeeper exception<a name="line.347"></a>
+<span class="sourceLineNo">348</span>   */<a name="line.348"></a>
+<span class="sourceLineNo">349</span>  public static boolean watchAndCheckExists(ZKWatcher zkw, String znode)<a name="line.349"></a>
+<span class="sourceLineNo">350</span>  throws KeeperException {<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    try {<a name="line.351"></a>
+<span class="sourceLineNo">352</span>      Stat s = zkw.getRecoverableZooKeeper().exists(znode, zkw);<a name="line.352"></a>
+<span class="sourceLineNo">353</span>      boolean exists = s != null ? true : false;<a name="line.353"></a>
+<span class="sourceLineNo">354</span>      if (exists) {<a name="line.354"></a>
+<span class="sourceLineNo">355</span>        LOG.debug(zkw.prefix("Set watcher on existing znode=" + znode));<a name="line.355"></a>
+<span class="sourceLineNo">356</span>      } else {<a name="line.356"></a>
+<span class="sourceLineNo">357</span>        LOG.debug(zkw.prefix("Set watcher on znode that does not yet exist, " + znode));<a name="line.357"></a>
+<span class="sourceLineNo">358</span>      }<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      return exists;<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    } catch (KeeperException e) {<a name="line.360"></a>
+<span class="sourceLineNo">361</span>      LOG.warn(zkw.prefix("Unable to set watcher on znode " + znode), e);<a name="line.361"></a>
+<span class="sourceLineNo">362</span>      zkw.keeperException(e);<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      return false;<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    } catch (InterruptedException e) {<a name="line.364"></a>
+<span class="sourceLineNo">365</span>      LOG.warn(zkw.prefix("Unable to set watcher on znode " + znode), e);<a name="line.365"></a>
+<span class="sourceLineNo">366</span>      zkw.interruptedException(e);<a name="line.366"></a>
+<span class="sourceLineNo">367</span>      return false;<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>  /**<a name="line.371"></a>
+<span class="sourceLineNo">372</span>   * Watch the specified znode, but only if exists. Useful when watching<a name="line.372"></a>
+<span class="sourceLineNo">373</span>   * for deletions. Uses .getData() (and handles NoNodeException) instead<a name="line.373"></a>
+<span class="sourceLineNo">374</span>   * of .exists() to accomplish this, as .getData() will only set a watch if<a name="line.374"></a>
+<span class="sourceLineNo">375</span>   * the znode exists.<a name="line.375"></a>
+<span class="sourceLineNo">376</span>   * @param zkw zk reference<a name="line.376"></a>
+<span class="sourceLineNo">377</span>   * @param znode path of node to watch<a name="line.377"></a>
+<span class="sourceLineNo">378</span>   * @return true if the watch is set, false if node does not exists<a name="line.378"></a>
+<span class="sourceLineNo">379</span>   * @throws KeeperException if unexpected zookeeper exception<a name="line.379"></a>
+<span class="sourceLineNo">380</span>   */<a name="line.380"></a>
+<span class="sourceLineNo">381</span>  public static boolean setWatchIfNodeExists(ZKWatcher zkw, String znode)<a name="line.381"></a>
+<span class="sourceLineNo">382</span>      throws KeeperException {<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    try {<a name="line.383"></a>
+<span class="sourceLineNo">384</span>      zkw.getRecoverableZooKeeper().getData(znode, true, null);<a name="line.384"></a>
+<span class="sourceLineNo">385</span>      return true;<a name="line.385"></a>
+<span class="sourceLineNo">386</span>    } catch (NoNodeException e) {<a name="line.386"></a>
+<span class="sourceLineNo">387</span>      return false;<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    } catch (InterruptedException e) {<a name="line.388"></a>
+<span class="sourceLineNo">389</span>      LOG.warn(zkw.prefix("Unable to set watcher on znode " + znode), e);<a name="line.389"></a>
+<span class="sourceLineNo">390</span>      zkw.interruptedException(e);<a name="line.390"></a>
+<span class="sourceLineNo">391</span>      return false;<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">395</span>  /**<a name="line.395"></a>
+<span class="sourceLineNo">396</span>   * Check if the specified node exists.  Sets no watches.<a name="line.396"></a>
+<span class="sourceLineNo">397</span>   *<a name="line.397"></a>
+<span class="sourceLineNo">398</span>   * @param zkw zk reference<a name="line.398"></a>
+<span class="sourceLineNo">399</span>   * @param znode path of node to watch<a name="line.399"></a>
+<span class="sourceLineNo">400</span>   * @return version of the node if it exists, -1 if does not exist<a name="line.400"></a>
+<span class="sourceLineNo">401</span>   * @throws KeeperException if unexpected zookeeper exception<a name="line.401"></a>
+<span class="sourceLineNo">402</span>   */<a name="line.402"></a>
+<span class="sourceLineNo">403</span>  public static int checkExists(ZKWatcher zkw, String znode)<a name="line.403"></a>
+<span class="sourceLineNo">404</span>  throws KeeperException {<a name="line.404"></a>
+<span class="sourceLineNo">405</span>    try {<a name="line.405"></a>
+<span class="sourceLineNo">406</span>      Stat s = zkw.getRecoverableZooKeeper().exists(znode, null);<a name="line.406"></a>
+<span class="sourceLineNo">407</span>      return s != null ? s.getVersion() : -1;<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    } catch (KeeperException e) {<a name="line.408"></a>
+<span class="sourceLineNo">409</span>      LOG.warn(zkw.prefix("Unable to set watcher on znode (" + znode + ")"), e);<a name="line.409"></a>
+<span class="sourceLineNo">410</span>      zkw.keeperException(e);<a name="line.410"></a>
+<span class="sourceLineNo">411</span>      return -1;<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    } catch (InterruptedException e) {<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      LOG.warn(zkw.prefix("Unable to set watcher on znode (" + znode + ")"), e);<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      zkw.interruptedException(e);<a name="line.414"></a>
+<span class="sourceLineNo">415</span>      return -1;<a name="line.415"></a>
+<span class="sourceLineNo">416</span>    }<a name="line.416"></a>
+<span class="sourceLineNo">417</span>  }<a name="line.417"></a>
+<span class="sourceLineNo">418</span><a name="line.418"></a>
+<span class="sourceLineNo">419</span>  //<a name="line.419"></a>
+<span class="sourceLineNo">420</span>  // Znode listings<a name="line.420"></a>
+<span class="sourceLineNo">421</span>  //<a name="line.421"></a>
+<span class="sourceLineNo">422</span><a name="line.422"></a>
+<span class="sourceLineNo">423</span>  /**<a name="line.423"></a>
+<span class="sourceLineNo">424</span>   * Lists the children znodes of the specified znode.  Also sets a watch on<a name="line.424"></a>
+<span class="sourceLineNo">425</span>   * the specified znode which will capture a NodeDeleted event on the specified<a name="line.425"></a>
+<span class="sourceLineNo">426</span>   * znode as well as NodeChildrenChanged if any children of the specified znode<a name="line.426"></a>
+<span class="sourceLineNo">427</span>   * are created or deleted.<a name="line.427"></a>
+<span class="sourceLineNo">428</span>   *<a name="line.428"></a>
+<span class="sourceLineNo">429</span>   * Returns null if the specified node does not exist.  Otherwise returns a<a name="line.429"></a>
+<span class="sourceLineNo">430</span>   * list of children of the specified node.  If the node exists but it has no<a name="line.430"></a>
+<span class="sourceLineNo">431</span>   * children, an empty list will be returned.<a name="line.431"></a>
+<span class="sourceLineNo">432</span>   *<a name="line.432"></a>
+<span class="sourceLineNo">433</span>   * @param zkw zk reference<a name="line.433"></a>
+<span class="sourceLineNo">434</span>   * @param znode path of node to list and watch children of<a name="line.434"></a>
+<span class="sourceLineNo">435</span>   * @return list of children of the specified node, an empty list if the node<a name="line.435"></a>
+<span class="sourceLineNo">436</span>   *          exists but has no children, and null if the node does not exist<a name="line.436"></a>
+<span class="sourceLineNo">437</span>   * @throws KeeperException if unexpected zookeeper exception<a name="line.437"></a>
+<span class="sourceLineNo">438</span>   */<a name="line.438"></a>
+<span class="sourceLineNo">439</span>  public static List&lt;String&gt; listChildrenAndWatchForNewChildren(<a name="line.439"></a>
+<span class="sourceLineNo">440</span>          ZKWatcher zkw, String znode)<a name="line.440"></a>
+<span class="sourceLineNo">441</span>  throws KeeperException {<a name="line.441"></a>
+<span class="sourceLineNo">442</span>    try {<a name="line.442"></a>
+<span class="sourceLineNo">443</span>      List&lt;String&gt; children = zkw.getRecoverableZooKeeper().getChildren(znode, zkw);<a name="line.443"></a>
+<span class="sourceLineNo">444</span>      return children;<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    } catch(KeeperException.NoNodeException ke) {<a name="line.445"></a>
+<span class="sourceLineNo">446</span>      LOG.debug(zkw.prefix("Unable to list children of znode " + znode + " " +<a name="line.446"></a>
+<span class="sourceLineNo">447</span>          "because node does not exist (not an error)"));<a name="line.447"></a>
+<span class="sourceLineNo">448</span>      return null;<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    } catch (KeeperException e) {<a name="line.449"></a>
+<span class="sourceLineNo">450</span>      LOG.warn(zkw.prefix("Unable to list children of znode " + znode + " "), e);<a name="line.450"></a>
+<span class="sourceLineNo">451</span>      zkw.keeperException(e);<a name="line.451"></a>
+<span class="sourceLineNo">452</span>      return null;<a name="line.452"></a>
+<span class="sourceLineNo">453</span>    } catch (InterruptedException e) {<a name="line.453"></a>
+<span class="sourceLineNo">454</span>      LOG.warn(zkw.prefix("Unable to list children of znode " + znode + " "), e);<a name="

<TRUNCATED>