[2/2] hadoop git commit: HDFS-12935. Get ambiguous result for DFSAdmin command in HA mode when only one namenode is up. Contributed by Jianfei Jiang.
HDFS-12935. Get ambiguous result for DFSAdmin command in HA mode when only one namenode is up. Contributed by Jianfei Jiang. (cherry picked from commit 9873eb63a7525301ab601a0ae65f7e615d1a6bce) Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/3487f2b7 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/3487f2b7 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/3487f2b7 Branch: refs/heads/branch-2.9 Commit: 3487f2b722654e3113559c8e22262b51757902e9 Parents: 52281fd Author: Brahma Reddy BattulaAuthored: Thu Feb 8 18:33:11 2018 +0530 Committer: Brahma Reddy Battula Committed: Thu Feb 8 18:44:34 2018 +0530 -- .../java/org/apache/hadoop/hdfs/HAUtil.java | 9 +- .../hdfs/server/namenode/FSNamesystem.java | 2 +- .../org/apache/hadoop/hdfs/tools/DFSAdmin.java | 192 +--- .../hadoop/hdfs/tools/TestDFSAdminWithHA.java | 464 ++- 4 files changed, 601 insertions(+), 66 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hadoop/blob/3487f2b7/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/HAUtil.java -- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/HAUtil.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/HAUtil.java index 043e087..67fdc04 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/HAUtil.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/HAUtil.java @@ -47,6 +47,7 @@ import org.apache.hadoop.hdfs.NameNodeProxiesClient.ProxyAndInfo; import org.apache.hadoop.hdfs.protocol.ClientProtocol; import org.apache.hadoop.hdfs.server.namenode.NameNode; import org.apache.hadoop.hdfs.server.namenode.ha.AbstractNNFailoverProxyProvider; +import org.apache.hadoop.io.MultipleIOException; import org.apache.hadoop.ipc.RPC; import org.apache.hadoop.ipc.RemoteException; import org.apache.hadoop.ipc.StandbyException; @@ -320,6 +321,7 @@ public class HAUtil { */ public static boolean isAtLeastOneActive(List namenodes) throws IOException { +List exceptions = new ArrayList<>(); for (ClientProtocol namenode : namenodes) { try { namenode.getFileInfo("/"); @@ -329,10 +331,15 @@ public class HAUtil { if (cause instanceof StandbyException) { // This is expected to happen for a standby NN. } else { - throw re; + exceptions.add(re); } + } catch (IOException ioe) { +exceptions.add(ioe); } } +if(!exceptions.isEmpty()){ + throw MultipleIOException.createIOException(exceptions); +} return false; } } http://git-wip-us.apache.org/repos/asf/hadoop/blob/3487f2b7/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java -- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java index 50e9420..e724db7 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java @@ -4265,7 +4265,7 @@ public class FSNamesystem implements Namesystem, FSNamesystemMBean, } void setBalancerBandwidth(long bandwidth) throws IOException { -checkOperation(OperationCategory.UNCHECKED); +checkOperation(OperationCategory.WRITE); checkSuperuserPrivilege(); getBlockManager().getDatanodeManager().setBalancerBandwidth(bandwidth); } http://git-wip-us.apache.org/repos/asf/hadoop/blob/3487f2b7/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/DFSAdmin.java -- 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 1264fa0..1e877ea 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 @@ -18,7 +18,6 @@ package org.apache.hadoop.hdfs.tools; import java.io.File; -import java.io.FileNotFoundException; import java.io.IOException; import java.io.PrintStream; import java.net.InetSocketAddress; @@ -49,7 +48,6 @@ import org.apache.hadoop.fs.CommonConfigurationKeys; import
[2/2] hadoop git commit: HDFS-12935. Get ambiguous result for DFSAdmin command in HA mode when only one namenode is up. Contributed by Jianfei Jiang.
HDFS-12935. Get ambiguous result for DFSAdmin command in HA mode when only one namenode is up. Contributed by Jianfei Jiang. (cherry picked from commit 01bd6ab18fa48f4c7cac1497905b52e547962599) Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/c6349c32 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/c6349c32 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/c6349c32 Branch: refs/heads/branch-3.0 Commit: c6349c3204679bade32a6365f816eaf8bcb85458 Parents: 0ec45f7 Author: Brahma Reddy BattulaAuthored: Wed Feb 7 23:10:33 2018 +0530 Committer: Brahma Reddy Battula Committed: Wed Feb 7 23:27:24 2018 +0530 -- .../java/org/apache/hadoop/hdfs/HAUtil.java | 9 +- .../hdfs/server/namenode/FSNamesystem.java | 2 +- .../org/apache/hadoop/hdfs/tools/DFSAdmin.java | 192 +--- .../hadoop/hdfs/tools/TestDFSAdminWithHA.java | 464 ++- 4 files changed, 602 insertions(+), 65 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hadoop/blob/c6349c32/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/HAUtil.java -- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/HAUtil.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/HAUtil.java index 3556086..1d294be 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/HAUtil.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/HAUtil.java @@ -47,6 +47,7 @@ import org.apache.hadoop.hdfs.NameNodeProxiesClient.ProxyAndInfo; import org.apache.hadoop.hdfs.protocol.ClientProtocol; import org.apache.hadoop.hdfs.server.namenode.NameNode; import org.apache.hadoop.hdfs.server.namenode.ha.AbstractNNFailoverProxyProvider; +import org.apache.hadoop.io.MultipleIOException; import org.apache.hadoop.ipc.RPC; import org.apache.hadoop.ipc.RemoteException; import org.apache.hadoop.ipc.StandbyException; @@ -325,6 +326,7 @@ public class HAUtil { */ public static boolean isAtLeastOneActive(List namenodes) throws IOException { +List exceptions = new ArrayList<>(); for (ClientProtocol namenode : namenodes) { try { namenode.getFileInfo("/"); @@ -334,10 +336,15 @@ public class HAUtil { if (cause instanceof StandbyException) { // This is expected to happen for a standby NN. } else { - throw re; + exceptions.add(re); } + } catch (IOException ioe) { +exceptions.add(ioe); } } +if(!exceptions.isEmpty()){ + throw MultipleIOException.createIOException(exceptions); +} return false; } } http://git-wip-us.apache.org/repos/asf/hadoop/blob/c6349c32/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java -- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java index ae57599..6f5bbc5 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java @@ -4391,7 +4391,7 @@ public class FSNamesystem implements Namesystem, FSNamesystemMBean, } void setBalancerBandwidth(long bandwidth) throws IOException { -checkOperation(OperationCategory.UNCHECKED); +checkOperation(OperationCategory.WRITE); checkSuperuserPrivilege(); getBlockManager().getDatanodeManager().setBalancerBandwidth(bandwidth); } http://git-wip-us.apache.org/repos/asf/hadoop/blob/c6349c32/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/DFSAdmin.java -- 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 a3e1bc1..a3a140d 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 @@ -50,7 +50,6 @@ import org.apache.hadoop.fs.CommonConfigurationKeys; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.FsShell; import org.apache.hadoop.fs.FsStatus; -import org.apache.hadoop.fs.FsTracer; import org.apache.hadoop.fs.Path; import