You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@oozie.apache.org by as...@apache.org on 2022/04/13 06:26:37 UTC

[oozie] branch master updated: OOZIE-3661 Oozie cannot handle environment variables with key=value content (dionusos via asalamon74)

This is an automated email from the ASF dual-hosted git repository.

asalamon74 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/oozie.git


The following commit(s) were added to refs/heads/master by this push:
     new 55936838a OOZIE-3661 Oozie cannot handle environment variables with key=value content (dionusos via asalamon74)
55936838a is described below

commit 55936838a0f20c69d04e633875bee8bb117bc2b3
Author: Andras Salamon <as...@apache.org>
AuthorDate: Wed Apr 13 08:25:35 2022 +0200

    OOZIE-3661 Oozie cannot handle environment variables with key=value content (dionusos via asalamon74)
---
 .../java/org/apache/oozie/action/hadoop/JavaActionExecutor.java  | 8 ++++----
 .../org/apache/oozie/action/hadoop/TestJavaActionExecutor.java   | 9 +++++++++
 release-log.txt                                                  | 1 +
 3 files changed, 14 insertions(+), 4 deletions(-)

diff --git a/core/src/main/java/org/apache/oozie/action/hadoop/JavaActionExecutor.java b/core/src/main/java/org/apache/oozie/action/hadoop/JavaActionExecutor.java
index 9fc1af987..456707804 100644
--- a/core/src/main/java/org/apache/oozie/action/hadoop/JavaActionExecutor.java
+++ b/core/src/main/java/org/apache/oozie/action/hadoop/JavaActionExecutor.java
@@ -27,6 +27,7 @@ import com.google.common.collect.ImmutableSet;
 import com.google.common.primitives.Ints;
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.filecache.DistributedCache;
 import org.apache.hadoop.fs.FileStatus;
@@ -43,7 +44,6 @@ import org.apache.hadoop.security.AccessControlException;
 import org.apache.hadoop.security.Credentials;
 import org.apache.hadoop.security.UserGroupInformation;
 import org.apache.hadoop.util.DiskChecker;
-import org.apache.hadoop.util.StringUtils;
 import org.apache.hadoop.yarn.api.ApplicationConstants;
 import org.apache.hadoop.yarn.api.protocolrecords.ApplicationsRequestScope;
 import org.apache.hadoop.yarn.api.records.ApplicationId;
@@ -1497,13 +1497,13 @@ public class JavaActionExecutor extends ActionExecutor {
         return vcores;
     }
 
-    private Map<String, String>  extractEnvVarsFromOozieLauncherProps(String oozieLauncherEnvProperty) {
+    Map<String, String>  extractEnvVarsFromOozieLauncherProps(String oozieLauncherEnvProperty) {
         Map<String, String> envMap = new LinkedHashMap<>();
         for (String envVar : StringUtils.split(oozieLauncherEnvProperty, File.pathSeparatorChar)) {
-            String[] env = StringUtils.split(envVar, '=');
+            String[] env = StringUtils.split(envVar, "=", 2);
             Preconditions.checkArgument(env.length == 2, "Invalid launcher setting for environment variables: \"%s\". " +
                                 "<env> should contain a list of ENV_VAR_NAME=VALUE separated by the '%s' character. " +
-                                "Example on Unix: A=foo1:B=foo2", oozieLauncherEnvProperty, File.pathSeparator);
+                                "Example on Unix: A=foo1:B=foo2:C=-Dbar=baz", oozieLauncherEnvProperty, File.pathSeparator);
             envMap.put(env[0], env[1]);
         }
         return envMap;
diff --git a/core/src/test/java/org/apache/oozie/action/hadoop/TestJavaActionExecutor.java b/core/src/test/java/org/apache/oozie/action/hadoop/TestJavaActionExecutor.java
index 909cb1ef1..691cb7451 100644
--- a/core/src/test/java/org/apache/oozie/action/hadoop/TestJavaActionExecutor.java
+++ b/core/src/test/java/org/apache/oozie/action/hadoop/TestJavaActionExecutor.java
@@ -2345,4 +2345,13 @@ public class TestJavaActionExecutor extends ActionExecutorTestCase {
         assertTrue("error message should contain: \"Java heap space\"",
                 context.getAction().getErrorMessage().contains("Java heap space"));
     }
+
+    public void testKeyValuePairInProperties() {
+        JavaActionExecutor ae = new JavaActionExecutor();
+        Map<String, String> result = ae.extractEnvVarsFromOozieLauncherProps(
+                "FOO=-Dbar=baz" + File.pathSeparatorChar + "BAR=baz");
+        assertEquals("-Dbar=baz", result.get("FOO"));
+        assertEquals("baz", result.get("BAR"));
+    }
+
 }
diff --git a/release-log.txt b/release-log.txt
index 5230d07ab..909db42ec 100644
--- a/release-log.txt
+++ b/release-log.txt
@@ -1,5 +1,6 @@
 -- Oozie 5.3.0 release (trunk - unreleased)
 
+OOZIE-3661 Oozie cannot handle environment variables with key=value content (dionusos via asalamon74)
 OOZIE-3659 oozieUrl ambiguous port number in TestOozieCLI.java (AlexaD via dionusos)
 OOZIE-3658 Fix TestJMSJobEventListener#testConnectionDrop flakiness again (dionusos via asalamon74)
 OOZIE-3646 Possible dead-lock in SignalXCommand (zuston via dionusos)