This is an automated email from the ASF dual-hosted git repository. apappu pushed a commit to branch branch-2.7 in repository https://gitbox.apache.org/repos/asf/ambari.git
The following commit(s) were added to refs/heads/branch-2.7 by this push: new ca4a712 [AMBARI-25333] Regenerate keytab generates empty keytab file if no file present in cache (apappu) new b344827 Merge pull request #3052 from apappu/AMBARI-25333-branch-2.7 ca4a712 is described below commit ca4a712f8747227ca68575687596d704fd92e8f8 Author: root <apa...@hortonworks.com> AuthorDate: Wed Jul 17 00:18:50 2019 +0000 [AMBARI-25333] Regenerate keytab generates empty keytab file if no file present in cache (apappu) --- .../kerberos/CreatePrincipalsServerAction.java | 5 +++-- .../kerberos/KerberosServerAction.java | 26 ++++++---------------- 2 files changed, 10 insertions(+), 21 deletions(-) diff --git a/ambari-server/src/main/java/org/apache/ambari/server/serveraction/kerberos/CreatePrincipalsServerAction.java b/ambari-server/src/main/java/org/apache/ambari/server/serveraction/kerberos/CreatePrincipalsServerAction.java index 175b0ac..cd37f50 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/serveraction/kerberos/CreatePrincipalsServerAction.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/serveraction/kerberos/CreatePrincipalsServerAction.java @@ -150,8 +150,9 @@ public class CreatePrincipalsServerAction extends KerberosServerAction { // This principal has not been processed before, process it. processPrincipal = true; } else if (!StringUtils.isEmpty(kerberosPrincipalEntity.getCachedKeytabPath())) { - // This principal has been processed and a keytab file has been cached for it... do not process it. - processPrincipal = false; + // This principal has been processed, process again only if there is no physical keytab file. + File file = new File(kerberosPrincipalEntity.getCachedKeytabPath()); + processPrincipal = !file.exists(); } else { // This principal has been processed but a keytab file for it has not been distributed... process it. processPrincipal = true; diff --git a/ambari-server/src/main/java/org/apache/ambari/server/serveraction/kerberos/KerberosServerAction.java b/ambari-server/src/main/java/org/apache/ambari/server/serveraction/kerberos/KerberosServerAction.java index 37e63a1..55e90ca 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/serveraction/kerberos/KerberosServerAction.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/serveraction/kerberos/KerberosServerAction.java @@ -293,19 +293,13 @@ public abstract class KerberosServerAction extends AbstractServerAction { * to a given request * @return A Map of principals-to-password */ + @SuppressWarnings("unchecked") protected static Map<String, String> getPrincipalPasswordMap(Map<String, Object> requestSharedDataContext) { if (requestSharedDataContext == null) { return null; - } else { - Object map = requestSharedDataContext.get(PRINCIPAL_PASSWORD_MAP); - - if (map == null) { - map = new HashMap<String, String>(); - requestSharedDataContext.put(PRINCIPAL_PASSWORD_MAP, map); - } - - return (Map<String, String>) map; - } + } + Object map = requestSharedDataContext.computeIfAbsent(PRINCIPAL_PASSWORD_MAP, k -> new HashMap<String, String>()); + return (Map<String, String>) map; } /** @@ -319,19 +313,13 @@ public abstract class KerberosServerAction extends AbstractServerAction { * to a given request * @return A Map of principals-to-key_numbers */ + @SuppressWarnings("unchecked") protected static Map<String, Integer> getPrincipalKeyNumberMap(Map<String, Object> requestSharedDataContext) { if (requestSharedDataContext == null) { return null; - } else { - Object map = requestSharedDataContext.get(PRINCIPAL_KEY_NUMBER_MAP); - - if (map == null) { - map = new HashMap<String, String>(); - requestSharedDataContext.put(PRINCIPAL_KEY_NUMBER_MAP, map); - } - - return (Map<String, Integer>) map; } + Object map = requestSharedDataContext.computeIfAbsent(PRINCIPAL_KEY_NUMBER_MAP, k -> new HashMap<String, String>()); + return (Map<String, Integer>) map; } /**