From 4b00c9a47f94c4d7c673710bbb3b85b5d2807e7b Mon Sep 17 00:00:00 2001 From: Arpit Agarwal Date: Mon, 23 Oct 2017 10:47:16 -0700 Subject: [PATCH] HDFS-12683. DFSZKFailOverController re-order logic for logging Exception. Contributed by Bharat Viswanadham. --- .../hadoop/ha/ZKFailoverController.java | 48 +++++++++++-------- .../hdfs/tools/DFSZKFailoverController.java | 3 +- 2 files changed, 30 insertions(+), 21 deletions(-) diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ha/ZKFailoverController.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ha/ZKFailoverController.java index 20a4681327..0ebdacdc6a 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ha/ZKFailoverController.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ha/ZKFailoverController.java @@ -184,40 +184,45 @@ public Integer run() { } }); } catch (RuntimeException rte) { - LOG.error("The failover controller encounters runtime error: " + rte); throw (Exception)rte.getCause(); } } private int doRun(String[] args) - throws HadoopIllegalArgumentException, IOException, InterruptedException { + throws Exception { try { initZK(); } catch (KeeperException ke) { LOG.error("Unable to start failover controller. Unable to connect " + "to ZooKeeper quorum at " + zkQuorum + ". Please check the " + "configured value for " + ZK_QUORUM_KEY + " and ensure that " - + "ZooKeeper is running."); + + "ZooKeeper is running.", ke); return ERR_CODE_NO_ZK; } - if (args.length > 0) { - if ("-formatZK".equals(args[0])) { - boolean force = false; - boolean interactive = true; - for (int i = 1; i < args.length; i++) { - if ("-force".equals(args[i])) { - force = true; - } else if ("-nonInteractive".equals(args[i])) { - interactive = false; - } else { - badArg(args[i]); + try { + if (args.length > 0) { + if ("-formatZK".equals(args[0])) { + boolean force = false; + boolean interactive = true; + for (int i = 1; i < args.length; i++) { + if ("-force".equals(args[i])) { + force = true; + } else if ("-nonInteractive".equals(args[i])) { + interactive = false; + } else { + badArg(args[i]); + } } + return formatZK(force, interactive); + } + else { + badArg(args[0]); } - return formatZK(force, interactive); - } else { - badArg(args[0]); } + } catch (Exception e){ + LOG.error("The failover controller encounters runtime error", e); + throw e; } if (!elector.parentZNodeExists()) { @@ -236,11 +241,14 @@ private int doRun(String[] args) return ERR_CODE_NO_FENCER; } - initRPC(); - initHM(); - startRPC(); try { + initRPC(); + initHM(); + startRPC(); mainLoop(); + } catch (Exception e) { + LOG.error("The failover controller encounters runtime error: ", e); + throw e; } finally { rpcServer.stopAndJoin(); diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/DFSZKFailoverController.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/DFSZKFailoverController.java index 01cd934eb8..a454d73df5 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/DFSZKFailoverController.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/DFSZKFailoverController.java @@ -194,7 +194,8 @@ public static void main(String args[]) try { retCode = zkfc.run(parser.getRemainingArgs()); } catch (Throwable t) { - LOG.fatal("Got a fatal error, exiting now", t); + LOG.fatal("DFSZKFailOverController exiting due to earlier exception " + + t); } System.exit(retCode); }