HADOOP-13353. LdapGroupsMapping getPassward shouldn't return null when IOException throws. Contributed by Zhaohao Liang and Wei-Chiu Chuang.
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/49ba09a9 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/49ba09a9 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/49ba09a9 Branch: refs/heads/YARN-3368 Commit: 49ba09a9221ad1e25e89800f6c455bbaad41483b Parents: d81b816 Author: Wei-Chiu Chuang <[email protected]> Authored: Fri Aug 5 16:32:44 2016 -0700 Committer: Wei-Chiu Chuang <[email protected]> Committed: Fri Aug 5 16:32:44 2016 -0700 ---------------------------------------------------------------------- .../hadoop/security/LdapGroupsMapping.java | 12 ++++------- .../hadoop/security/TestLdapGroupsMapping.java | 21 ++++++++++++++++++++ 2 files changed, 25 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/49ba09a9/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/security/LdapGroupsMapping.java ---------------------------------------------------------------------- diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/security/LdapGroupsMapping.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/security/LdapGroupsMapping.java index 4b941ef..24d07c6 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/security/LdapGroupsMapping.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/security/LdapGroupsMapping.java @@ -616,19 +616,15 @@ public class LdapGroupsMapping } String getPassword(Configuration conf, String alias, String defaultPass) { - String password = null; + String password = defaultPass; try { char[] passchars = conf.getPassword(alias); if (passchars != null) { password = new String(passchars); } - else { - password = defaultPass; - } - } - catch (IOException ioe) { - LOG.warn("Exception while trying to password for alias " + alias + ": " - + ioe.getMessage()); + } catch (IOException ioe) { + LOG.warn("Exception while trying to get password for alias " + alias + + ": ", ioe); } return password; } http://git-wip-us.apache.org/repos/asf/hadoop/blob/49ba09a9/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/TestLdapGroupsMapping.java ---------------------------------------------------------------------- diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/TestLdapGroupsMapping.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/TestLdapGroupsMapping.java index 131b4e6..9e9f5a5 100644 --- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/TestLdapGroupsMapping.java +++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/TestLdapGroupsMapping.java @@ -57,6 +57,7 @@ import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import org.mockito.Mockito; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -364,4 +365,24 @@ public class TestLdapGroupsMapping extends TestLdapGroupsMappingBase { } } + /** + * Make sure that when + * {@link Configuration#getPassword(String)} throws an IOException, + * {@link LdapGroupsMapping#setConf(Configuration)} does not throw an NPE. + * + * @throws Exception + */ + @Test(timeout = 10000) + public void testSetConf() throws Exception { + Configuration conf = new Configuration(); + Configuration mockConf = Mockito.spy(conf); + when(mockConf.getPassword(anyString())) + .thenThrow(new IOException("injected IOException")); + // Set a dummy LDAP server URL. + mockConf.set(LdapGroupsMapping.LDAP_URL_KEY, "ldap://test"); + + LdapGroupsMapping groupsMapping = getGroupsMapping(); + groupsMapping.setConf(mockConf); + } + } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
