You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by gi...@apache.org on 2018/06/02 14:47:50 UTC
[14/44] hbase-site git commit: Published site at
8377873d22c25185127bc07ea055412d8e302a1a.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/3797f0e6/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 6d59738..61e3cd8 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
@@ -116,20 +116,20 @@
<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">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">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">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>
@@ -355,7 +355,7 @@
<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">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>
@@ -409,7 +409,7 @@
<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">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>
@@ -446,7 +446,7 @@
<span class="sourceLineNo">438</span> */<a name="line.438"></a>
<span class="sourceLineNo">439</span> public static List<String> 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">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<String> children = zkw.getRecoverableZooKeeper().getChildren(znode, zkw);<a name="line.443"></a>
<span class="sourceLineNo">444</span> return children;<a name="line.444"></a>
@@ -501,7 +501,7 @@
<span class="sourceLineNo">493</span> * @throws KeeperException if unexpected zookeeper exception<a name="line.493"></a>
<span class="sourceLineNo">494</span> */<a name="line.494"></a>
<span class="sourceLineNo">495</span> public static List<String> listChildrenNoWatch(ZKWatcher zkw, String znode)<a name="line.495"></a>
-<span class="sourceLineNo">496</span> throws KeeperException {<a name="line.496"></a>
+<span class="sourceLineNo">496</span> throws KeeperException {<a name="line.496"></a>
<span class="sourceLineNo">497</span> List<String> children = null;<a name="line.497"></a>
<span class="sourceLineNo">498</span> try {<a name="line.498"></a>
<span class="sourceLineNo">499</span> // List the children without watching<a name="line.499"></a>
@@ -558,7 +558,7 @@
<span class="sourceLineNo">550</span> * @throws KeeperException if unexpected zookeeper exception<a name="line.550"></a>
<span class="sourceLineNo">551</span> */<a name="line.551"></a>
<span class="sourceLineNo">552</span> public static boolean nodeHasChildren(ZKWatcher zkw, String znode)<a name="line.552"></a>
-<span class="sourceLineNo">553</span> throws KeeperException {<a name="line.553"></a>
+<span class="sourceLineNo">553</span> throws KeeperException {<a name="line.553"></a>
<span class="sourceLineNo">554</span> try {<a name="line.554"></a>
<span class="sourceLineNo">555</span> return !zkw.getRecoverableZooKeeper().getChildren(znode, null).isEmpty();<a name="line.555"></a>
<span class="sourceLineNo">556</span> } catch(KeeperException.NoNodeException ke) {<a name="line.556"></a>
@@ -590,7 +590,7 @@
<span class="sourceLineNo">582</span> * @throws KeeperException if unexpected zookeeper exception<a name="line.582"></a>
<span class="sourceLineNo">583</span> */<a name="line.583"></a>
<span class="sourceLineNo">584</span> public static int getNumberOfChildren(ZKWatcher zkw, String znode)<a name="line.584"></a>
-<span class="sourceLineNo">585</span> throws KeeperException {<a name="line.585"></a>
+<span class="sourceLineNo">585</span> throws KeeperException {<a name="line.585"></a>
<span class="sourceLineNo">586</span> try {<a name="line.586"></a>
<span class="sourceLineNo">587</span> Stat stat = zkw.getRecoverableZooKeeper().exists(znode, null);<a name="line.587"></a>
<span class="sourceLineNo">588</span> return stat == null ? 0 : stat.getNumChildren();<a name="line.588"></a>
@@ -641,7 +641,7 @@
<span class="sourceLineNo">633</span> * @throws KeeperException if unexpected zookeeper exception<a name="line.633"></a>
<span class="sourceLineNo">634</span> */<a name="line.634"></a>
<span class="sourceLineNo">635</span> public static byte [] getDataAndWatch(ZKWatcher zkw, String znode)<a name="line.635"></a>
-<span class="sourceLineNo">636</span> throws KeeperException {<a name="line.636"></a>
+<span class="sourceLineNo">636</span> throws KeeperException {<a name="line.636"></a>
<span class="sourceLineNo">637</span> return getDataInternal(zkw, znode, null, true);<a name="line.637"></a>
<span class="sourceLineNo">638</span> }<a name="line.638"></a>
<span class="sourceLineNo">639</span><a name="line.639"></a>
@@ -703,7 +703,7 @@
<span class="sourceLineNo">695</span> */<a name="line.695"></a>
<span class="sourceLineNo">696</span> public static byte [] getDataNoWatch(ZKWatcher zkw, String znode,<a name="line.696"></a>
<span class="sourceLineNo">697</span> Stat stat)<a name="line.697"></a>
-<span class="sourceLineNo">698</span> throws KeeperException {<a name="line.698"></a>
+<span class="sourceLineNo">698</span> throws KeeperException {<a name="line.698"></a>
<span class="sourceLineNo">699</span> try {<a name="line.699"></a>
<span class="sourceLineNo">700</span> byte [] data = zkw.getRecoverableZooKeeper().getData(znode, null, stat);<a name="line.700"></a>
<span class="sourceLineNo">701</span> logRetrievedMsg(zkw, znode, data, false);<a name="line.701"></a>
@@ -809,7 +809,7 @@
<span class="sourceLineNo">801</span> */<a name="line.801"></a>
<span class="sourceLineNo">802</span> public static boolean setData(ZKWatcher zkw, String znode,<a name="line.802"></a>
<span class="sourceLineNo">803</span> byte [] data, int expectedVersion)<a name="line.803"></a>
-<span class="sourceLineNo">804</span> throws KeeperException, KeeperException.NoNodeException {<a name="line.804"></a>
+<span class="sourceLineNo">804</span> throws KeeperException, KeeperException.NoNodeException {<a name="line.804"></a>
<span class="sourceLineNo">805</span> try {<a name="line.805"></a>
<span class="sourceLineNo">806</span> return zkw.getRecoverableZooKeeper().setData(znode, data, expectedVersion) != null;<a name="line.806"></a>
<span class="sourceLineNo">807</span> } catch (InterruptedException e) {<a name="line.807"></a>
@@ -853,12 +853,12 @@
<span class="sourceLineNo">845</span> * @throws KeeperException if unexpected zookeeper exception<a name="line.845"></a>
<span class="sourceLineNo">846</span> */<a name="line.846"></a>
<span class="sourceLineNo">847</span> public static void setData(ZKWatcher zkw, String znode, byte [] data)<a name="line.847"></a>
-<span class="sourceLineNo">848</span> throws KeeperException, KeeperException.NoNodeException {<a name="line.848"></a>
+<span class="sourceLineNo">848</span> throws KeeperException, KeeperException.NoNodeException {<a name="line.848"></a>
<span class="sourceLineNo">849</span> setData(zkw, (SetData)ZKUtilOp.setData(znode, data));<a name="line.849"></a>
<span class="sourceLineNo">850</span> }<a name="line.850"></a>
<span class="sourceLineNo">851</span><a name="line.851"></a>
<span class="sourceLineNo">852</span> private static void setData(ZKWatcher zkw, SetData setData)<a name="line.852"></a>
-<span class="sourceLineNo">853</span> throws KeeperException, KeeperException.NoNodeException {<a name="line.853"></a>
+<span class="sourceLineNo">853</span> throws KeeperException, KeeperException.NoNodeException {<a name="line.853"></a>
<span class="sourceLineNo">854</span> SetDataRequest sd = (SetDataRequest)toZooKeeperOp(zkw, setData).toRequestRecord();<a name="line.854"></a>
<span class="sourceLineNo">855</span> setData(zkw, sd.getPath(), sd.getData(), sd.getVersion());<a name="line.855"></a>
<span class="sourceLineNo">856</span> }<a name="line.856"></a>
@@ -899,7 +899,7 @@
<span class="sourceLineNo">891</span><a name="line.891"></a>
<span class="sourceLineNo">892</span> public static ArrayList<ACL> createACL(ZKWatcher zkw, String node,<a name="line.892"></a>
<span class="sourceLineNo">893</span> boolean isSecureZooKeeper) {<a name="line.893"></a>
-<span class="sourceLineNo">894</span> if (!node.startsWith(zkw.znodePaths.baseZNode)) {<a name="line.894"></a>
+<span class="sourceLineNo">894</span> if (!node.startsWith(zkw.getZNodePaths().baseZNode)) {<a name="line.894"></a>
<span class="sourceLineNo">895</span> return Ids.OPEN_ACL_UNSAFE;<a name="line.895"></a>
<span class="sourceLineNo">896</span> }<a name="line.896"></a>
<span class="sourceLineNo">897</span> if (isSecureZooKeeper) {<a name="line.897"></a>
@@ -931,7 +931,7 @@
<span class="sourceLineNo">923</span> }<a name="line.923"></a>
<span class="sourceLineNo">924</span> // Certain znodes are accessed directly by the client,<a name="line.924"></a>
<span class="sourceLineNo">925</span> // so they must be readable by non-authenticated clients<a name="line.925"></a>
-<span class="sourceLineNo">926</span> if (zkw.znodePaths.isClientReadable(node)) {<a name="line.926"></a>
+<span class="sourceLineNo">926</span> if (zkw.getZNodePaths().isClientReadable(node)) {<a name="line.926"></a>
<span class="sourceLineNo">927</span> acls.addAll(Ids.CREATOR_ALL_ACL);<a name="line.927"></a>
<span class="sourceLineNo">928</span> acls.addAll(Ids.READ_ACL_UNSAFE);<a name="line.928"></a>
<span class="sourceLineNo">929</span> } else {<a name="line.929"></a>
@@ -967,7 +967,7 @@
<span class="sourceLineNo">959</span> */<a name="line.959"></a>
<span class="sourceLineNo">960</span> public static boolean createEphemeralNodeAndWatch(ZKWatcher zkw,<a name="line.960"></a>
<span class="sourceLineNo">961</span> String znode, byte [] data)<a name="line.961"></a>
-<span class="sourceLineNo">962</span> throws KeeperException {<a name="line.962"></a>
+<span class="sourceLineNo">962</span> throws KeeperException {<a name="line.962"></a>
<span class="sourceLineNo">963</span> boolean ret = true;<a name="line.963"></a>
<span class="sourceLineNo">964</span> try {<a name="line.964"></a>
<span class="sourceLineNo">965</span> zkw.getRecoverableZooKeeper().create(znode, data, createACL(zkw, znode),<a name="line.965"></a>
@@ -1007,7 +1007,7 @@
<span class="sourceLineNo">999</span> */<a name="line.999"></a>
<span class="sourceLineNo">1000</span> public static boolean createNodeIfNotExistsAndWatch(<a name="line.1000"></a>
<span class="sourceLineNo">1001</span> ZKWatcher zkw, String znode, byte [] data)<a name="line.1001"></a>
-<span class="sourceLineNo">1002</span> throws KeeperException {<a name="line.1002"></a>
+<span class="sourceLineNo">1002</span> throws KeeperException {<a name="line.1002"></a>
<span class="sourceLineNo">1003</span> boolean ret = true;<a name="line.1003"></a>
<span class="sourceLineNo">1004</span> try {<a name="line.1004"></a>
<span class="sourceLineNo">1005</span> zkw.getRecoverableZooKeeper().create(znode, data, createACL(zkw, znode),<a name="line.1005"></a>
@@ -1074,7 +1074,7 @@
<span class="sourceLineNo">1066</span> */<a name="line.1066"></a>
<span class="sourceLineNo">1067</span> public static int createAndWatch(ZKWatcher zkw,<a name="line.1067"></a>
<span class="sourceLineNo">1068</span> String znode, byte [] data)<a name="line.1068"></a>
-<span class="sourceLineNo">1069</span> throws KeeperException, KeeperException.NodeExistsException {<a name="line.1069"></a>
+<span class="sourceLineNo">1069</span> throws KeeperException, KeeperException.NodeExistsException {<a name="line.1069"></a>
<span class="sourceLineNo">1070</span> try {<a name="line.1070"></a>
<span class="sourceLineNo">1071</span> zkw.getRecoverableZooKeeper().create(znode, data, createACL(zkw, znode),<a name="line.1071"></a>
<span class="sourceLineNo">1072</span> CreateMode.PERSISTENT);<a name="line.1072"></a>
@@ -1140,13 +1140,13 @@
<span class="sourceLineNo">1132</span> */<a name="line.1132"></a>
<span class="sourceLineNo">1133</span> public static void createAndFailSilent(ZKWatcher zkw,<a name="line.1133"></a>
<span class="sourceLineNo">1134</span> String znode, byte[] data)<a name="line.1134"></a>
-<span class="sourceLineNo">1135</span> throws KeeperException {<a name="line.1135"></a>
+<span class="sourceLineNo">1135</span> throws KeeperException {<a name="line.1135"></a>
<span class="sourceLineNo">1136</span> createAndFailSilent(zkw,<a name="line.1136"></a>
<span class="sourceLineNo">1137</span> (CreateAndFailSilent)ZKUtilOp.createAndFailSilent(znode, data));<a name="line.1137"></a>
<span class="sourceLineNo">1138</span> }<a name="line.1138"></a>
<span class="sourceLineNo">1139</span><a name="line.1139"></a>
<span class="sourceLineNo">1140</span> private static void createAndFailSilent(ZKWatcher zkw, CreateAndFailSilent cafs)<a name="line.1140"></a>
-<span class="sourceLineNo">1141</span> throws KeeperException {<a name="line.1141"></a>
+<span class="sourceLineNo">1141</span> throws KeeperException {<a name="line.1141"></a>
<span class="sourceLineNo">1142</span> CreateRequest create = (CreateRequest)toZooKeeperOp(zkw, cafs).toRequestRecord();<a name="line.1142"></a>
<span class="sourceLineNo">1143</span> String znode = create.getPath();<a name="line.1143"></a>
<span class="sourceLineNo">1144</span> try {<a name="line.1144"></a>
@@ -1181,7 +1181,7 @@
<span class="sourceLineNo">1173</span> * @throws KeeperException if unexpected zookeeper exception<a name="line.1173"></a>
<span class="sourceLineNo">1174</span> */<a name="line.1174"></a>
<span class="sourceLineNo">1175</span> public static void createWithParents(ZKWatcher zkw, String znode)<a name="line.1175"></a>
-<span class="sourceLineNo">1176</span> throws KeeperException {<a name="line.1176"></a>
+<span class="sourceLineNo">1176</span> throws KeeperException {<a name="line.1176"></a>
<span class="sourceLineNo">1177</span> createWithParents(zkw, znode, new byte[0]);<a name="line.1177"></a>
<span class="sourceLineNo">1178</span> }<a name="line.1178"></a>
<span class="sourceLineNo">1179</span><a name="line.1179"></a>
@@ -1199,7 +1199,7 @@
<span class="sourceLineNo">1191</span> * @throws KeeperException if unexpected zookeeper exception<a name="line.1191"></a>
<span class="sourceLineNo">1192</span> */<a name="line.1192"></a>
<span class="sourceLineNo">1193</span> public static void createWithParents(ZKWatcher zkw, String znode, byte[] data)<a name="line.1193"></a>
-<span class="sourceLineNo">1194</span> throws KeeperException {<a name="line.1194"></a>
+<span class="sourceLineNo">1194</span> throws KeeperException {<a name="line.1194"></a>
<span class="sourceLineNo">1195</span> try {<a name="line.1195"></a>
<span class="sourceLineNo">1196</span> if(znode == null) {<a name="line.1196"></a>
<span class="sourceLineNo">1197</span> return;<a name="line.1197"></a>
@@ -1224,7 +1224,7 @@
<span class="sourceLineNo">1216</span> * Delete the specified node. Sets no watches. Throws all exceptions.<a name="line.1216"></a>
<span class="sourceLineNo">1217</span> */<a name="line.1217"></a>
<span class="sourceLineNo">1218</span> public static void deleteNode(ZKWatcher zkw, String node)<a name="line.1218"></a>
-<span class="sourceLineNo">1219</span> throws KeeperException {<a name="line.1219"></a>
+<span class="sourceLineNo">1219</span> throws KeeperException {<a name="line.1219"></a>
<span class="sourceLineNo">1220</span> deleteNode(zkw, node, -1);<a name="line.1220"></a>
<span class="sourceLineNo">1221</span> }<a name="line.1221"></a>
<span class="sourceLineNo">1222</span><a name="line.1222"></a>
@@ -1234,7 +1234,7 @@
<span class="sourceLineNo">1226</span> */<a name="line.1226"></a>
<span class="sourceLineNo">1227</span> public static boolean deleteNode(ZKWatcher zkw, String node,<a name="line.1227"></a>
<span class="sourceLineNo">1228</span> int version)<a name="line.1228"></a>
-<span class="sourceLineNo">1229</span> throws KeeperException {<a name="line.1229"></a>
+<span class="sourceLineNo">1229</span> throws KeeperException {<a name="line.1229"></a>
<span class="sourceLineNo">1230</span> try {<a name="line.1230"></a>
<span class="sourceLineNo">1231</span> zkw.getRecoverableZooKeeper().delete(node, version);<a name="line.1231"></a>
<span class="sourceLineNo">1232</span> return true;<a name="line.1232"></a>
@@ -1254,7 +1254,7 @@
<span class="sourceLineNo">1246</span> * @throws KeeperException if a ZooKeeper operation fails<a name="line.1246"></a>
<span class="sourceLineNo">1247</span> */<a name="line.1247"></a>
<span class="sourceLineNo">1248</span> public static void deleteNodeFailSilent(ZKWatcher zkw, String node)<a name="line.1248"></a>
-<span class="sourceLineNo">1249</span> throws KeeperException {<a name="line.1249"></a>
+<span class="sourceLineNo">1249</span> throws KeeperException {<a name="line.1249"></a>
<span class="sourceLineNo">1250</span> deleteNodeFailSilent(zkw,<a name="line.1250"></a>
<span class="sourceLineNo">1251</span> (DeleteNodeFailSilent)ZKUtilOp.deleteNodeFailSilent(node));<a name="line.1251"></a>
<span class="sourceLineNo">1252</span> }<a name="line.1252"></a>
@@ -1280,7 +1280,7 @@
<span class="sourceLineNo">1272</span> * children.<a name="line.1272"></a>
<span class="sourceLineNo">1273</span> */<a name="line.1273"></a>
<span class="sourceLineNo">1274</span> public static void deleteNodeRecursively(ZKWatcher zkw, String node)<a name="line.1274"></a>
-<span class="sourceLineNo">1275</span> throws KeeperException {<a name="line.1275"></a>
+<span class="sourceLineNo">1275</span> throws KeeperException {<a name="line.1275"></a>
<span class="sourceLineNo">1276</span> deleteNodeRecursivelyMultiOrSequential(zkw, true, node);<a name="line.1276"></a>
<span class="sourceLineNo">1277</span> }<a name="line.1277"></a>
<span class="sourceLineNo">1278</span><a name="line.1278"></a>
@@ -1743,7 +1743,7 @@
<span class="sourceLineNo">1735</span> public static String dump(ZKWatcher zkw) {<a name="line.1735"></a>
<span class="sourceLineNo">1736</span> StringBuilder sb = new StringBuilder();<a name="line.1736"></a>
<span class="sourceLineNo">1737</span> try {<a name="line.1737"></a>
-<span class="sourceLineNo">1738</span> sb.append("HBase is rooted at ").append(zkw.znodePaths.baseZNode);<a name="line.1738"></a>
+<span class="sourceLineNo">1738</span> sb.append("HBase is rooted at ").append(zkw.getZNodePaths().baseZNode);<a name="line.1738"></a>
<span class="sourceLineNo">1739</span> sb.append("\nActive master address: ");<a name="line.1739"></a>
<span class="sourceLineNo">1740</span> try {<a name="line.1740"></a>
<span class="sourceLineNo">1741</span> sb.append(MasterAddressTracker.getMasterAddress(zkw));<a name="line.1741"></a>
@@ -1751,400 +1751,401 @@
<span class="sourceLineNo">1743</span> sb.append("<<FAILED LOOKUP: " + e.getMessage() + ">>");<a name="line.1743"></a>
<span class="sourceLineNo">1744</span> }<a name="line.1744"></a>
<span class="sourceLineNo">1745</span> sb.append("\nBackup master addresses:");<a name="line.1745"></a>
-<span class="sourceLineNo">1746</span> for (String child : listChildrenNoWatch(zkw, zkw.znodePaths.backupMasterAddressesZNode)) {<a name="line.1746"></a>
-<span class="sourceLineNo">1747</span> sb.append("\n ").append(child);<a name="line.1747"></a>
-<span class="sourceLineNo">1748</span> }<a name="line.1748"></a>
-<span class="sourceLineNo">1749</span> sb.append("\nRegion server holding hbase:meta: "<a name="line.1749"></a>
-<span class="sourceLineNo">1750</span> + new MetaTableLocator().getMetaRegionLocation(zkw));<a name="line.1750"></a>
-<span class="sourceLineNo">1751</span> Configuration conf = HBaseConfiguration.create();<a name="line.1751"></a>
-<span class="sourceLineNo">1752</span> int numMetaReplicas = conf.getInt(HConstants.META_REPLICAS_NUM,<a name="line.1752"></a>
-<span class="sourceLineNo">1753</span> HConstants.DEFAULT_META_REPLICA_NUM);<a name="line.1753"></a>
-<span class="sourceLineNo">1754</span> for (int i = 1; i < numMetaReplicas; i++) {<a name="line.1754"></a>
-<span class="sourceLineNo">1755</span> sb.append("\nRegion server holding hbase:meta, replicaId " + i + " "<a name="line.1755"></a>
-<span class="sourceLineNo">1756</span> + new MetaTableLocator().getMetaRegionLocation(zkw, i));<a name="line.1756"></a>
-<span class="sourceLineNo">1757</span> }<a name="line.1757"></a>
-<span class="sourceLineNo">1758</span> sb.append("\nRegion servers:");<a name="line.1758"></a>
-<span class="sourceLineNo">1759</span> for (String child : listChildrenNoWatch(zkw, zkw.znodePaths.rsZNode)) {<a name="line.1759"></a>
-<span class="sourceLineNo">1760</span> sb.append("\n ").append(child);<a name="line.1760"></a>
-<span class="sourceLineNo">1761</span> }<a name="line.1761"></a>
-<span class="sourceLineNo">1762</span> try {<a name="line.1762"></a>
-<span class="sourceLineNo">1763</span> getReplicationZnodesDump(zkw, sb);<a name="line.1763"></a>
-<span class="sourceLineNo">1764</span> } catch (KeeperException ke) {<a name="line.1764"></a>
-<span class="sourceLineNo">1765</span> LOG.warn("Couldn't get the replication znode dump", ke);<a name="line.1765"></a>
-<span class="sourceLineNo">1766</span> }<a name="line.1766"></a>
-<span class="sourceLineNo">1767</span> sb.append("\nQuorum Server Statistics:");<a name="line.1767"></a>
-<span class="sourceLineNo">1768</span> String[] servers = zkw.getQuorum().split(",");<a name="line.1768"></a>
-<span class="sourceLineNo">1769</span> for (String server : servers) {<a name="line.1769"></a>
-<span class="sourceLineNo">1770</span> sb.append("\n ").append(server);<a name="line.1770"></a>
-<span class="sourceLineNo">1771</span> try {<a name="line.1771"></a>
-<span class="sourceLineNo">1772</span> String[] stat = getServerStats(server, ZKUtil.zkDumpConnectionTimeOut);<a name="line.1772"></a>
-<span class="sourceLineNo">1773</span><a name="line.1773"></a>
-<span class="sourceLineNo">1774</span> if (stat == null) {<a name="line.1774"></a>
-<span class="sourceLineNo">1775</span> sb.append("[Error] invalid quorum server: " + server);<a name="line.1775"></a>
-<span class="sourceLineNo">1776</span> break;<a name="line.1776"></a>
-<span class="sourceLineNo">1777</span> }<a name="line.1777"></a>
-<span class="sourceLineNo">1778</span><a name="line.1778"></a>
-<span class="sourceLineNo">1779</span> for (String s : stat) {<a name="line.1779"></a>
-<span class="sourceLineNo">1780</span> sb.append("\n ").append(s);<a name="line.1780"></a>
-<span class="sourceLineNo">1781</span> }<a name="line.1781"></a>
-<span class="sourceLineNo">1782</span> } catch (Exception e) {<a name="line.1782"></a>
-<span class="sourceLineNo">1783</span> sb.append("\n ERROR: ").append(e.getMessage());<a name="line.1783"></a>
-<span class="sourceLineNo">1784</span> }<a name="line.1784"></a>
-<span class="sourceLineNo">1785</span> }<a name="line.1785"></a>
-<span class="sourceLineNo">1786</span> } catch (KeeperException ke) {<a name="line.1786"></a>
-<span class="sourceLineNo">1787</span> sb.append("\nFATAL ZooKeeper Exception!\n");<a name="line.1787"></a>
-<span class="sourceLineNo">1788</span> sb.append("\n" + ke.getMessage());<a name="line.1788"></a>
-<span class="sourceLineNo">1789</span> }<a name="line.1789"></a>
-<span class="sourceLineNo">1790</span> return sb.toString();<a name="line.1790"></a>
-<span class="sourceLineNo">1791</span> }<a name="line.1791"></a>
-<span class="sourceLineNo">1792</span><a name="line.1792"></a>
-<span class="sourceLineNo">1793</span> /**<a name="line.1793"></a>
-<span class="sourceLineNo">1794</span> * Appends replication znodes to the passed StringBuilder.<a name="line.1794"></a>
-<span class="sourceLineNo">1795</span> *<a name="line.1795"></a>
-<span class="sourceLineNo">1796</span> * @param zkw reference to the {@link ZKWatcher} which also contains configuration and operation<a name="line.1796"></a>
-<span class="sourceLineNo">1797</span> * @param sb the {@link StringBuilder} to append to<a name="line.1797"></a>
-<span class="sourceLineNo">1798</span> * @throws KeeperException if a ZooKeeper operation fails<a name="line.1798"></a>
-<span class="sourceLineNo">1799</span> */<a name="line.1799"></a>
-<span class="sourceLineNo">1800</span> private static void getReplicationZnodesDump(ZKWatcher zkw, StringBuilder sb)<a name="line.1800"></a>
-<span class="sourceLineNo">1801</span> throws KeeperException {<a name="line.1801"></a>
-<span class="sourceLineNo">1802</span> String replicationZnode = zkw.znodePaths.replicationZNode;<a name="line.1802"></a>
-<span class="sourceLineNo">1803</span><a name="line.1803"></a>
-<span class="sourceLineNo">1804</span> if (ZKUtil.checkExists(zkw, replicationZnode) == -1) {<a name="line.1804"></a>
-<span class="sourceLineNo">1805</span> return;<a name="line.1805"></a>
-<span class="sourceLineNo">1806</span> }<a name="line.1806"></a>
-<span class="sourceLineNo">1807</span><a name="line.1807"></a>
-<span class="sourceLineNo">1808</span> // do a ls -r on this znode<a name="line.1808"></a>
-<span class="sourceLineNo">1809</span> sb.append("\n").append(replicationZnode).append(": ");<a name="line.1809"></a>
-<span class="sourceLineNo">1810</span> List<String> children = ZKUtil.listChildrenNoWatch(zkw, replicationZnode);<a name="line.1810"></a>
-<span class="sourceLineNo">1811</span> for (String child : children) {<a name="line.1811"></a>
-<span class="sourceLineNo">1812</span> String znode = ZNodePaths.joinZNode(replicationZnode, child);<a name="line.1812"></a>
-<span class="sourceLineNo">1813</span> if (znode.equals(zkw.znodePaths.peersZNode)) {<a name="line.1813"></a>
-<span class="sourceLineNo">1814</span> appendPeersZnodes(zkw, znode, sb);<a name="line.1814"></a>
-<span class="sourceLineNo">1815</span> } else if (znode.equals(zkw.znodePaths.queuesZNode)) {<a name="line.1815"></a>
-<span class="sourceLineNo">1816</span> appendRSZnodes(zkw, znode, sb);<a name="line.1816"></a>
-<span class="sourceLineNo">1817</span> } else if (znode.equals(zkw.znodePaths.hfileRefsZNode)) {<a name="line.1817"></a>
-<span class="sourceLineNo">1818</span> appendHFileRefsZnodes(zkw, znode, sb);<a name="line.1818"></a>
-<span class="sourceLineNo">1819</span> }<a name="line.1819"></a>
-<span class="sourceLineNo">1820</span> }<a name="line.1820"></a>
-<span class="sourceLineNo">1821</span> }<a name="line.1821"></a>
-<span class="sourceLineNo">1822</span><a name="line.1822"></a>
-<span class="sourceLineNo">1823</span> private static void appendHFileRefsZnodes(ZKWatcher zkw, String hfileRefsZnode,<a name="line.1823"></a>
-<span class="sourceLineNo">1824</span> StringBuilder sb) throws KeeperException {<a name="line.1824"></a>
-<span class="sourceLineNo">1825</span> sb.append("\n").append(hfileRefsZnode).append(": ");<a name="line.1825"></a>
-<span class="sourceLineNo">1826</span> for (String peerIdZnode : ZKUtil.listChildrenNoWatch(zkw, hfileRefsZnode)) {<a name="line.1826"></a>
-<span class="sourceLineNo">1827</span> String znodeToProcess = ZNodePaths.joinZNode(hfileRefsZnode, peerIdZnode);<a name="line.1827"></a>
-<span class="sourceLineNo">1828</span> sb.append("\n").append(znodeToProcess).append(": ");<a name="line.1828"></a>
-<span class="sourceLineNo">1829</span> List<String> peerHFileRefsZnodes = ZKUtil.listChildrenNoWatch(zkw, znodeToProcess);<a name="line.1829"></a>
-<span class="sourceLineNo">1830</span> int size = peerHFileRefsZnodes.size();<a name="line.1830"></a>
-<span class="sourceLineNo">1831</span> for (int i = 0; i < size; i++) {<a name="line.1831"></a>
-<span class="sourceLineNo">1832</span> sb.append(peerHFileRefsZnodes.get(i));<a name="line.1832"></a>
-<span class="sourceLineNo">1833</span> if (i != size - 1) {<a name="line.1833"></a>
-<span class="sourceLineNo">1834</span> sb.append(", ");<a name="line.1834"></a>
-<span class="sourceLineNo">1835</span> }<a name="line.1835"></a>
-<span class="sourceLineNo">1836</span> }<a name="line.1836"></a>
-<span class="sourceLineNo">1837</span> }<a name="line.1837"></a>
-<span class="sourceLineNo">1838</span> }<a name="line.1838"></a>
-<span class="sourceLineNo">1839</span><a name="line.1839"></a>
-<span class="sourceLineNo">1840</span> /**<a name="line.1840"></a>
-<span class="sourceLineNo">1841</span> * Returns a string with replication znodes and position of the replication log<a name="line.1841"></a>
-<span class="sourceLineNo">1842</span> * @param zkw reference to the {@link ZKWatcher} which also contains configuration and operation<a name="line.1842"></a>
-<span class="sourceLineNo">1843</span> * @return aq string of replication znodes and log positions<a name="line.1843"></a>
-<span class="sourceLineNo">1844</span> */<a name="line.1844"></a>
-<span class="sourceLineNo">1845</span> public static String getReplicationZnodesDump(ZKWatcher zkw) throws KeeperException {<a name="line.1845"></a>
-<span class="sourceLineNo">1846</span> StringBuilder sb = new StringBuilder();<a name="line.1846"></a>
-<span class="sourceLineNo">1847</span> getReplicationZnodesDump(zkw, sb);<a name="line.1847"></a>
-<span class="sourceLineNo">1848</span> return sb.toString();<a name="line.1848"></a>
-<span class="sourceLineNo">1849</span> }<a name="line.1849"></a>
-<span class="sourceLineNo">1850</span><a name="line.1850"></a>
-<span class="sourceLineNo">1851</span> private static void appendRSZnodes(ZKWatcher zkw, String znode, StringBuilder sb)<a name="line.1851"></a>
-<span class="sourceLineNo">1852</span> throws KeeperException {<a name="line.1852"></a>
-<span class="sourceLineNo">1853</span> List<String> stack = new LinkedList<>();<a name="line.1853"></a>
-<span class="sourceLineNo">1854</span> stack.add(znode);<a name="line.1854"></a>
-<span class="sourceLineNo">1855</span> do {<a name="line.1855"></a>
-<span class="sourceLineNo">1856</span> String znodeToProcess = stack.remove(stack.size() - 1);<a name="line.1856"></a>
-<span class="sourceLineNo">1857</span> sb.append("\n").append(znodeToProcess).append(": ");<a name="line.1857"></a>
-<span class="sourceLineNo">1858</span> byte[] data;<a name="line.1858"></a>
-<span class="sourceLineNo">1859</span> try {<a name="line.1859"></a>
-<span class="sourceLineNo">1860</span> data = ZKUtil.getData(zkw, znodeToProcess);<a name="line.1860"></a>
-<span class="sourceLineNo">1861</span> } catch (InterruptedException e) {<a name="line.1861"></a>
-<span class="sourceLineNo">1862</span> zkw.interruptedException(e);<a name="line.1862"></a>
-<span class="sourceLineNo">1863</span> return;<a name="line.1863"></a>
-<span class="sourceLineNo">1864</span> }<a name="line.1864"></a>
-<span class="sourceLineNo">1865</span> if (data != null && data.length > 0) { // log position<a name="line.1865"></a>
-<span class="sourceLineNo">1866</span> long position = 0;<a name="line.1866"></a>
-<span class="sourceLineNo">1867</span> try {<a name="line.1867"></a>
-<span class="sourceLineNo">1868</span> position = ZKUtil.parseWALPositionFrom(ZKUtil.getData(zkw, znodeToProcess));<a name="line.1868"></a>
-<span class="sourceLineNo">1869</span> sb.append(position);<a name="line.1869"></a>
-<span class="sourceLineNo">1870</span> } catch (DeserializationException ignored) {<a name="line.1870"></a>
-<span class="sourceLineNo">1871</span> } catch (InterruptedException e) {<a name="line.1871"></a>
-<span class="sourceLineNo">1872</span> zkw.interruptedException(e);<a name="line.1872"></a>
-<span class="sourceLineNo">1873</span> return;<a name="line.1873"></a>
-<span class="sourceLineNo">1874</span> }<a name="line.1874"></a>
-<span class="sourceLineNo">1875</span> }<a name="line.1875"></a>
-<span class="sourceLineNo">1876</span> for (String zNodeChild : ZKUtil.listChildrenNoWatch(zkw, znodeToProcess)) {<a name="line.1876"></a>
-<span class="sourceLineNo">1877</span> stack.add(ZNodePaths.joinZNode(znodeToProcess, zNodeChild));<a name="line.1877"></a>
-<span class="sourceLineNo">1878</span> }<a name="line.1878"></a>
-<span class="sourceLineNo">1879</span> } while (stack.size() > 0);<a name="line.1879"></a>
-<span class="sourceLineNo">1880</span> }<a name="line.1880"></a>
-<span class="sourceLineNo">1881</span><a name="line.1881"></a>
-<span class="sourceLineNo">1882</span> private static void appendPeersZnodes(ZKWatcher zkw, String peersZnode,<a name="line.1882"></a>
-<span class="sourceLineNo">1883</span> StringBuilder sb) throws KeeperException {<a name="line.1883"></a>
-<span class="sourceLineNo">1884</span> int pblen = ProtobufUtil.lengthOfPBMagic();<a name="line.1884"></a>
-<span class="sourceLineNo">1885</span> sb.append("\n").append(peersZnode).append(": ");<a name="line.1885"></a>
-<span class="sourceLineNo">1886</span> for (String peerIdZnode : ZKUtil.listChildrenNoWatch(zkw, peersZnode)) {<a name="line.1886"></a>
-<span class="sourceLineNo">1887</span> String znodeToProcess = ZNodePaths.joinZNode(peersZnode, peerIdZnode);<a name="line.1887"></a>
-<span class="sourceLineNo">1888</span> byte[] data;<a name="line.1888"></a>
-<span class="sourceLineNo">1889</span> try {<a name="line.1889"></a>
-<span class="sourceLineNo">1890</span> data = ZKUtil.getData(zkw, znodeToProcess);<a name="line.1890"></a>
-<span class="sourceLineNo">1891</span> } catch (InterruptedException e) {<a name="line.1891"></a>
-<span class="sourceLineNo">1892</span> zkw.interruptedException(e);<a name="line.1892"></a>
-<span class="sourceLineNo">1893</span> return;<a name="line.1893"></a>
-<span class="sourceLineNo">1894</span> }<a name="line.1894"></a>
-<span class="sourceLineNo">1895</span> // parse the data of the above peer znode.<a name="line.1895"></a>
-<span class="sourceLineNo">1896</span> try {<a name="line.1896"></a>
-<span class="sourceLineNo">1897</span> ReplicationProtos.ReplicationPeer.Builder builder =<a name="line.1897"></a>
-<span class="sourceLineNo">1898</span> ReplicationProtos.ReplicationPeer.newBuilder();<a name="line.1898"></a>
-<span class="sourceLineNo">1899</span> ProtobufUtil.mergeFrom(builder, data, pblen, data.length - pblen);<a name="line.1899"></a>
-<span class="sourceLineNo">1900</span> String clusterKey = builder.getClusterkey();<a name="line.1900"></a>
-<span class="sourceLineNo">1901</span> sb.append("\n").append(znodeToProcess).append(": ").append(clusterKey);<a name="line.1901"></a>
-<span class="sourceLineNo">1902</span> // add the peer-state.<a name="line.1902"></a>
-<span class="sourceLineNo">1903</span> appendPeerState(zkw, znodeToProcess, sb);<a name="line.1903"></a>
-<span class="sourceLineNo">1904</span> } catch (IOException ipbe) {<a name="line.1904"></a>
-<span class="sourceLineNo">1905</span> LOG.warn("Got Exception while parsing peer: " + znodeToProcess, ipbe);<a name="line.1905"></a>
-<span class="sourceLineNo">1906</span> }<a name="line.1906"></a>
-<span class="sourceLineNo">1907</span> }<a name="line.1907"></a>
-<span class="sourceLineNo">1908</span> }<a name="line.1908"></a>
-<span class="sourceLineNo">1909</span><a name="line.1909"></a>
-<span class="sourceLineNo">1910</span> private static void appendPeerState(ZKWatcher zkw, String znodeToProcess, StringBuilder sb)<a name="line.1910"></a>
-<span class="sourceLineNo">1911</span> throws KeeperException, InvalidProtocolBufferException {<a name="line.1911"></a>
-<span class="sourceLineNo">1912</span> String peerState = zkw.getConfiguration().get("zookeeper.znode.replication.peers.state",<a name="line.1912"></a>
-<span class="sourceLineNo">1913</span> "peer-state");<a name="line.1913"></a>
-<span class="sourceLineNo">1914</span> int pblen = ProtobufUtil.lengthOfPBMagic();<a name="line.1914"></a>
-<span class="sourceLineNo">1915</span> for (String child : ZKUtil.listChildrenNoWatch(zkw, znodeToProcess)) {<a name="line.1915"></a>
-<span class="sourceLineNo">1916</span> if (!child.equals(peerState)) {<a name="line.1916"></a>
-<span class="sourceLineNo">1917</span> continue;<a name="line.1917"></a>
-<span class="sourceLineNo">1918</span> }<a name="line.1918"></a>
-<span class="sourceLineNo">1919</span><a name="line.1919"></a>
-<span class="sourceLineNo">1920</span> String peerStateZnode = ZNodePaths.joinZNode(znodeToProcess, child);<a name="line.1920"></a>
-<span class="sourceLineNo">1921</span> sb.append("\n").append(peerStateZnode).append(": ");<a name="line.1921"></a>
-<span class="sourceLineNo">1922</span> byte[] peerStateData;<a name="line.1922"></a>
-<span class="sourceLineNo">1923</span> try {<a name="line.1923"></a>
-<span class="sourceLineNo">1924</span> peerStateData = ZKUtil.getData(zkw, peerStateZnode);<a name="line.1924"></a>
-<span class="sourceLineNo">1925</span> ReplicationProtos.ReplicationState.Builder builder =<a name="line.1925"></a>
-<span class="sourceLineNo">1926</span> ReplicationProtos.ReplicationState.newBuilder();<a name="line.1926"></a>
-<span class="sourceLineNo">1927</span> ProtobufUtil.mergeFrom(builder, peerStateData, pblen, peerStateData.length - pblen);<a name="line.1927"></a>
-<span class="sourceLineNo">1928</span> sb.append(builder.getState().name());<a name="line.1928"></a>
-<span class="sourceLineNo">1929</span> } catch (IOException ipbe) {<a name="line.1929"></a>
-<span class="sourceLineNo">1930</span> LOG.warn("Got Exception while parsing peer: " + znodeToProcess, ipbe);<a name="line.1930"></a>
-<span class="sourceLineNo">1931</span> } catch (InterruptedException e) {<a name="line.1931"></a>
-<span class="sourceLineNo">1932</span> zkw.interruptedException(e);<a name="line.1932"></a>
-<span class="sourceLineNo">1933</span> return;<a name="line.1933"></a>
-<span class="sourceLineNo">1934</span> }<a name="line.1934"></a>
-<span class="sourceLineNo">1935</span> }<a name="line.1935"></a>
-<span class="sourceLineNo">1936</span> }<a name="line.1936"></a>
-<span class="sourceLineNo">1937</span><a name="line.1937"></a>
-<span class="sourceLineNo">1938</span> /**<a name="line.1938"></a>
-<span class="sourceLineNo">1939</span> * Gets the statistics from the given server.<a name="line.1939"></a>
-<span class="sourceLineNo">1940</span> *<a name="line.1940"></a>
-<span class="sourceLineNo">1941</span> * @param server The server to get the statistics from.<a name="line.1941"></a>
-<span class="sourceLineNo">1942</span> * @param timeout The socket timeout to use.<a name="line.1942"></a>
-<span class="sourceLineNo">1943</span> * @return The array of response strings.<a name="line.1943"></a>
-<span class="sourceLineNo">1944</span> * @throws IOException When the socket communication fails.<a name="line.1944"></a>
-<span class="sourceLineNo">1945</span> */<a name="line.1945"></a>
-<span class="sourceLineNo">1946</span> public static String[] getServerStats(String server, int timeout)<a name="line.1946"></a>
-<span class="sourceLineNo">1947</span> throws IOException {<a name="line.1947"></a>
-<span class="sourceLineNo">1948</span> String[] sp = server.split(":");<a name="line.1948"></a>
-<span class="sourceLineNo">1949</span> if (sp == null || sp.length == 0) {<a name="line.1949"></a>
-<span class="sourceLineNo">1950</span> return null;<a name="line.1950"></a>
-<span class="sourceLineNo">1951</span> }<a name="line.1951"></a>
-<span class="sourceLineNo">1952</span><a name="line.1952"></a>
-<span class="sourceLineNo">1953</span> String host = sp[0];<a name="line.1953"></a>
-<span class="sourceLineNo">1954</span> int port = sp.length > 1 ? Integer.parseInt(sp[1])<a name="line.1954"></a>
-<span class="sourceLineNo">1955</span> : HConstants.DEFAULT_ZOOKEEPER_CLIENT_PORT;<a name="line.1955"></a>
-<span class="sourceLineNo">1956</span><a name="line.1956"></a>
-<span class="sourceLineNo">1957</span> InetSocketAddress sockAddr = new InetSocketAddress(host, port);<a name="line.1957"></a>
-<span class="sourceLineNo">1958</span> try (Socket socket = new Socket()) {<a name="line.1958"></a>
-<span class="sourceLineNo">1959</span> socket.connect(sockAddr, timeout);<a name="line.1959"></a>
-<span class="sourceLineNo">1960</span><a name="line.1960"></a>
-<span class="sourceLineNo">1961</span> socket.setSoTimeout(timeout);<a name="line.1961"></a>
-<span class="sourceLineNo">1962</span> try (PrintWriter out = new PrintWriter(new BufferedWriter(<a name="line.1962"></a>
-<span class="sourceLineNo">1963</span> new OutputStreamWriter(socket.getOutputStream(), StandardCharsets.UTF_8)), true);<a name="line.1963"></a>
-<span class="sourceLineNo">1964</span> BufferedReader in = new BufferedReader(<a name="line.1964"></a>
-<span class="sourceLineNo">1965</span> new InputStreamReader(socket.getInputStream(), StandardCharsets.UTF_8))) {<a name="line.1965"></a>
-<span class="sourceLineNo">1966</span> out.println("stat");<a name="line.1966"></a>
-<span class="sourceLineNo">1967</span> out.flush();<a name="line.1967"></a>
-<span class="sourceLineNo">1968</span> ArrayList<String> res = new ArrayList<>();<a name="line.1968"></a>
-<span class="sourceLineNo">1969</span> while (true) {<a name="line.1969"></a>
-<span class="sourceLineNo">1970</span> String line = in.readLine();<a name="line.1970"></a>
-<span class="sourceLineNo">1971</span> if (line != null) {<a name="line.1971"></a>
-<span class="sourceLineNo">1972</span> res.add(line);<a name="line.1972"></a>
-<span class="sourceLineNo">1973</span> } else {<a name="line.1973"></a>
-<span class="sourceLineNo">1974</span> break;<a name="line.1974"></a>
-<span class="sourceLineNo">1975</span> }<a name="line.1975"></a>
-<span class="sourceLineNo">1976</span> }<a name="line.1976"></a>
-<span class="sourceLineNo">1977</span> return res.toArray(new String[res.size()]);<a name="line.1977"></a>
-<span class="sourceLineNo">1978</span> }<a name="line.1978"></a>
-<span class="sourceLineNo">1979</span> }<a name="line.1979"></a>
-<span class="sourceLineNo">1980</span> }<a name="line.1980"></a>
-<span class="sourceLineNo">1981</span><a name="line.1981"></a>
-<span class="sourceLineNo">1982</span> private static void logRetrievedMsg(final ZKWatcher zkw,<a name="line.1982"></a>
-<span class="sourceLineNo">1983</span> final String znode, final byte [] data, final boolean watcherSet) {<a name="line.1983"></a>
-<span class="sourceLineNo">1984</span> if (!LOG.isTraceEnabled()) {<a name="line.1984"></a>
-<span class="sourceLineNo">1985</span> return;<a name="line.1985"></a>
-<span class="sourceLineNo">1986</span> }<a name="line.1986"></a>
-<span class="sourceLineNo">1987</span><a name="line.1987"></a>
-<span class="sourceLineNo">1988</span> LOG.trace(zkw.prefix("Retrieved " + ((data == null)? 0: data.length) +<a name="line.1988"></a>
-<span class="sourceLineNo">1989</span> " byte(s) of data from znode " + znode +<a name="line.1989"></a>
-<span class="sourceLineNo">1990</span> (watcherSet? " and set watcher; ": "; data=") +<a name="line.1990"></a>
-<span class="sourceLineNo">1991</span> (data == null? "null": data.length == 0? "empty": (<a name="line.1991"></a>
-<span class="sourceLineNo">1992</span> znode.startsWith(zkw.znodePaths.metaZNodePrefix)?<a name="line.1992"></a>
-<span class="sourceLineNo">1993</span> getServerNameOrEmptyString(data):<a name="line.1993"></a>
-<span class="sourceLineNo">1994</span> znode.startsWith(zkw.znodePaths.backupMasterAddressesZNode)?<a name="line.1994"></a>
-<span class="sourceLineNo">1995</span> getServerNameOrEmptyString(data):<a name="line.1995"></a>
-<span class="sourceLineNo">1996</span> StringUtils.abbreviate(Bytes.toStringBinary(data), 32)))));<a name="line.1996"></a>
-<span class="sourceLineNo">1997</span> }<a name="line.1997"></a>
-<span class="sourceLineNo">1998</span><a name="line.1998"></a>
-<span class="sourceLineNo">1999</span> private static String getServerNameOrEmptyString(final byte [] data) {<a name="line.1999"></a>
-<span class="sourceLineNo">2000</span> try {<a name="line.2000"></a>
-<span class="sourceLineNo">2001</span> return ProtobufUtil.parseServerNameFrom(data).toString();<a name="line.2001"></a>
-<span class="sourceLineNo">2002</span> } catch (DeserializationException e) {<a name="line.2002"></a>
-<span class="sourceLineNo">2003</span> return "";<a name="line.2003"></a>
-<span class="sourceLineNo">2004</span> }<a name="line.2004"></a>
-<span class="sourceLineNo">2005</span> }<a name="line.2005"></a>
-<span class="sourceLineNo">2006</span><a name="line.2006"></a>
-<span class="sourceLineNo">2007</span> /**<a name="line.2007"></a>
-<span class="sourceLineNo">2008</span> * Waits for HBase installation's base (parent) znode to become available.<a name="line.2008"></a>
-<span class="sourceLineNo">2009</span> * @throws IOException on ZK errors<a name="line.2009"></a>
-<span class="sourceLineNo">2010</span> */<a name="line.2010"></a>
-<span class="sourceLineNo">2011</span> public static void waitForBaseZNode(Configuration conf) throws IOException {<a name="line.2011"></a>
-<span class="sourceLineNo">2012</span> LOG.info("Waiting until the base znode is available");<a name="line.2012"></a>
-<span class="sourceLineNo">2013</span> String parentZNode = conf.get(HConstants.ZOOKEEPER_ZNODE_PARENT,<a name="line.2013"></a>
-<span class="sourceLineNo">2014</span> HConstants.DEFAULT_ZOOKEEPER_ZNODE_PARENT);<a name="line.2014"></a>
-<span class="sourceLineNo">2015</span> ZooKeeper zk = new ZooKeeper(ZKConfig.getZKQuorumServersString(conf),<a name="line.2015"></a>
-<span class="sourceLineNo">2016</span> conf.getInt(HConstants.ZK_SESSION_TIMEOUT,<a name="line.2016"></a>
-<span class="sourceLineNo">2017</span> HConstants.DEFAULT_ZK_SESSION_TIMEOUT), EmptyWatcher.instance);<a name="line.2017"></a>
-<span class="sourceLineNo">2018</span><a name="line.2018"></a>
-<span class="sourceLineNo">2019</span> final int maxTimeMs = 10000;<a name="line.2019"></a>
-<span class="sourceLineNo">2020</span> final int maxNumAttempts = maxTimeMs / HConstants.SOCKET_RETRY_WAIT_MS;<a name="line.2020"></a>
-<span class="sourceLineNo">2021</span><a name="line.2021"></a>
-<span class="sourceLineNo">2022</span> KeeperException keeperEx = null;<a name="line.2022"></a>
-<span class="sourceLineNo">2023</span> try {<a name="line.2023"></a>
-<span class="sourceLineNo">2024</span> try {<a name="line.2024"></a>
-<span class="sourceLineNo">2025</span> for (int attempt = 0; attempt < maxNumAttempts; ++attempt) {<a name="line.2025"></a>
-<span class="sourceLineNo">2026</span> try {<a name="line.2026"></a>
-<span class="sourceLineNo">2027</span> if (zk.exists(parentZNode, false) != null) {<a name="line.2027"></a>
-<span class="sourceLineNo">2028</span> LOG.info("Parent znode exists: " + parentZNode);<a name="line.2028"></a>
-<span class="sourceLineNo">2029</span> keeperEx = null;<a name="line.2029"></a>
-<span class="sourceLineNo">2030</span> break;<a name="line.2030"></a>
-<span class="sourceLineNo">2031</span> }<a name="line.2031"></a>
-<span class="sourceLineNo">2032</span> } catch (KeeperException e) {<a name="line.2032"></a>
-<span class="sourceLineNo">2033</span> keeperEx = e;<a name="line.2033"></a>
-<span class="sourceLineNo">2034</span> }<a name="line.2034"></a>
-<span class="sourceLineNo">2035</span> Threads.sleepWithoutInterrupt(HConstants.SOCKET_RETRY_WAIT_MS);<a name="line.2035"></a>
-<span class="sourceLineNo">2036</span> }<a name="line.2036"></a>
-<span class="sourceLineNo">2037</span> } finally {<a name="line.2037"></a>
-<span class="sourceLineNo">2038</span> zk.close();<a name="line.2038"></a>
-<span class="sourceLineNo">2039</span> }<a name="line.2039"></a>
-<span class="sourceLineNo">2040</span> } catch (InterruptedException ex) {<a name="line.2040"></a>
-<span class="sourceLineNo">2041</span> Thread.currentThread().interrupt();<a name="line.2041"></a>
-<span class="sourceLineNo">2042</span> }<a name="line.2042"></a>
-<span class="sourceLineNo">2043</span><a name="line.2043"></a>
-<span class="sourceLineNo">2044</span> if (keeperEx != null) {<a name="line.2044"></a>
-<span class="sourceLineNo">2045</span> throw new IOException(keeperEx);<a name="line.2045"></a>
-<span class="sourceLineNo">2046</span> }<a name="line.2046"></a>
-<span class="sourceLineNo">2047</span> }<a name="line.2047"></a>
-<span class="sourceLineNo">2048</span><a name="line.2048"></a>
-<span class="sourceLineNo">2049</span> /**<a name="line.2049"></a>
-<span class="sourceLineNo">2050</span> * Convert a {@link DeserializationException} to a more palatable {@link KeeperException}.<a name="line.2050"></a>
-<span class="sourceLineNo">2051</span> * Used when can't let a {@link DeserializationException} out w/o changing public API.<a name="line.2051"></a>
-<span class="sourceLineNo">2052</span> * @param e Exception to convert<a name="line.2052"></a>
-<span class="sourceLineNo">2053</span> * @return Converted exception<a name="line.2053"></a>
-<span class="sourceLineNo">2054</span> */<a name="line.2054"></a>
-<span class="sourceLineNo">2055</span> public static KeeperException convert(final DeserializationException e) {<a name="line.2055"></a>
-<span class="sourceLineNo">2056</span> KeeperException ke = new KeeperException.DataInconsistencyException();<a name="line.2056"></a>
-<span class="sourceLineNo">2057</span> ke.initCause(e);<a name="line.2057"></a>
-<span class="sourceLineNo">2058</span> return ke;<a name="line.2058"></a>
-<span class="sourceLineNo">2059</span> }<a name="line.2059"></a>
-<span class="sourceLineNo">2060</span><a name="line.2060"></a>
-<span class="sourceLineNo">2061</span> /**<a name="line.2061"></a>
-<span class="sourceLineNo">2062</span> * Recursively print the current state of ZK (non-transactional)<a name="line.2062"></a>
-<span class="sourceLineNo">2063</span> * @param root name of the root directory in zk to print<a name="line.2063"></a>
-<span class="sourceLineNo">2064</span> */<a name="line.2064"></a>
-<span class="sourceLineNo">2065</span> public static void logZKTree(ZKWatcher zkw, String root) {<a name="line.2065"></a>
-<span class="sourceLineNo">2066</span> if (!LOG.isDebugEnabled()) {<a name="line.2066"></a>
-<span class="sourceLineNo">2067</span> return;<a name="line.2067"></a>
-<span class="sourceLineNo">2068</span> }<a name="line.2068"></a>
-<span class="sourceLineNo">2069</span><a name="line.2069"></a>
-<span class="sourceLineNo">2070</span> LOG.debug("Current zk system:");<a name="line.2070"></a>
-<span class="sourceLineNo">2071</span> String prefix = "|-";<a name="line.2071"></a>
-<span class="sourceLineNo">2072</span> LOG.debug(prefix + root);<a name="line.2072"></a>
-<span class="sourceLineNo">2073</span> try {<a name="line.2073"></a>
-<span class="sourceLineNo">2074</span> logZKTree(zkw, root, prefix);<a name="line.2074"></a>
-<span class="sourceLineNo">2075</span> } catch (KeeperException e) {<a name="line.2075"></a>
-<span class="sourceLineNo">2076</span> throw new RuntimeException(e);<a name="line.2076"></a>
-<span class="sourceLineNo">2077</span> }<a name="line.2077"></a>
-<span class="sourceLineNo">2078</span> }<a name="line.2078"></a>
-<span class="sourceLineNo">2079</span><a name="line.2079"></a>
-<span class="sourceLineNo">2080</span> /**<a name="line.2080"></a>
-<span class="sourceLineNo">2081</span> * Helper method to print the current state of the ZK tree.<a name="line.2081"></a>
-<span class="sourceLineNo">2082</span> * @see #logZKTree(ZKWatcher, String)<a name="line.2082"></a>
-<span class="sourceLineNo">2083</span> * @throws KeeperException if an unexpected exception occurs<a name="line.2083"></a>
-<span class="sourceLineNo">2084</span> */<a name="line.2084"></a>
-<span class="sourceLineNo">2085</span> protected static void logZKTree(ZKWatcher zkw, String root, String prefix)<a name="line.2085"></a>
-<span class="sourceLineNo">2086</span> throws KeeperException {<a name="line.2086"></a>
-<span class="sourceLineNo">2087</span> List<String> children = ZKUtil.listChildrenNoWatch(zkw, root);<a name="line.2087"></a>
-<span class="sourceLineNo">2088</span><a name="line.2088"></a>
-<span class="sourceLineNo">2089</span> if (children == null) {<a name="line.2089"></a>
-<span class="sourceLineNo">2090</span> return;<a name="line.2090"></a>
-<span class="sourceLineNo">2091</span> }<a name="line.2091"></a>
-<span class="sourceLineNo">2092</span><a name="line.2092"></a>
-<span class="sourceLineNo">2093</span> for (String child : children) {<a name="line.2093"></a>
-<span class="sourceLineNo">2094</span> LOG.debug(prefix + child);<a name="line.2094"></a>
-<span class="sourceLineNo">2095</span> String node = ZNodePaths.joinZNode(root.equals("/") ? "" : root, child);<a name="line.2095"></a>
-<span class="sourceLineNo">2096</span> logZKTree(zkw, node, prefix + "---");<a name="line.2096"></a>
-<span class="sourceLineNo">2097</span> }<a name="line.2097"></a>
-<span class="sourceLineNo">2098</span> }<a name="line.2098"></a>
-<span class="sourceLineNo">2099</span><a name="line.2099"></a>
-<span class="sourceLineNo">2100</span> /**<a name="line.2100"></a>
-<span class="sourceLineNo">2101</span> * @param position the position to serialize<a name="line.2101"></a>
-<span class="sourceLineNo">2102</span> * @return Serialized protobuf of <code>position</code> with pb magic prefix prepended suitable<a name="line.2102"></a>
-<span class="sourceLineNo">2103</span> * for use as content of an wal position in a replication queue.<a name="line.2103"></a>
-<span class="sourceLineNo">2104</span> */<a name="line.2104"></a>
-<span class="sourceLineNo">2105</span> public static byte[] positionToByteArray(final long position) {<a name="line.2105"></a>
-<span class="sourceLineNo">2106</span> byte[] bytes = ReplicationProtos.ReplicationHLogPosition.newBuilder().setPosition(position)<a name="line.2106"></a>
-<span class="sourceLineNo">2107</span> .build().toByteArray();<a name="line.2107"></a>
-<span class="sourceLineNo">2108</span> return ProtobufUtil.prependPBMagic(bytes);<a name="line.2108"></a>
-<span class="sourceLineNo">2109</span> }<a name="line.2109"></a>
-<span class="sourceLineNo">2110</span><a name="line.2110"></a>
-<span class="sourceLineNo">2111</span> /**<a name="line.2111"></a>
-<span class="sourceLineNo">2112</span> * @param bytes - Content of a WAL position znode.<a name="line.2112"></a>
-<span class="sourceLineNo">2113</span> * @return long - The current WAL position.<a name="line.2113"></a>
-<span class="sourceLineNo">2114</span> * @throws DeserializationException if the WAL position cannot be parsed<a name="line.2114"></a>
-<span class="sourceLineNo">2115</span> */<a name="line.2115"></a>
-<span class="sourceLineNo">2116</span> public static long parseWALPositionFrom(final byte[] bytes) throws DeserializationException {<a name="line.2116"></a>
-<span class="sourceLineNo">2117</span> if (bytes == null) {<a name="line.2117"></a>
-<span class="sourceLineNo">2118</span> throw new DeserializationException("Unable to parse null WAL position.");<a name="line.2118"></a>
-<span class="sourceLineNo">2119</span> }<a name="line.2119"></a>
-<span class="sourceLineNo">2120</span> if (ProtobufUtil.isPBMagicPrefix(bytes)) {<a name="line.2120"></a>
-<span class="sourceLineNo">2121</span> int pblen = ProtobufUtil.lengthOfPBMagic();<a name="line.2121"></a>
-<span class="sourceLineNo">2122</span> ReplicationProtos.ReplicationHLogPosition.Builder builder =<a name="line.2122"></a>
-<span class="sourceLineNo">2123</span> ReplicationProtos.ReplicationHLogPosition.newBuilder();<a name="line.2123"></a>
-<span class="sourceLineNo">2124</span> ReplicationProtos.ReplicationHLogPosition position;<a name="line.2124"></a>
-<span class="sourceLineNo">2125</span> try {<a name="line.2125"></a>
-<span class="sourceLineNo">2126</span> ProtobufUtil.mergeFrom(builder, bytes, pblen, bytes.length - pblen);<a name="line.2126"></a>
-<span class="sourceLineNo">2127</span> position = builder.build();<a name="line.2127"></a>
-<span class="sourceLineNo">2128</span> } catch (IOException e) {<a name="line.2128"></a>
-<span class="sourceLineNo">2129</span> throw new DeserializationException(e);<a name="line.2129"></a>
-<span class="sourceLineNo">2130</span> }<a name="line.2130"></a>
-<span class="sourceLineNo">2131</span> return position.getPosition();<a name="line.2131"></a>
-<span class="sourceLineNo">2132</span> } else {<a name="line.2132"></a>
-<span class="sourceLineNo">2133</span> if (bytes.length > 0) {<a name="line.2133"></a>
-<span class="sourceLineNo">2134</span> return Bytes.toLong(bytes);<a name="line.2134"></a>
-<span class="sourceLineNo">2135</span> }<a name="line.2135"></a>
-<span class="sourceLineNo">2136</span> return 0;<a name="line.2136"></a>
-<span class="sourceLineNo">2137</span> }<a name="line.2137"></a>
-<span class="sourceLineNo">2138</span> }<a name="line.2138"></a>
-<span class="sourceLineNo">2139</span>}<a name="line.2139"></a>
+<span class="sourceLineNo">1746</span> for (String child : listChildrenNoWatch(zkw,<a name="line.1746"></a>
+<span class="sourceLineNo">1747</span> zkw.getZNodePaths().backupMasterAddressesZNode)) {<a name="line.1747"></a>
+<span class="sourceLineNo">1748</span> sb.append("\n ").append(child);<a name="line.1748"></a>
+<span class="sourceLineNo">1749</span> }<a name="line.1749"></a>
+<span class="sourceLineNo">1750</span> sb.append("\nRegion server holding hbase:meta: "<a name="line.1750"></a>
+<span class="sourceLineNo">1751</span> + new MetaTableLocator().getMetaRegionLocation(zkw));<a name="line.1751"></a>
+<span class="sourceLineNo">1752</span> Configuration conf = HBaseConfiguration.create();<a name="line.1752"></a>
+<span class="sourceLineNo">1753</span> int numMetaReplicas = conf.getInt(HConstants.META_REPLICAS_NUM,<a name="line.1753"></a>
+<span class="sourceLineNo">1754</span> HConstants.DEFAULT_META_REPLICA_NUM);<a name="line.1754"></a>
+<span class="sourceLineNo">1755</span> for (int i = 1; i < numMetaReplicas; i++) {<a name="line.1755"></a>
+<span class="sourceLineNo">1756</span> sb.append("\nRegion server holding hbase:meta, replicaId " + i + " "<a name="line.1756"></a>
+<span class="sourceLineNo">1757</span> + new MetaTableLocator().getMetaRegionLocation(zkw, i));<a name="line.1757"></a>
+<span class="sourceLineNo">1758</span> }<a name="line.1758"></a>
+<span class="sourceLineNo">1759</span> sb.append("\nRegion servers:");<a name="line.1759"></a>
+<span class="sourceLineNo">1760</span> for (String child : listChildrenNoWatch(zkw, zkw.getZNodePaths().rsZNode)) {<a name="line.1760"></a>
+<span class="sourceLineNo">1761</span> sb.append("\n ").append(child);<a name="line.1761"></a>
+<span class="sourceLineNo">1762</span> }<a name="line.1762"></a>
+<span class="sourceLineNo">1763</span> try {<a name="line.1763"></a>
+<span class="sourceLineNo">1764</span> getReplicationZnodesDump(zkw, sb);<a name="line.1764"></a>
+<span class="sourceLineNo">1765</span> } catch (KeeperException ke) {<a name="line.1765"></a>
+<span class="sourceLineNo">1766</span> LOG.warn("Couldn't get the replication znode dump", ke);<a name="line.1766"></a>
+<span class="sourceLineNo">1767</span> }<a name="line.1767"></a>
+<span class="sourceLineNo">1768</span> sb.append("\nQuorum Server Statistics:");<a name="line.1768"></a>
+<span class="sourceLineNo">1769</span> String[] servers = zkw.getQuorum().split(",");<a name="line.1769"></a>
+<span class="sourceLineNo">1770</span> for (String server : servers) {<a name="line.1770"></a>
+<span class="sourceLineNo">1771</span> sb.append("\n ").append(server);<a name="line.1771"></a>
+<span class="sourceLineNo">1772</span> try {<a name="line.1772"></a>
+<span class="sourceLineNo">1773</span> String[] stat = getServerStats(server, ZKUtil.zkDumpConnectionTimeOut);<a name="line.1773"></a>
+<span class="sourceLineNo">1774</span><a name="line.1774"></a>
+<span class="sourceLineNo">1775</span> if (stat == null) {<a name="line.1775"></a>
+<span class="sourceLineNo">1776</span> sb.append("[Error] invalid quorum server: " + server);<a name="line.1776"></a>
+<span class="sourceLineNo">1777</span> break;<a name="line.1777"></a>
+<span class="sourceLineNo">1778</span> }<a name="line.1778"></a>
+<span class="sourceLineNo">1779</span><a name="line.1779"></a>
+<span class="sourceLineNo">1780</span> for (String s : stat) {<a name="line.1780"></a>
+<span class="sourceLineNo">1781</span> sb.append("\n ").append(s);<a name="line.1781"></a>
+<span class="sourceLineNo">1782</span> }<a name="line.1782"></a>
+<span class="sourceLineNo">1783</span> } catch (Exception e) {<a name="line.1783"></a>
+<span class="sourceLineNo">1784</span> sb.append("\n ERROR: ").append(e.getMessage());<a name="line.1784"></a>
+<span class="sourceLineNo">1785</span> }<a name="line.1785"></a>
+<span class="sourceLineNo">1786</span> }<a name="line.1786"></a>
+<span class="sourceLineNo">1787</span> } catch (KeeperException ke) {<a name="line.1787"></a>
+<span class="sourceLineNo">1788</span> sb.append("\nFATAL ZooKeeper Exception!\n");<a name="line.1788"></a>
+<span class="sourceLineNo">1789</span> sb.append("\n" + ke.getMessage());<a name="line.1789"></a>
+<span class="sourceLineNo">1790</span> }<a name="line.1790"></a>
+<span class="sourceLineNo">1791</span> return sb.toString();<a name="line.1791"></a>
+<span class="sourceLineNo">1792</span> }<a name="line.1792"></a>
+<span class="sourceLineNo">1793</span><a name="line.1793"></a>
+<span class="sourceLineNo">1794</span> /**<a name="line.1794"></a>
+<span class="sourceLineNo">1795</span> * Appends replication znodes to the passed StringBuilder.<a name="line.1795"></a>
+<span class="sourceLineNo">1796</span> *<a name="line.1796"></a>
+<span class="sourceLineNo">1797</span> * @param zkw reference to the {@link ZKWatcher} which also contains configuration and operation<a name="line.1797"></a>
+<span class="sourceLineNo">1798</span> * @param sb the {@link StringBuilder} to append to<a name="line.1798"></a>
+<span class="sourceLineNo">1799</span> * @throws KeeperException if a ZooKeeper operation fails<a name="line.1799"></a>
+<span class="sourceLineNo">1800</span> */<a name="line.1800"></a>
+<span class="sourceLineNo">1801</span> private static void getReplicationZnodesDump(ZKWatcher zkw, StringBuilder sb)<a name="line.1801"></a>
+<span class="sourceLineNo">1802</span> throws KeeperException {<a name="line.1802"></a>
+<span class="sourceLineNo">1803</span> String replicationZnode = zkw.getZNodePaths().replicationZNode;<a name="line.1803"></a>
+<span class="sourceLineNo">1804</span><a name="line.1804"></a>
+<span class="sourceLineNo">1805</span> if (ZKUtil.checkExists(zkw, replicationZnode) == -1) {<a name="line.1805"></a>
+<span class="sourceLineNo">1806</span> return;<a name="line.1806"></a>
+<span class="sourceLineNo">1807</span> }<a name="line.1807"></a>
+<span class="sourceLineNo">1808</span><a name="line.1808"></a>
+<span class="sourceLineNo">1809</span> // do a ls -r on this znode<a name="line.1809"></a>
+<span class="sourceLineNo">1810</span> sb.append("\n").append(replicationZnode).append(": ");<a name="line.1810"></a>
+<span class="sourceLineNo">1811</span> List<String> children = ZKUtil.listChildrenNoWatch(zkw, replicationZnode);<a name="line.1811"></a>
+<span class="sourceLineNo">1812</span> for (String child : children) {<a name="line.1812"></a>
+<span class="sourceLineNo">1813</span> String znode = ZNodePaths.joinZNode(replicationZnode, child);<a name="line.1813"></a>
+<span class="sourceLineNo">1814</span> if (znode.equals(zkw.getZNodePaths().peersZNode)) {<a name="line.1814"></a>
+<span class="sourceLineNo">1815</span> appendPeersZnodes(zkw, znode, sb);<a name="line.1815"></a>
+<span class="sourceLineNo">1816</span> } else if (znode.equals(zkw.getZNodePaths().queuesZNode)) {<a name="line.1816"></a>
+<span class="sourceLineNo">1817</span> appendRSZnodes(zkw, znode, sb);<a name="line.1817"></a>
+<span class="sourceLineNo">1818</span> } else if (znode.equals(zkw.getZNodePaths().hfileRefsZNode)) {<a name="line.1818"></a>
+<span class="sourceLineNo">1819</span> appendHFileRefsZnodes(zkw, znode, sb);<a name="line.1819"></a>
+<span class="sourceLineNo">1820</span> }<a name="line.1820"></a>
+<span class="sourceLineNo">1821</span> }<a name="line.1821"></a>
+<span class="sourceLineNo">1822</span> }<a name="line.1822"></a>
+<span class="sourceLineNo">1823</span><a name="line.1823"></a>
+<span class="sourceLineNo">1824</span> private static void appendHFileRefsZnodes(ZKWatcher zkw, String hfileRefsZnode,<a name="line.1824"></a>
+<span class="sourceLineNo">1825</span> StringBuilder sb) throws KeeperException {<a name="line.1825"></a>
+<span class="sourceLineNo">1826</span> sb.append("\n").append(hfileRefsZnode).append(": ");<a name="line.1826"></a>
+<span class="sourceLineNo">1827</span> for (String peerIdZnode : ZKUtil.listChildrenNoWatch(zkw, hfileRefsZnode)) {<a name="line.1827"></a>
+<span class="sourceLineNo">1828</span> String znodeToProcess = ZNodePaths.joinZNode(hfileRefsZnode, peerIdZnode);<a name="line.1828"></a>
+<span class="sourceLineNo">1829</span> sb.append("\n").append(znodeToProcess).append(": ");<a name="line.1829"></a>
+<span class="sourceLineNo">1830</span> List<String> peerHFileRefsZnodes = ZKUtil.listChildrenNoWatch(zkw, znodeToProcess);<a name="line.1830"></a>
+<span class="sourceLineNo">1831</span> int size = peerHFileRefsZnodes.size();<a name="line.1831"></a>
+<span class="sourceLineNo">1832</span> for (int i = 0; i < size; i++) {<a name="line.1832"></a>
+<span class="sourceLineNo">1833</span> sb.append(peerHFileRefsZnodes.get(i));<a name="line.1833"></a>
+<span class="sourceLineNo">1834</span> if (i != size - 1) {<a name="line.1834"></a>
+<span class="sourceLineNo">1835</span> sb.append(", ");<a name="line.1835"></a>
+<span class="sourceLineNo">1836</span> }<a name="line.1836"></a>
+<span class="sourceLineNo">1837</span> }<a name="line.1837"></a>
+<span class="sourceLineNo">1838</span> }<a name="line.1838"></a>
+<span class="sourceLineNo">1839</span> }<a name="line.1839"></a>
+<span class="sourceLineNo">1840</span><a name="line.1840"></a>
+<span class="sourceLineNo">1841</span> /**<a name="line.1841"></a>
+<span class="sourceLineNo">1842</span> * Returns a string with replication znodes and position of the replication log<a name="line.1842"></a>
+<span class="sourceLineNo">1843</span> * @param zkw reference to the {@link ZKWatcher} which also contains configuration and operation<a name="line.1843"></a>
+<span class="sourceLineNo">1844</span> * @return aq string of replication znodes and log positions<a name="line.1844"></a>
+<span class="sourceLineNo">1845</span> */<a name="line.1845"></a>
+<span class="sourceLineNo">1846</span> public static String getReplicationZnodesDump(ZKWatcher zkw) throws KeeperException {<a name="line.1846"></a>
+<span class="sourceLineNo">1847</span> StringBuilder sb = new StringBuilder();<a name="line.1847"></a>
+<span class="sourceLineNo">1848</span> getReplicationZnodesDump(zkw, sb);<a name="line.1848"></a>
+<span class="sourceLineNo">1849</span> return sb.toString();<a name="line.1849"></a>
+<span class="sourceLineNo">1850</span> }<a name="line.1850"></a>
+<span class="sourceLineNo">1851</span><a name="line.1851"></a>
+<span class="sourceLineNo">1852</span> private static void appendRSZnodes(ZKWatcher zkw, String znode, StringBuilder sb)<a name="line.1852"></a>
+<span class="sourceLineNo">1853</span> throws KeeperException {<a name="line.1853"></a>
+<span class="sourceLineNo">1854</span> List<String> stack = new LinkedList<>();<a name="line.1854"></a>
+<span class="sourceLineNo">1855</span> stack.add(znode);<a name="line.1855"></a>
+<span class="sourceLineNo">1856</span> do {<a name="line.1856"></a>
+<span class="sourceLineNo">1857</span> String znodeToProcess = stack.remove(stack.size() - 1);<a name="line.1857"></a>
+<span class="sourceLineNo">1858</span> sb.append("\n").append(znodeToProcess).append(": ");<a name="line.1858"></a>
+<span class="sourceLineNo">1859</span> byte[] data;<a name="line.1859"></a>
+<span class="sourceLineNo">1860</span> try {<a name="line.1860"></a>
+<span class="sourceLineNo">1861</span> data = ZKUtil.getData(zkw, znodeToProcess);<a name="line.1861"></a>
+<span class="sourceLineNo">1862</span> } catch (InterruptedException e) {<a name="line.1862"></a>
+<span class="sourceLineNo">1863</span> zkw.interruptedException(e);<a name="line.1863"></a>
+<span class="sourceLineNo">1864</span> return;<a name="line.1864"></a>
+<span class="sourceLineNo">1865</span> }<a name="line.1865"></a>
+<span class="sourceLineNo">1866</span> if (data != null && data.length > 0) { // log position<a name="line.1866"></a>
+<span class="sourceLineNo">1867</span> long position = 0;<a name="line.1867"></a>
+<span class="sourceLineNo">1868</span> try {<a name="line.1868"></a>
+<span class="sourceLineNo">1869</span> position = ZKUtil.parseWALPositionFrom(ZKUtil.getData(zkw, znodeToProcess));<a name="line.1869"></a>
+<span class="sourceLineNo">1870</span> sb.append(position);<a name="line.1870"></a>
+<span class="sourceLineNo">1871</span> } catch (DeserializationException ignored) {<a name="line.1871"></a>
+<span class="sourceLineNo">1872</span> } catch (InterruptedException e) {<a name="line.1872"></a>
+<span class="sourceLineNo">1873</span> zkw.interruptedException(e);<a name="line.1873"></a>
+<span class="sourceLineNo">1874</span> return;<a name="line.1874"></a>
+<span class="sourceLineNo">1875</span> }<a name="line.1875"></a>
+<span class="sourceLineNo">1876</span> }<a name="line.1876"></a>
+<span class="sourceLineNo">1877</span> for (String zNodeChild : ZKUtil.listChildrenNoWatch(zkw, znodeToProcess)) {<a name="line.1877"></a>
+<span class="sourceLineNo">1878</span> stack.add(ZNodePaths.joinZNode(znodeToProcess, zNodeChild));<a name="line.1878"></a>
+<span class="sourceLineNo">1879</span> }<a name="line.1879"></a>
+<span class="sourceLineNo">1880</span> } while (stack.size() > 0);<a name="line.1880"></a>
+<span class="sourceLineNo">1881</span> }<a name="line.1881"></a>
+<span class="sourceLineNo">1882</span><a name="line.1882"></a>
+<span class="sourceLineNo">1883</span> private static void appendPeersZnodes(ZKWatcher zkw, String peersZnode,<a name="line.1883"></a>
+<span class="sourceLineNo">1884</span> StringBuilder sb) throws KeeperException {<a name="line.1884"></a>
+<span class="sourceLineNo">1885</span> int pblen = ProtobufUtil.lengthOfPBMagic();<a name="line.1885"></a>
+<span class="sourceLineNo">1886</span> sb.append("\n").append(peersZnode).append(": ");<a name="line.1886"></a>
+<span class="sourceLineNo">1887</span> for (String peerIdZnode : ZKUtil.listChildrenNoWatch(zkw, peersZnode)) {<a name="line.1887"></a>
+<span class="sourceLineNo">1888</span> String znodeToProcess = ZNodePaths.joinZNode(peersZnode, peerIdZnode);<a name="line.1888"></a>
+<span class="sourceLineNo">1889</span> byte[] data;<a name="line.1889"></a>
+<span class="sourceLineNo">1890</span> try {<a name="line.1890"></a>
+<span class="sourceLineNo">1891</span> data = ZKUtil.getData(zkw, znodeToProcess);<a name="line.1891"></a>
+<span class="sourceLineNo">1892</span> } catch (InterruptedException e) {<a name="line.1892"></a>
+<span class="sourceLineNo">1893</span> zkw.interruptedException(e);<a name="line.1893"></a>
+<span class="sourceLineNo">1894</span> return;<a name="line.1894"></a>
+<span class="sourceLineNo">1895</span> }<a name="line.1895"></a>
+<span class="sourceLineNo">1896</span> // parse the data of the above peer znode.<a name="line.1896"></a>
+<span class="sourceLineNo">1897</span> try {<a name="line.1897"></a>
+<span class="sourceLineNo">1898</span> ReplicationProtos.ReplicationPeer.Builder builder =<a name="line.1898"></a>
+<span class="sourceLineNo">1899</span> ReplicationProtos.ReplicationPeer.newBuilder();<a name="line.1899"></a>
+<span class="sourceLineNo">1900</span> ProtobufUtil.mergeFrom(builder, data, pblen, data.length - pblen);<a name="line.1900"></a>
+<span class="sourceLineNo">1901</span> String clusterKey = builder.getClusterkey();<a name="line.1901"></a>
+<span class="sourceLineNo">1902</span> sb.append("\n").append(znodeToProcess).append(": ").append(clusterKey);<a name="line.1902"></a>
+<span class="sourceLineNo">1903</span> // add the peer-state.<a name="line.1903"></a>
+<span class="sourceLineNo">1904</span> appendPeerState(zkw, znodeToProcess, sb);<a name="line.1904"></a>
+<span class="sourceLineNo">1905</span> } catch (IOException ipbe) {<a name="line.1905"></a>
+<span class="sourceLineNo">1906</span> LOG.warn("Got Exception while parsing peer: " + znodeToProcess, ipbe);<a name="line.1906"></a>
+<span class="sourceLineNo">1907</span> }<a name="line.1907"></a>
+<span class="sourceLineNo">1908</span> }<a name="line.1908"></a>
+<span class="sourceLineNo">1909</span> }<a name="line.1909"></a>
+<span class="sourceLineNo">1910</span><a name="line.1910"></a>
+<span class="sourceLineNo">1911</span> private static void appendPeerState(ZKWatcher zkw, String znodeToProcess, StringBuilder sb)<a name="line.1911"></a>
+<span class="sourceLineNo">1912</span> throws KeeperException, InvalidProtocolBufferException {<a name="line.1912"></a>
+<span class="sourceLineNo">1913</span> String peerState = zkw.getConfiguration().get("zookeeper.znode.replication.peers.state",<a name="line.1913"></a>
+<span class="sourceLineNo">1914</span> "peer-state");<a name="line.1914"></a>
+<span class="sourceLineNo">1915</span> int pblen = ProtobufUtil.lengthOfPBMagic();<a name="line.1915"></a>
+<span class="sourceLineNo">1916</span> for (String child : ZKUtil.listChildrenNoWatch(zkw, znodeToProcess)) {<a name="line.1916"></a>
+<span class="sourceLineNo">1917</span> if (!child.equals(peerState)) {<a name="line.1917"></a>
+<span class="sourceLineNo">1918</span> continue;<a name="line.1918"></a>
+<span class="sourceLineNo">1919</span> }<a name="line.1919"></a>
+<span class="sourceLineNo">1920</span><a name="line.1920"></a>
+<span class="sourceLineNo">1921</span> String peerStateZnode = ZNodePaths.joinZNode(znodeToProcess, child);<a name="line.1921"></a>
+<span class="sourceLineNo">1922</span> sb.append("\n").append(peerStateZnode).append(": ");<a name="line.1922"></a>
+<span class="sourceLineNo">1923</span> byte[] peerStateData;<a name="line.1923"></a>
+<span class="sourceLineNo">1924</span> try {<a name="line.1924"></a>
+<span class="sourceLineNo">1925</span> peerStateData = ZKUtil.getData(zkw, peerStateZnode);<a name="line.1925"></a>
+<span class="sourceLineNo">1926</span> ReplicationProtos.ReplicationState.Builder builder =<a name="line.1926"></a>
+<span class="sourceLineNo">1927</span> ReplicationProtos.ReplicationState.newBuilder();<a name="line.1927"></a>
+<span class="sourceLineNo">1928</span> ProtobufUtil.mergeFrom(builder, peerStateData, pblen, peerStateData.length - pblen);<a name="line.1928"></a>
+<span class="sourceLineNo">1929</span> sb.append(builder.getState().name());<a name="line.1929"></a>
+<span class="sourceLineNo">1930</span> } catch (IOException ipbe) {<a name="line.1930"></a>
+<span class="sourceLineNo">1931</span> LOG.warn("Got Exception while parsing peer: " + znodeToProcess, ipbe);<a name="line.1931"></a>
+<span class="sourceLineNo">1932</span> } catch (InterruptedException e) {<a name="line.1932"></a>
+<span class="sourceLineNo">1933</span> zkw.interruptedException(e);<a name="line.1933"></a>
+<span class="sourceLineNo">1934</span> return;<a name="line.1934"></a>
+<span class="sourceLineNo">1935</span> }<a name="line.1935"></a>
+<span class="sourceLineNo">1936</span> }<a name="line.1936"></a>
+<span class="sourceLineNo">1937</span> }<a name="line.1937"></a>
+<span class="sourceLineNo">1938</span><a name="line.1938"></a>
+<span class="sourceLineNo">1939</span> /**<a name="line.1939"></a>
+<span class="sourceLineNo">1940</span> * Gets the statistics from the given server.<a name="line.1940"></a>
+<span class="sourceLineNo">1941</span> *<a name="line.1941"></a>
+<span class="sourceLineNo">1942</span> * @param server The server to get the statistics from.<a name="line.1942"></a>
+<span class="sourceLineNo">1943</span> * @param timeout The socket timeout to use.<a name="line.1943"></a>
+<span class="sourceLineNo">1944</span> * @return The array of response strings.<a name="line.1944"></a>
+<span class="sourceLineNo">1945</span> * @throws IOException When the socket communication fails.<a name="line.1945"></a>
+<span class="sourceLineNo">1946</span> */<a name="line.1946"></a>
+<span class="sourceLineNo">1947</span> public static String[] getServerStats(String server, int timeout)<a name="line.1947"></a>
+<span class="sourceLineNo">1948</span> throws IOException {<a name="line.1948"></a>
+<span class="sourceLineNo">1949</span> String[] sp = server.split(":");<a name="line.1949"></a>
+<span class="sourceLineNo">1950</span> if (sp == null || sp.length == 0) {<a name="line.1950"></a>
+<span class="sourceLineNo">1951</span> return null;<a name="line.1951"></a>
+<span class="sourceLineNo">1952</span> }<a name="line.1952"></a>
+<span class="sourceLineNo">1953</span><a name="line.1953"></a>
+<span class="sourceLineNo">1954</span> String host = sp[0];<a name="line.1954"></a>
+<span class="sourceLineNo">1955</span> int port = sp.length > 1 ? Integer.parseInt(sp[1])<a name="line.1955"></a>
+<span class="sourceLineNo">1956</span> : HConstants.DEFAULT_ZOOKEEPER_CLIENT_PORT;<a name="line.1956"></a>
+<span class="sourceLineNo">1957</span><a name="line.1957"></a>
+<span class="sourceLineNo">1958</span> InetSocketAddress sockAddr = new InetSocketAddress(host, port);<a name="line.1958"></a>
+<span class="sourceLineNo">1959</span> try (Socket socket = new Socket()) {<a name="line.1959"></a>
+<span class="sourceLineNo">1960</span> socket.connect(sockAddr, timeout);<a name="line.1960"></a>
+<span class="sourceLineNo">1961</span><a name="line.1961"></a>
+<span class="sourceLineNo">1962</span> socket.setSoTimeout(timeout);<a name="line.1962"></a>
+<span class="sourceLineNo">1963</span> try (PrintWriter out = new PrintWriter(new BufferedWriter(<a name="line.1963"></a>
+<span class="sourceLineNo">1964</span> new OutputStreamWriter(socket.getOutputStream(), StandardCharsets.UTF_8)), true);<a name="line.1964"></a>
+<span class="sourceLineNo">1965</span> BufferedReader in = new BufferedReader(<a name="line.1965"></a>
+<span class="sourceLineNo">1966</span> new InputStreamReader(socket.getInputStream(), StandardCharsets.UTF_8))) {<a name="line.1966"></a>
+<span class="sourceLineNo">1967</span> out.println("stat");<a name="line.1967"></a>
+<span class="sourceLineNo">1968</span> out.flush();<a name="line.1968"></a>
+<span class="sourceLineNo">1969</span> ArrayList<String> res = new ArrayList<>();<a name="line.1969"></a>
+<span class="sourceLineNo">1970</span> while (true) {<a name="line.1970"></a>
+<span class="sourceLineNo">1971</span> String line = in.readLine();<a name="line.1971"></a>
+<span class="sourceLineNo">1972</span> if (line != null) {<a name="line.1972"></a>
+<span class="sourceLineNo">1973</span> res.add(line);<a name="line.1973"></a>
+<span class="sourceLineNo">1974</span> } else {<a name="line.1974"></a>
+<span class="sourceLineNo">1975</span> break;<a name="line.1975"></a>
+<span class="sourceLineNo">1976</span> }<a name="line.1976"></a>
+<span class="sourceLineNo">1977</span> }<a name="line.1977"></a>
+<span class="sourceLineNo">1978</span> return res.toArray(new String[res.size()]);<a name="line.1978"></a>
+<span class="sourceLineNo">1979</span> }<a name="line.1979"></a>
+<span class="sourceLineNo">1980</span> }<a name="line.1980"></a>
+<span class="sourceLineNo">1981</span> }<a name="line.1981"></a>
+<span class="sourceLineNo">1982</span><a name="line.1982"></a>
+<span class="sourceLineNo">1983</span> private static void logRetrievedMsg(final ZKWatcher zkw,<a name="line.1983"></a>
+<span class="sourceLineNo">1984</span> final String znode, final byte [] data, final boolean watcherSet) {<a name="line.1984"></a>
+<span class="sourceLineNo">1985</span> if (!LOG.isTraceEnabled()) {<a name="line.1985"></a>
+<span class="sourceLineNo">1986</span> return;<a name="line.1986"></a>
+<span class="sourceLineNo">1987</span> }<a name="line.1987"></a>
+<span class="sourceLineNo">1988</span><a name="line.1988"></a>
+<span class="sourceLineNo">1989</span> LOG.trace(zkw.prefix("Retrieved " + ((data == null)? 0: data.length) +<a name="line.1989"></a>
+<span class="sourceLineNo">1990</span> " byte(s) of data from znode " + znode +<a name="line.1990"></a>
+<span class="sourceLineNo">1991</span> (watcherSet? " and set watcher; ": "; data=") +<a name="line.1991"></a>
+<span class="sourceLineNo">1992</span> (data == null? "null": data.length == 0? "empty": (<a name="line.1992"></a>
+<span class="sourceLineNo">1993</span> znode.startsWith(zkw.getZNodePaths().metaZNodePrefix)?<a name="line.1993"></a>
+<span class="sourceLineNo">1994</span> getServerNameOrEmptyString(data):<a name="line.1994"></a>
+<span class="sourceLineNo">1995</span> znode.startsWith(zkw.getZNodePaths().backupMasterAddressesZNode)?<a name="line.1995"></a>
+<span class="sourceLineNo">1996</span> getServerNameOrEmptyString(data):<a name="line.1996"></a>
+<span class="sourceLineNo">1997</span> StringUtils.abbreviate(Bytes.toStringBinary(data), 32)))));<a name="line.1997"></a>
+<span class="sourceLineNo">1998</span> }<a name="line.1998"></a>
+<span class="sourceLineNo">1999</span><a name="line.1999"></a>
+<span class="sourceLineNo">2000</span> private static String getServerNameOrEmptyString(final byte [] data) {<a name="line.2000"></a>
+<span class="sourceLineNo">2001</span> try {<a name="line.2001"></a>
+<span class="sourceLineNo">2002</span> return ProtobufUtil.parseServerNameFrom(data).toString();<a name="line.2002"></a>
+<span class="sourceLineNo">2003</span> } catch (DeserializationException e) {<a name="line.2003"></a>
+<span class="sourceLineNo">2004</span> return "";<a name="line.2004"></a>
+<span class="sourceLineNo">2005</span> }<a name="line.2005"></a>
+<span class="sourceLineNo">2006</span> }<a name="line.2006"></a>
+<span class="sourceLineNo">2007</span><a name="line.2007"></a>
+<span class="sourceLineNo">2008</span> /**<a name="line.2008"></a>
+<span class="sourceLineNo">2009</span> * Waits for HBase installation's base (parent) znode to become available.<a name="line.2009"></a>
+<span class="sourceLineNo">2010</span> * @throws IOException on ZK errors<a name="lin
<TRUNCATED>