HDFS-8627. NPE thrown if unable to fetch token from Namenode (Contributed by J.Andreina)

This commit is contained in:
Vinayakumar B 2015-06-30 15:42:59 +05:30
parent 6d99017f38
commit 7ba5bbac02
3 changed files with 28 additions and 7 deletions

View File

@ -338,6 +338,9 @@ Trunk (Unreleased)
HDFS-8412. Fix the test failures in HTTPFS. (umamahesh)
HDFS-8627. NPE thrown if unable to fetch token from Namenode
(J.Andreina via vinayakumarb)
Release 2.8.0 - UNRELEASED
NEW FEATURES

View File

@ -176,14 +176,17 @@ static void saveDelegationToken(Configuration conf, FileSystem fs,
final String renewer, final Path tokenFile)
throws IOException {
Token<?> token = fs.getDelegationToken(renewer);
if (null != token) {
Credentials cred = new Credentials();
cred.addToken(token.getKind(), token);
cred.writeTokenStorageFile(tokenFile, conf);
Credentials cred = new Credentials();
cred.addToken(token.getKind(), token);
cred.writeTokenStorageFile(tokenFile, conf);
if (LOG.isDebugEnabled()) {
LOG.debug("Fetched token " + fs.getUri() + " for " + token.getService()
+ " into " + tokenFile);
if (LOG.isDebugEnabled()) {
LOG.debug("Fetched token " + fs.getUri() + " for " +
token.getService() + " into " + tokenFile);
}
} else {
System.err.println("ERROR: Failed to fetch token from " + fs.getUri());
}
}

View File

@ -90,4 +90,19 @@ public void expectedTokenIsRetrievedFromHttp() throws Exception {
DelegationTokenFetcher.cancelTokens(conf, p);
Assert.assertEquals(testToken, FakeRenewer.getLastCanceled());
}
/**
* If token returned is null, saveDelegationToken should not
* throw nullPointerException
*/
@Test
public void testReturnedTokenIsNull() throws Exception {
WebHdfsFileSystem fs = mock(WebHdfsFileSystem.class);
doReturn(null).when(fs).getDelegationToken(anyString());
Path p = new Path(f.getRoot().getAbsolutePath(), tokenFile);
DelegationTokenFetcher.saveDelegationToken(conf, fs, null, p);
// When Token returned is null, TokenFile should not exist
Assert.assertFalse(p.getFileSystem(conf).exists(p));
}
}