ndimiduk commented on code in PR #4959:
URL: https://github.com/apache/hbase/pull/4959#discussion_r1069514903


##########
hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/RestartActiveNameNodeAction.java:
##########
@@ -57,39 +57,47 @@ protected Logger getLogger() {
   @Override
   public void perform() throws Exception {
     getLogger().info("Performing action: Restart active namenode");
-    Configuration conf = 
CommonFSUtils.getRootDir(getConf()).getFileSystem(getConf()).getConf();
-    String nameServiceID = DFSUtil.getNamenodeNameServiceId(conf);
-    if (!HAUtil.isHAEnabled(conf, nameServiceID)) {
-      throw new Exception("HA for namenode is not enabled");
-    }
-    ZKWatcher zkw = null;
-    RecoverableZooKeeper rzk = null;
+
+    final String hadoopHAZkNode;
     String activeNamenode = null;
-    String hadoopHAZkNode = conf.get(ZK_PARENT_ZNODE_KEY, 
ZK_PARENT_ZNODE_DEFAULT);
-    try {
-      zkw = new ZKWatcher(conf, "get-active-namenode", null);
-      rzk = zkw.getRecoverableZooKeeper();
-      String hadoopHAZkNodePath = ZNodePaths.joinZNode(hadoopHAZkNode, 
nameServiceID);
-      List<String> subChildern = ZKUtil.listChildrenNoWatch(zkw, 
hadoopHAZkNodePath);
-      for (String eachEntry : subChildern) {
-        if (eachEntry.contains(ACTIVE_NN_LOCK_NAME)) {
-          byte[] data =
-            rzk.getData(ZNodePaths.joinZNode(hadoopHAZkNodePath, 
ACTIVE_NN_LOCK_NAME), false, null);
-          ActiveNodeInfo proto = ActiveNodeInfo.parseFrom(data);
-          activeNamenode = proto.getHostname();
-        }
+    int activeNamenodePort = -1;
+    try (final DistributedFileSystem dfs = 
HdfsActionUtils.createDfs(getConf())) {
+      final Configuration conf = dfs.getConf();
+      hadoopHAZkNode = conf.get(ZK_PARENT_ZNODE_KEY, ZK_PARENT_ZNODE_DEFAULT);
+      final String nameServiceID = DFSUtil.getNamenodeNameServiceId(conf);
+
+      if (!HAUtil.isHAEnabled(conf, nameServiceID)) {
+        getLogger().info("HA for HDFS is not enabled; skipping");
+        return;
       }
-    } finally {
-      if (zkw != null) {
-        zkw.close();
+      try (final ZKWatcher zkw = new ZKWatcher(conf, "get-active-namenode", 
null)) {
+        final RecoverableZooKeeper rzk = zkw.getRecoverableZooKeeper();
+        // If hadoopHAZkNode == '/', pass '' instead because then joinZNode 
will return '//' as a
+        // prefix
+        // which zk doesn't like as a prefix on the path.
+        final String hadoopHAZkNodePath = ZNodePaths.joinZNode(
+          (hadoopHAZkNode != null && hadoopHAZkNode.equals("/")) ? "" : 
hadoopHAZkNode,
+          nameServiceID);
+        final List<String> subChildren = ZKUtil.listChildrenNoWatch(zkw, 
hadoopHAZkNodePath);
+        for (final String eachEntry : subChildren) {
+          if (eachEntry.contains(ACTIVE_NN_LOCK_NAME)) {
+            byte[] data = rzk.getData(ZNodePaths.joinZNode(hadoopHAZkNodePath, 
ACTIVE_NN_LOCK_NAME),
+              false, null);
+            ActiveNodeInfo proto = ActiveNodeInfo.parseFrom(data);
+            activeNamenode = proto.getHostname();
+            activeNamenodePort = proto.getPort();
+          }
+        }
       }
     }
+
     if (activeNamenode == null) {
       throw new Exception("No active Name node found in zookeeper under " + 
hadoopHAZkNode);

Review Comment:
   this could just return instead of throwing.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to