Repository: oozie Updated Branches: refs/heads/master 43b73d836 -> 57152acd5
OOZIE-2649 Can't override sub-workflow configuration property if defined in parent workflow XML (asasvari via rkanter) Project: http://git-wip-us.apache.org/repos/asf/oozie/repo Commit: http://git-wip-us.apache.org/repos/asf/oozie/commit/57152acd Tree: http://git-wip-us.apache.org/repos/asf/oozie/tree/57152acd Diff: http://git-wip-us.apache.org/repos/asf/oozie/diff/57152acd Branch: refs/heads/master Commit: 57152acd5c9aa081d9c8357009f8741ee026e352 Parents: 43b73d8 Author: Robert Kanter <[email protected]> Authored: Tue Aug 30 11:05:23 2016 -0700 Committer: Robert Kanter <[email protected]> Committed: Tue Aug 30 11:05:23 2016 -0700 ---------------------------------------------------------------------- .../action/oozie/SubWorkflowActionExecutor.java | 3 +- .../workflow/lite/LiteWorkflowAppParser.java | 9 ++- .../oozie/TestSubWorkflowActionExecutor.java | 83 +++++++++++++++----- release-log.txt | 1 + 4 files changed, 74 insertions(+), 22 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/oozie/blob/57152acd/core/src/main/java/org/apache/oozie/action/oozie/SubWorkflowActionExecutor.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/oozie/action/oozie/SubWorkflowActionExecutor.java b/core/src/main/java/org/apache/oozie/action/oozie/SubWorkflowActionExecutor.java index 1ea7097..b6d2b12 100644 --- a/core/src/main/java/org/apache/oozie/action/oozie/SubWorkflowActionExecutor.java +++ b/core/src/main/java/org/apache/oozie/action/oozie/SubWorkflowActionExecutor.java @@ -182,8 +182,6 @@ public class SubWorkflowActionExecutor extends ActionExecutor { XConfiguration subWorkflowConf = new XConfiguration(); - injectInline(eConf.getChild("configuration", ns), subWorkflowConf); - Configuration parentConf = new XConfiguration(new StringReader(context.getWorkflow().getConf())); if (eConf.getChild(("propagate-configuration"), ns) != null) { @@ -212,6 +210,7 @@ public class SubWorkflowActionExecutor extends ActionExecutor { subWorkflowConf.set(OozieClient.GROUP_NAME, group); } + injectInline(eConf.getChild("configuration", ns), subWorkflowConf); injectCallback(context, subWorkflowConf); injectRecovery(extId, subWorkflowConf); injectParent(context.getWorkflow().getId(), subWorkflowConf); http://git-wip-us.apache.org/repos/asf/oozie/blob/57152acd/core/src/main/java/org/apache/oozie/workflow/lite/LiteWorkflowAppParser.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/oozie/workflow/lite/LiteWorkflowAppParser.java b/core/src/main/java/org/apache/oozie/workflow/lite/LiteWorkflowAppParser.java index bbd81a9..0541634 100644 --- a/core/src/main/java/org/apache/oozie/workflow/lite/LiteWorkflowAppParser.java +++ b/core/src/main/java/org/apache/oozie/workflow/lite/LiteWorkflowAppParser.java @@ -104,6 +104,8 @@ public class LiteWorkflowAppParser { private static final String DECISION_CASE_E = "case"; private static final String DECISION_DEFAULT_E = "default"; + private static final String SUBWORKFLOW_E = "sub-workflow"; + private static final String KILL_MESSAGE_E = "message"; public static final String VALIDATE_FORK_JOIN = "oozie.validate.ForkJoin"; public static final String WF_VALIDATE_FORK_JOIN = "oozie.wf.validate.ForkJoin"; @@ -481,7 +483,12 @@ public class LiteWorkflowAppParser { jobConf.set(OOZIE_GLOBAL, getGlobalString(gData)); } eActionConf = elem; - handleDefaultsAndGlobal(gData, configDefault, elem); + if (SUBWORKFLOW_E.equals(elem.getName())) { + handleDefaultsAndGlobal(gData, null, elem); + } + else { + handleDefaultsAndGlobal(gData, configDefault, elem); + } } } http://git-wip-us.apache.org/repos/asf/oozie/blob/57152acd/core/src/test/java/org/apache/oozie/action/oozie/TestSubWorkflowActionExecutor.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/oozie/action/oozie/TestSubWorkflowActionExecutor.java b/core/src/test/java/org/apache/oozie/action/oozie/TestSubWorkflowActionExecutor.java index bdbbfd9..e074d48 100644 --- a/core/src/test/java/org/apache/oozie/action/oozie/TestSubWorkflowActionExecutor.java +++ b/core/src/test/java/org/apache/oozie/action/oozie/TestSubWorkflowActionExecutor.java @@ -194,6 +194,7 @@ public class TestSubWorkflowActionExecutor extends ActionExecutorTestCase { String defaultConf = workflow.getConf(); XConfiguration newConf = new XConfiguration(new StringReader(defaultConf)); newConf.set("abc", "xyz"); + newConf.set("job_prop", "job_prop_val"); workflow.setConf(newConf.toXmlString()); final WorkflowActionBean action = (WorkflowActionBean) workflow.getActions().get(0); @@ -205,6 +206,10 @@ public class TestSubWorkflowActionExecutor extends ActionExecutorTestCase { " <name>a</name>" + " <value>A</value>" + " </property>" + + " <property>" + + " <name>job_prop</name>" + + " <value>sub_prop_val</value>" + + " </property>" + " </configuration>" + "</sub-workflow>"); @@ -232,6 +237,8 @@ public class TestSubWorkflowActionExecutor extends ActionExecutorTestCase { WorkflowJob wf = oozieClient.getJobInfo(action.getExternalId()); Configuration childConf = getWorkflowConfig(wf); assertEquals("xyz", childConf.get("abc")); + assertEquals("A", childConf.get("a")); + assertEquals("sub_prop_val", childConf.get("job_prop")); } public void testGetGroupFromParent() throws Exception { @@ -363,6 +370,7 @@ public class TestSubWorkflowActionExecutor extends ActionExecutorTestCase { WorkflowJob wf = oozieClient.getJobInfo(action.getExternalId()); Configuration childConf = getWorkflowConfig(wf); assertNull(childConf.get("abc")); + assertEquals("A", childConf.get("a")); } public void testSubworkflowLib() throws Exception { @@ -684,7 +692,7 @@ public class TestSubWorkflowActionExecutor extends ActionExecutorTestCase { Path subWorkflowAppPath = createSubWorkflowXml(); createConfigDefaultXml(); - + createSubWorkflowConfigDefaultXml(); String workflowUri = createTestWorkflowXml(subWorkflowAppPath); LocalOozie.start(); @@ -722,7 +730,10 @@ public class TestSubWorkflowActionExecutor extends ActionExecutorTestCase { assertEquals("foo3", actionConf.get("foo3")); // Checking the action conf configuration. assertEquals("actionconf", subWorkflowConf.get("foo3")); - + assertEquals("subactionconf", actionConf.get("foo4")); + // config defaults are present + assertEquals("default", subWorkflowConf.get("parentConfigDefault")); + assertEquals("default", actionConf.get("subwfConfigDefault")); } finally { LocalOozie.stop(); } @@ -745,6 +756,10 @@ public class TestSubWorkflowActionExecutor extends ActionExecutorTestCase { " <name>foo3</name>" + " <value>foo3</value>" + " </property>" + + " <property>" + + " <name>foo4</name>" + + " <value>actionconf</value>" + + " </property>" + " </configuration>" + "</global>" + "<start to=\"subwf\"/>" + @@ -773,27 +788,51 @@ public class TestSubWorkflowActionExecutor extends ActionExecutorTestCase { } private Path createSubWorkflowXml() throws IOException { - Path subWorkflowAppPath = getFsTestCaseDir(); - FileSystem fs = getFileSystem(); - Path subWorkflowPath = new Path(subWorkflowAppPath, "workflow.xml"); - Writer writer = new OutputStreamWriter(fs.create(subWorkflowPath)); - writer.write(getWorkflow()); - writer.close(); - return subWorkflowAppPath; + return createSubWorkflowFile(getWorkflow(), "workflow.xml"); } private void createConfigDefaultXml() throws IOException { - String config_defaultUri=getTestCaseFileUri("config-default.xml"); - String config_default="<configuration>\n" + - "<property>\n" + - "<name>foo</name>\n" + - "<value>default</value>\n" + - "</property>\n" + + String config_defaultUri = getTestCaseFileUri("config-default.xml"); + String config_default = + "<configuration>" + + " <property>" + + " <name>foo</name>" + + " <value>default</value>" + + " </property>" + + " <property>" + + " <name>parentConfigDefault</name>" + + " <value>default</value>" + + " </property>" + "</configuration>"; writeToFile(config_default, config_defaultUri); } + private void createSubWorkflowConfigDefaultXml() throws IOException { + String config_default = "<configuration>" + + " <property>" + + " <name>subwfConfigDefault</name>" + + " <value>default</value>" + + " </property>" + + " <property>" + + " <name>foo4</name>" + + " <value>default</value>" + + " </property>" + + "</configuration>"; + createSubWorkflowFile(config_default, "config-default.xml"); + } + + private Path createSubWorkflowFile(String content, String fileName) throws IOException + { + Path subWorkflowAppPath = getFsTestCaseDir(); + FileSystem fs = getFileSystem(); + Path subWorkflowPath = new Path(subWorkflowAppPath, fileName); + Writer writer = new OutputStreamWriter(fs.create(subWorkflowPath)); + writer.write(content); + writer.close(); + return subWorkflowAppPath; + } + public String getWorkflow() { return "<workflow-app xmlns='uri:oozie:workflow:0.4' name='app'>" + "<global>" + @@ -811,10 +850,16 @@ public class TestSubWorkflowActionExecutor extends ActionExecutorTestCase { "<start to='java' />" + "<action name='java'>" + "<java>" + - "<job-tracker>" + getJobTrackerUri() + "</job-tracker>" + - "<name-node>" + getNameNodeUri() + "</name-node>" + - "<main-class>" + LauncherMainTester.class.getName() + "</main-class>" + - "<arg>exit0</arg>" + + " <job-tracker>" + getJobTrackerUri() + "</job-tracker>" + + " <name-node>" + getNameNodeUri() + "</name-node>" + + " <configuration>" + + " <property>" + + " <name>foo4</name>" + + " <value>subactionconf</value>" + + " </property>" + + " </configuration>" + + " <main-class>" + LauncherMainTester.class.getName() + "</main-class>" + + " <arg>exit0</arg>" + "</java>" + "<ok to='end' />" + "<error to='fail' />" http://git-wip-us.apache.org/repos/asf/oozie/blob/57152acd/release-log.txt ---------------------------------------------------------------------- diff --git a/release-log.txt b/release-log.txt index 58e8f93..37f3b71 100644 --- a/release-log.txt +++ b/release-log.txt @@ -1,5 +1,6 @@ -- Oozie 4.3.0 release (trunk - unreleased) +OOZIE-2649 Can't override sub-workflow configuration property if defined in parent workflow XML (asasvari via rkanter) OOZIE-2656 OozieShareLibCLI uses op system username instead of Kerberos to upload jars (gezapeti via rkanter) OOZIE-1173 Refactor: use ParamChecker inXOozieClient (abhishekbafna via jaydeepvishwakarma) OOZIE-2657 Clean up redundant access modifiers from oozie interfaces (abhishekbafna via jaydeepvishwakarma)
