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 d408298..62b427f 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 @@ -181,7 +181,6 @@ protected static void setClusterTimeStamp(long timestamp) { @Override protected void serviceInit(Configuration conf) throws Exception { - validateConfigs(conf); this.conf = conf; this.rmContext = new RMContextImpl(); @@ -190,13 +189,6 @@ protected void serviceInit(Configuration conf) throws Exception { this.configurationProvider.init(this.conf); rmContext.setConfigurationProvider(configurationProvider); - // load yarn-site.xml - InputStream yarnSiteXMLInputStream = - this.configurationProvider.getConfigurationInputStream(this.conf, - YarnConfiguration.YARN_SITE_CONFIGURATION_FILE); - if (yarnSiteXMLInputStream != null) { - this.conf.addResource(yarnSiteXMLInputStream); - } // load core-site.xml InputStream coreSiteXMLInputStream = this.configurationProvider.getConfigurationInputStream(this.conf, @@ -209,6 +201,16 @@ protected void serviceInit(Configuration conf) throws Exception { Groups.getUserToGroupsMappingServiceWithLoadedConfiguration(this.conf) .refresh(); + // load yarn-site.xml + InputStream yarnSiteXMLInputStream = + this.configurationProvider.getConfigurationInputStream(this.conf, + YarnConfiguration.YARN_SITE_CONFIGURATION_FILE); + if (yarnSiteXMLInputStream != null) { + this.conf.addResource(yarnSiteXMLInputStream); + } + + validateConfigs(this.conf); + // register the handlers for all AlwaysOn services using setupDispatcher(). rmDispatcher = setupDispatcher(); addIfService(rmDispatcher); @@ -218,15 +220,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 cb9f90d..06b05ad 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 @@ -590,6 +590,36 @@ public void testRMStartsWithoutConfigurationFilesProvided() { } + @Test + public void testRMInitialsWithFileSystemBasedConfigurationProvider() + throws Exception { + configuration.set(YarnConfiguration.RM_CONFIGURATION_PROVIDER_CLASS, + "org.apache.hadoop.yarn.FileSystemBasedConfigurationProvider"); + + // 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;