HADOOP-15864. Job submitter / executor fail when SBN domain name can not resolved. Contributed by He Xiaoqiao.
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/fb2b72e6 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/fb2b72e6 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/fb2b72e6 Branch: refs/heads/HDFS-13532 Commit: fb2b72e6fce019130e10964a644b94cddbab1c06 Parents: c7f349b Author: Wei-Chiu Chuang <weic...@apache.org> Authored: Thu Oct 25 09:33:31 2018 -0700 Committer: Wei-Chiu Chuang <weic...@apache.org> Committed: Thu Oct 25 09:33:31 2018 -0700 ---------------------------------------------------------------------- .../apache/hadoop/security/SecurityUtil.java | 9 ++++---- .../namenode/ha/TestDelegationTokensWithHA.java | 23 ++++++++++++++++++++ 2 files changed, 28 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/fb2b72e6/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/security/SecurityUtil.java ---------------------------------------------------------------------- diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/security/SecurityUtil.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/security/SecurityUtil.java index aa12b93..b573234 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/security/SecurityUtil.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/security/SecurityUtil.java @@ -424,7 +424,7 @@ public final class SecurityUtil { */ public static void setTokenService(Token<?> token, InetSocketAddress addr) { Text service = buildTokenService(addr); - if (token != null) { + if (token != null && service != null) { token.setService(service); if (LOG.isDebugEnabled()) { LOG.debug("Acquired token "+token); // Token#toString() prints service @@ -444,9 +444,10 @@ public final class SecurityUtil { String host = null; if (useIpForTokenService) { if (addr.isUnresolved()) { // host has no ip address - throw new IllegalArgumentException( - new UnknownHostException(addr.getHostName()) - ); + LOG.warn("unable to resolve host name " + addr + + ". Failure to construct a correct token service " + + "name may result in operation failures"); + return null; } host = addr.getAddress().getHostAddress(); } else { http://git-wip-us.apache.org/repos/asf/hadoop/blob/fb2b72e6/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/ha/TestDelegationTokensWithHA.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/ha/TestDelegationTokensWithHA.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/ha/TestDelegationTokensWithHA.java index 7076ec6..e78cee9 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/ha/TestDelegationTokensWithHA.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/ha/TestDelegationTokensWithHA.java @@ -332,6 +332,29 @@ public class TestDelegationTokensWithHA { } } + @Test(timeout = 300000) + public void testHAUtilClonesDTsDomainNameResolvedFail() throws Exception { + final Token<DelegationTokenIdentifier> token = + getDelegationToken(fs, "JobTracker"); + + UserGroupInformation ugi = UserGroupInformation.createRemoteUser("test"); + + URI haUri = new URI("hdfs://my-ha-uri/"); + token.setService(HAUtilClient.buildTokenServiceForLogicalUri(haUri, + HdfsConstants.HDFS_URI_SCHEME)); + ugi.addToken(token); + + Collection<InetSocketAddress> nnAddrs = new HashSet<InetSocketAddress>(); + nnAddrs.add(new InetSocketAddress("domainname.doesnot.exist", + nn0.getNameNodeAddress().getPort())); + nnAddrs.add(new InetSocketAddress("localhost", + nn1.getNameNodeAddress().getPort())); + HAUtilClient.cloneDelegationTokenForLogicalUri(ugi, haUri, nnAddrs); + + Collection<Token<? extends TokenIdentifier>> tokens = ugi.getTokens(); + assertEquals(3, tokens.size()); + } + /** * HDFS-3062: DistributedFileSystem.getCanonicalServiceName() throws an * exception if the URI is a logical URI. This bug fails the combination of --------------------------------------------------------------------- To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-commits-h...@hadoop.apache.org