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 c060659..820c323 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 @@ -345,7 +345,19 @@ public synchronized void transitionToActive( throw new ServiceFailedException( "Error when transitioning to Active mode", e); } - + try { + refreshActiveServicesAcls(); + } catch (YarnException e) { + LOG.error("RefreshAll failed so firing fatal event", e); + rmContext + .getDispatcher() + .getEventHandler() + .handle( + new RMFatalEvent(RMFatalEventType.TRANSITION_TO_ACTIVE_FAILED, + e)); + throw new ServiceFailedException( + "Error on refreshAll during transition to Active", e); + } RMAuditLogger.logSuccess(user.getShortUserName(), "transitionToActive", "RM"); } @@ -566,6 +578,7 @@ public RefreshServiceAclsResponse refreshServiceAcls( checkRMStatus(user.getShortUserName(), operation, "refresh Service ACLs."); refreshServiceAcls(); + refreshActiveServicesAcls(); RMAuditLogger.logSuccess(user.getShortUserName(), operation, "AdminService"); @@ -579,6 +592,13 @@ private void refreshServiceAcls() throws IOException, YarnException { YarnConfiguration.HADOOP_POLICY_CONFIGURATION_FILE); refreshServiceAcls(conf, policyProvider); + } + + private void refreshActiveServicesAcls() throws IOException, YarnException { + PolicyProvider policyProvider = RMPolicyProvider.getInstance(); + Configuration conf = + getConfiguration(new Configuration(false), + YarnConfiguration.HADOOP_POLICY_CONFIGURATION_FILE); rmContext.getClientRMService().refreshServiceAcls(conf, policyProvider); rmContext.getApplicationMasterService().refreshServiceAcls( conf, policyProvider);