diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ResourceManager.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ResourceManager.java index b0fa8f3..4d4a061 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ResourceManager.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ResourceManager.java @@ -180,7 +180,6 @@ protected static void setClusterTimeStamp(long timestamp) { @Override protected void serviceInit(Configuration conf) throws Exception { - validateConfigs(conf); this.conf = conf; this.rmContext = new RMContextImpl(); @@ -189,18 +188,22 @@ protected void serviceInit(Configuration conf) throws Exception { this.configurationProvider.init(this.conf); rmContext.setConfigurationProvider(configurationProvider); - // load yarn-site.xml - this.conf.addResource(this.configurationProvider - .getConfigurationInputStream(this.conf, - YarnConfiguration.YARN_SITE_CONFIGURATION_FILE)); // load core-site.xml this.conf.addResource(this.configurationProvider .getConfigurationInputStream(this.conf, YarnConfiguration.CORE_SITE_CONFIGURATION_FILE)); + // Do refreshUserToGroupsMappings with loaded core-site.xml Groups.getUserToGroupsMappingServiceWithLoadedConfiguration(this.conf) .refresh(); + // load yarn-site.xml + this.conf.addResource(this.configurationProvider + .getConfigurationInputStream(this.conf, + YarnConfiguration.YARN_SITE_CONFIGURATION_FILE)); + + validateConfigs(this.conf); + // register the handlers for all AlwaysOn services using setupDispatcher(). rmDispatcher = setupDispatcher(); addIfService(rmDispatcher); @@ -210,15 +213,15 @@ protected void serviceInit(Configuration conf) throws Exception { addService(adminService); rmContext.setRMAdminService(adminService); - this.rmContext.setHAEnabled(HAUtil.isHAEnabled(conf)); + this.rmContext.setHAEnabled(HAUtil.isHAEnabled(this.conf)); if (this.rmContext.isHAEnabled()) { - HAUtil.verifyAndSetConfiguration(conf); + HAUtil.verifyAndSetConfiguration(this.conf); } createAndInitActiveServices(); - webAppAddress = WebAppUtils.getRMWebAppURLWithoutScheme(conf); + webAppAddress = WebAppUtils.getRMWebAppURLWithoutScheme(this.conf); - super.serviceInit(conf); + super.serviceInit(this.conf); } protected QueueACLsManager createQueueACLsManager(ResourceScheduler scheduler, diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestRMAdminService.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestRMAdminService.java index 7cb9111..1636319 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestRMAdminService.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestRMAdminService.java @@ -618,6 +618,37 @@ public void testRMHAWithFileSystemBasedConfiguration() throws IOException, } } + @Test + public void testRMInitialsWithFileSystemBasedConfigurationProvider() + throws Exception { + configuration.set(YarnConfiguration.RM_CONFIGURATION_PROVIDER_CLASS, + "org.apache.hadoop.yarn.FileSystemBasedConfigurationProvider"); + useCapacityScheduler(); + + // upload default configurations + uploadDefaultConfiguration(); + + YarnConfiguration yarnConf = new YarnConfiguration(); + yarnConf.set(YarnConfiguration.YARN_ADMIN_ACL, "world:anyone:rwcda"); + uploadConfiguration(yarnConf, "yarn-site.xml"); + + String aclStringBefore = + configuration.get(YarnConfiguration.YARN_ADMIN_ACL, + YarnConfiguration.DEFAULT_YARN_ADMIN_ACL); + + try { + rm = new MockRM(configuration); + rm.init(configuration); + } catch(Exception ex) { + fail("Should not get any exceptions"); + } + + String aclStringAfter = + rm.adminService.getAccessControlList().getAclString().trim(); + Assert.assertTrue(!aclStringAfter.equals(aclStringBefore)); + Assert.assertEquals(aclStringAfter, "world:anyone:rwcda"); + } + private String writeConfigurationXML(Configuration conf, String confXMLName) throws IOException { DataOutputStream output = null;