YARN-6072. RM unable to start in secure mode. Contributed by Ajith S.
(cherry picked from commit e459092a08933ea8637a2f37fbae0d9875e6870d)
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/AdminService.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/AdminService.java
index 37cb76b..c3a9aad 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/AdminService.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/AdminService.java
@@ -673,7 +673,7 @@
}
refreshClusterMaxPriority(RefreshClusterMaxPriorityRequest.newInstance());
} catch (Exception ex) {
- throw new ServiceFailedException(ex.getMessage());
+ throw new ServiceFailedException("RefreshAll operation failed", ex);
}
}
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ResourceManager.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ResourceManager.java
index 7b1f2f9..469db2a 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ResourceManager.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ResourceManager.java
@@ -252,15 +252,6 @@
this.rmContext.setHAEnabled(HAUtil.isHAEnabled(this.conf));
if (this.rmContext.isHAEnabled()) {
HAUtil.verifyAndSetConfiguration(this.conf);
-
- // If the RM is configured to use an embedded leader elector,
- // initialize the leader elector.
- if (HAUtil.isAutomaticFailoverEnabled(conf) &&
- HAUtil.isAutomaticFailoverEmbedded(conf)) {
- EmbeddedElector elector = createEmbeddedElector();
- addIfService(elector);
- rmContext.setLeaderElectorService(elector);
- }
}
// Set UGI and do login
@@ -278,10 +269,27 @@
addIfService(rmDispatcher);
rmContext.setDispatcher(rmDispatcher);
+ // The order of services below should not be changed as services will be
+ // started in same order
+ // As elector service needs admin service to be initialized and started,
+ // first we add admin service then elector service
+
adminService = createAdminService();
addService(adminService);
rmContext.setRMAdminService(adminService);
+ // elector must be added post adminservice
+ if (this.rmContext.isHAEnabled()) {
+ // If the RM is configured to use an embedded leader elector,
+ // initialize the leader elector.
+ if (HAUtil.isAutomaticFailoverEnabled(conf)
+ && HAUtil.isAutomaticFailoverEmbedded(conf)) {
+ EmbeddedElector elector = createEmbeddedElector();
+ addIfService(elector);
+ rmContext.setLeaderElectorService(elector);
+ }
+ }
+
rmContext.setYarnConfiguration(conf);
createAndInitActiveServices();