HADOOP-15864. Job submitter / executor fail when SBN domain name can not resolved. Contributed by He Xiaoqiao.
(cherry picked from commit fb2b72e6fce019130e10964a644b94cddbab1c06) (cherry picked from commit fd02c501c0cea3ec55956e11b390111519cedc00) (cherry picked from commit ef9f8ca13d8dca8031c045bad801fceb3e00aa15)
This commit is contained in:
parent
2caf69debd
commit
fa01a8fa0e
@ -420,7 +420,7 @@ public static InetSocketAddress getTokenServiceAddr(Token<?> token) {
|
||||
*/
|
||||
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
|
||||
@ -440,9 +440,10 @@ public static Text buildTokenService(InetSocketAddress addr) {
|
||||
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 {
|
||||
|
@ -332,6 +332,29 @@ public void testHAUtilClonesDelegationTokens() throws Exception {
|
||||
}
|
||||
}
|
||||
|
||||
@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
|
||||
|
Loading…
x
Reference in New Issue
Block a user