commit 42b4666533b551396796b80064d6e82365e3e746 Author: Gera Shegalov Date: Fri Mar 11 02:19:18 2016 -0800 YARN-4789.001.patch diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/util/Apps.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/util/Apps.java index 9235e7d..5f57664 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/util/Apps.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/util/Apps.java @@ -124,6 +124,11 @@ public static void addToEnvironment( String val = environment.get(variable); if (val == null) { val = value; + } else if (!variable.contains("PATH")) { + throw new IllegalArgumentException(variable + + ": Only *PATH* variables may be" + + " concatenated with user environment using the path separator " + + classPathSeparator); } else { val = val + classPathSeparator + value; } diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/util/TestApps.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/util/TestApps.java index 66d2d23..4b01144 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/util/TestApps.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/util/TestApps.java @@ -19,14 +19,19 @@ import org.apache.hadoop.util.Shell; import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.io.File; import java.util.HashMap; import java.util.Map; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.fail; public class TestApps { + private static final Logger LOG = LoggerFactory.getLogger(TestApps.class); + @Test public void testSetEnvFromInputString() { Map environment = new HashMap(); @@ -57,5 +62,15 @@ public void testSetEnvFromInputString() { File.pathSeparator); assertEquals("=", environment.get("e1")); assertEquals("a1=a2", environment.get("e2")); + + try { + environment.clear(); + environment.put("JAVA_HOME", "/path/user_jdk"); + Apps.setEnvFromInputString(environment, + "JAVA_HOME=/path/admin_jdk", File.pathSeparator); + fail("No expected IllegalArgumentException caught"); + } catch (IllegalArgumentException iaex) { + LOG.info("Expected exception caught", iaex); + } } }