From aca014ea675d2d86857675206c4650e38d8cd7b7 Mon Sep 17 00:00:00 2001 From: Jing Zhao Date: Fri, 25 Sep 2015 14:21:23 -0700 Subject: [PATCH] HDFS-9112. Improve error message for Haadmin when multiple name service IDs are configured. Contributed by Anu Engineer. (cherry picked from commit 83e99d06d0e5a71888aab33e9ae47460e9f1231f) --- hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt | 3 +++ .../hadoop/hdfs/tools/NNHAServiceTarget.java | 16 +++++++++++++--- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt index 0aac1a1449e..3df32dc004f 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt +++ b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt @@ -617,6 +617,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 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 6615a4f0e0a..247ac0274f3 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;