From 3c45762a0bfb403e069a03e30d35dd11432ee8b0 Mon Sep 17 00:00:00 2001 From: Eric Yang Date: Mon, 25 Mar 2019 15:53:24 -0400 Subject: [PATCH] YARN-9391. Fixed node manager environment leaks into Docker containers. Contributed by Jim Brennan --- .../yarn/server/nodemanager/ContainerExecutor.java | 10 ---------- .../containermanager/launcher/TestContainerLaunch.java | 5 +++++ 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/ContainerExecutor.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/ContainerExecutor.java index 61e4364100..55836c575c 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/ContainerExecutor.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/ContainerExecutor.java @@ -431,16 +431,6 @@ public abstract class ContainerExecutor implements Configurable { sb.env(env.getKey(), env.getValue()); } } - // Add the whitelist vars to the environment. Do this after writing - // environment variables so they are not written twice. - for(String var : whitelistVars) { - if (!environment.containsKey(var)) { - String val = getNMEnvVar(var); - if (val != null) { - environment.put(var, val); - } - } - } } if (resources != null) { diff --git a/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 b/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 index c1f426862a..e048577219 100644 --- a/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 +++ b/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 @@ -476,10 +476,15 @@ public class TestContainerLaunch extends BaseContainerManagerTest { for (String envVar : env.keySet()) { Assert.assertTrue(shellContent.contains(envVar + "=")); } + // The whitelist vars should not have been added to env + // They should only be in the launch script for (String wlVar : whitelistVars) { + Assert.assertFalse(env.containsKey(wlVar)); Assert.assertTrue(shellContent.contains(wlVar + "=")); } + // Non-whitelist nm vars should be in neither env nor in launch script for (String nwlVar : nonWhiteListEnv) { + Assert.assertFalse(env.containsKey(nwlVar)); Assert.assertFalse(shellContent.contains(nwlVar + "=")); } // Explicitly Set NM vars should be before user vars