[ https://issues.apache.org/jira/browse/YARN-4727?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16165184#comment-16165184 ]
Hudson commented on YARN-4727: ------------------------------ SUCCESS: Integrated in Jenkins build Hadoop-trunk-Commit #12862 (See [https://builds.apache.org/job/Hadoop-trunk-Commit/12862/]) YARN-4727. Unable to override the /home/ericp/run/conf/ env variable for (epayne: rev 729d05f5293acf63e7e4aa3bfbf29b999c9a2906) * (edit) hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/launcher/ContainerLaunch.java * (edit) hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/launcher/TestContainerLaunch.java > Unable to override the $HADOOP_CONF_DIR env variable for container > ------------------------------------------------------------------ > > Key: YARN-4727 > URL: https://issues.apache.org/jira/browse/YARN-4727 > Project: Hadoop YARN > Issue Type: Bug > Components: nodemanager > Affects Versions: 2.4.1, 2.5.2, 2.7.2, 2.6.4, 2.8.1 > Reporter: Terence Yim > Assignee: Jason Lowe > Attachments: YARN-4727.001.patch, YARN-4727.002.patch > > > Given the default config of "yarn.nodemanager.env-whitelist", application > should be able to set the env variable $HADOOP_CONF_DIR to value other than > the one in the NodeManager system environment. However, I believe due to a > bug in the > {{org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch}} > class, it is not possible so. > From the {{sanitizeEnv()}} method in the ContainerLaunch class > (https://github.com/apache/hadoop/blob/trunk/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/launcher/ContainerLaunch.java#L977) > {noformat} > putEnvIfNotNull(environment, > Environment.HADOOP_CONF_DIR.name(), > System.getenv(Environment.HADOOP_CONF_DIR.name()) > ); > if (!Shell.WINDOWS) { > environment.put("JVM_PID", "$$"); > } > String[] whitelist = conf.get(YarnConfiguration.NM_ENV_WHITELIST, > YarnConfiguration.DEFAULT_NM_ENV_WHITELIST).split(","); > > for(String whitelistEnvVariable : whitelist) { > putEnvIfAbsent(environment, whitelistEnvVariable.trim()); > } > ... > private static void putEnvIfAbsent( > Map<String, String> environment, String variable) { > if (environment.get(variable) == null) { > putEnvIfNotNull(environment, variable, System.getenv(variable)); > } > } > {noformat} > So there two issues here. > 1. the environment is already set with the system environment of the NM in > the {{putEnvIfNotNull}} call, hence the {{putEnvIfAbsent}} call will never > set it to some new value > 2. Inside the {{putEnvIfAbsent}} call, it uses the system environment of the > NM, which it should be using the one from the {{launchContext}} instead. -- This message was sent by Atlassian JIRA (v6.4.14#64029) --------------------------------------------------------------------- To unsubscribe, e-mail: yarn-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: yarn-issues-h...@hadoop.apache.org