Selaa lähdekoodia

YARN-8879. Kerberos principal is needed when submitting a submarine job. Contributed by Zac Zhou.

(cherry picked from commit 753f149fd3f5acf9a98cfc780d7899e307c19002)
Sunil G 6 vuotta sitten
vanhempi
commit
a439aa79dc

+ 1 - 4
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-core/src/main/java/org/apache/hadoop/yarn/service/utils/ServiceApiUtil.java

@@ -245,15 +245,12 @@ public class ServiceApiUtil {
 
   public static void validateKerberosPrincipal(
       KerberosPrincipal kerberosPrincipal) throws IOException {
-    try {
+    if (!StringUtils.isEmpty(kerberosPrincipal.getPrincipalName())) {
       if (!kerberosPrincipal.getPrincipalName().contains("/")) {
         throw new IllegalArgumentException(String.format(
             RestApiErrorMessages.ERROR_KERBEROS_PRINCIPAL_NAME_FORMAT,
             kerberosPrincipal.getPrincipalName()));
       }
-    } catch (NullPointerException e) {
-      throw new IllegalArgumentException(
-          RestApiErrorMessages.ERROR_KERBEROS_PRINCIPAL_MISSING);
     }
     if (!StringUtils.isEmpty(kerberosPrincipal.getKeytab())) {
       try {

+ 8 - 0
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-core/src/test/java/org/apache/hadoop/yarn/service/utils/TestServiceApiUtil.java

@@ -652,6 +652,14 @@ public class TestServiceApiUtil extends ServiceTestUtils {
     } catch (IllegalArgumentException e) {
       Assert.fail(NO_EXCEPTION_PREFIX + e.getMessage());
     }
+
+    kp.setPrincipalName(null);
+    kp.setKeytab(null);
+    try {
+      ServiceApiUtil.validateKerberosPrincipal(app.getKerberosPrincipal());
+    } catch (NullPointerException e) {
+        Assert.fail(NO_EXCEPTION_PREFIX + e.getMessage());
+    }
   }
 
   @Test