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;
   }
 
   /**

Reply via email to