HDFS-9112. Improve error message for Haadmin when multiple name service IDs are 
configured. Contributed by Anu Engineer.


Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/83e99d06
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/83e99d06
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/83e99d06

Branch: refs/heads/HDFS-7240
Commit: 83e99d06d0e5a71888aab33e9ae47460e9f1231f
Parents: 83e65c5
Author: Jing Zhao <ji...@apache.org>
Authored: Fri Sep 25 14:21:23 2015 -0700
Committer: Jing Zhao <ji...@apache.org>
Committed: Fri Sep 25 14:21:23 2015 -0700

----------------------------------------------------------------------
 hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt         |  3 +++
 .../apache/hadoop/hdfs/tools/NNHAServiceTarget.java | 16 +++++++++++++---
 2 files changed, 16 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hadoop/blob/83e99d06/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt 
b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
index 8c26a1d..756f3f5 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
+++ b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
@@ -965,6 +965,9 @@ Release 2.8.0 - UNRELEASED
     HDFS-5795. RemoteBlockReader2#checkSuccess() shoud print error status.
     (Xiao Chen via Yongjun Zhang)
 
+    HDFS-9112. Improve error message for Haadmin when multiple name service IDs
+    are configured. (Anu Engineer via jing9)
+
   OPTIMIZATIONS
 
     HDFS-8026. Trace FSOutputSummer#writeChecksumChunks rather than

http://git-wip-us.apache.org/repos/asf/hadoop/blob/83e99d06/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/NNHAServiceTarget.java
----------------------------------------------------------------------
diff --git 
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/NNHAServiceTarget.java
 
b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/NNHAServiceTarget.java
index 6615a4f..247ac02 100644
--- 
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/NNHAServiceTarget.java
+++ 
b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/NNHAServiceTarget.java
@@ -18,6 +18,7 @@
 package org.apache.hadoop.hdfs.tools;
 
 import java.net.InetSocketAddress;
+import java.util.Arrays;
 import java.util.Map;
 
 import org.apache.hadoop.classification.InterfaceAudience;
@@ -34,6 +35,8 @@ import org.apache.hadoop.net.NetUtils;
 
 import com.google.common.base.Preconditions;
 
+import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_NAMESERVICES;
+
 /**
  * One of the NN NameNodes acting as the target of an administrative command
  * (e.g. failover).
@@ -56,12 +59,19 @@ public class NNHAServiceTarget extends HAServiceTarget {
   public NNHAServiceTarget(Configuration conf,
       String nsId, String nnId) {
     Preconditions.checkNotNull(nnId);
-    
+
     if (nsId == null) {
       nsId = DFSUtil.getOnlyNameServiceIdOrNull(conf);
       if (nsId == null) {
-        throw new IllegalArgumentException(
-            "Unable to determine the nameservice id.");
+        String errorString = "Unable to determine the name service ID.";
+        String[] dfsNames = conf.getStrings(DFS_NAMESERVICES);
+        if ((dfsNames != null) && (dfsNames.length > 1)) {
+          errorString = "Unable to determine the name service ID. " +
+              "This is an HA configuration with multiple name services " +
+              "configured. " + DFS_NAMESERVICES + " is set to " +
+              Arrays.toString(dfsNames) + ". Please re-run with the -ns 
option.";
+        }
+        throw new IllegalArgumentException(errorString);
       }
     }
     assert nsId != null;

Reply via email to