[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.

2018-02-08 Thread brahma
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 Battula 
Authored: 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.

2018-02-07 Thread brahma
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 Battula 
Authored: 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