You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by wu...@apache.org on 2022/11/14 15:03:02 UTC

[ambari] branch trunk updated: AMBARI-25333: Regenerate keytab generates empty keytab file if no file present in cache (#3486)

This is an automated email from the ASF dual-hosted git repository.

wuzhiguo pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/ambari.git


The following commit(s) were added to refs/heads/trunk by this push:
     new c09b6bc401 AMBARI-25333: Regenerate keytab generates empty keytab file if no file present in cache (#3486)
c09b6bc401 is described below

commit c09b6bc4014cc5087d0ac11f9ff4870dd90dab1e
Author: Zhiguo Wu <wu...@apache.org>
AuthorDate: Mon Nov 14 23:02:56 2022 +0800

    AMBARI-25333: Regenerate keytab generates empty keytab file if no file present in cache (#3486)
---
 .../kerberos/CreatePrincipalsServerAction.java     |  5 +++--
 .../kerberos/KerberosServerAction.java             | 24 ++++++----------------
 2 files changed, 9 insertions(+), 20 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 a62af40b14..5af81cfccb 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
@@ -157,8 +157,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 397914a2dc..437261e412 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
@@ -306,19 +306,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;
   }
 
   /**
@@ -332,19 +326,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;
   }
 
   /**


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@ambari.apache.org
For additional commands, e-mail: commits-help@ambari.apache.org