From fe6bbea12dbd43f9c56e10fa66030d3ff294abeb Mon Sep 17 00:00:00 2001 From: tom lee Date: Tue, 15 Mar 2022 09:31:08 +0800 Subject: [PATCH] HDFS-16505. Setting safemode should not be interrupted by abnormal nodes --- .../org/apache/hadoop/hdfs/tools/DFSAdmin.java | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/DFSAdmin.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/DFSAdmin.java index dec8bef24b4df..642a2ab093db1 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/DFSAdmin.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/DFSAdmin.java @@ -674,13 +674,18 @@ public void setSafeMode(String[] argv, int idx) throws IOException { HAUtil.getProxiesForAllNameNodesInNameservice( dfsConf, nsId, ClientProtocol.class); for (ProxyAndInfo proxy : proxies) { - ClientProtocol haNn = proxy.getProxy(); - boolean inSafeMode = haNn.setSafeMode(action, false); - if (waitExitSafe) { - inSafeMode = waitExitSafeMode(haNn, inSafeMode); + try { + ClientProtocol haNn = proxy.getProxy(); + boolean inSafeMode = haNn.setSafeMode(action, false); + if (waitExitSafe) { + inSafeMode = waitExitSafeMode(haNn, inSafeMode); + } + System.out.println("Safe mode is " + (inSafeMode ? "ON" : "OFF") + + " in " + proxy.getAddress()); + } catch (Throwable e) { + System.err.println("Set safe mode failed in " + proxy.getAddress() + ", error message: " + + e.getMessage()); } - System.out.println("Safe mode is " + (inSafeMode ? "ON" : "OFF") - + " in " + proxy.getAddress()); } } else { boolean inSafeMode = dfs.setSafeMode(action);