You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@oozie.apache.org by vi...@apache.org on 2012/09/06 20:03:10 UTC
svn commit: r1381698 - in /incubator/oozie/branches/branch-3.3: ./
core/src/main/java/org/apache/oozie/service/
core/src/test/java/org/apache/oozie/action/oozie/
core/src/test/java/org/apache/oozie/service/
Author: virag
Date: Thu Sep 6 18:03:09 2012
New Revision: 1381698
URL: http://svn.apache.org/viewvc?rev=1381698&view=rev
Log:
OOZIE-981 Subworkflow lib not found in classpath when parent workflow lib overwrites it (mona via virag)
Modified:
incubator/oozie/branches/branch-3.3/core/src/main/java/org/apache/oozie/service/WorkflowAppService.java
incubator/oozie/branches/branch-3.3/core/src/test/java/org/apache/oozie/action/oozie/TestSubWorkflowActionExecutor.java
incubator/oozie/branches/branch-3.3/core/src/test/java/org/apache/oozie/service/TestLiteWorkflowAppService.java
incubator/oozie/branches/branch-3.3/release-log.txt
Modified: incubator/oozie/branches/branch-3.3/core/src/main/java/org/apache/oozie/service/WorkflowAppService.java
URL: http://svn.apache.org/viewvc/incubator/oozie/branches/branch-3.3/core/src/main/java/org/apache/oozie/service/WorkflowAppService.java?rev=1381698&r1=1381697&r2=1381698&view=diff
==============================================================================
--- incubator/oozie/branches/branch-3.3/core/src/main/java/org/apache/oozie/service/WorkflowAppService.java (original)
+++ incubator/oozie/branches/branch-3.3/core/src/main/java/org/apache/oozie/service/WorkflowAppService.java Thu Sep 6 18:03:09 2012
@@ -202,7 +202,10 @@ public abstract class WorkflowAppService
if (entry.getKey().startsWith("oozie.")) {
String name = entry.getKey();
String value = entry.getValue();
- conf.set(name, value); //TODO ARGGHHHHH!!!!
+ // if property already exists, should not overwrite
+ if(conf.get(name) == null) {
+ conf.set(name, value);
+ }
}
}
XConfiguration retConf = new XConfiguration();
@@ -261,7 +264,7 @@ public abstract class WorkflowAppService
}
}
else {
- XLog.getLog(getClass()).warn("libpath [{0}] does not exists", libPath);
+ XLog.getLog(getClass()).warn("libpath [{0}] does not exist", libPath);
}
return libPaths;
}
Modified: incubator/oozie/branches/branch-3.3/core/src/test/java/org/apache/oozie/action/oozie/TestSubWorkflowActionExecutor.java
URL: http://svn.apache.org/viewvc/incubator/oozie/branches/branch-3.3/core/src/test/java/org/apache/oozie/action/oozie/TestSubWorkflowActionExecutor.java?rev=1381698&r1=1381697&r2=1381698&view=diff
==============================================================================
--- incubator/oozie/branches/branch-3.3/core/src/test/java/org/apache/oozie/action/oozie/TestSubWorkflowActionExecutor.java (original)
+++ incubator/oozie/branches/branch-3.3/core/src/test/java/org/apache/oozie/action/oozie/TestSubWorkflowActionExecutor.java Thu Sep 6 18:03:09 2012
@@ -20,6 +20,8 @@ package org.apache.oozie.action.oozie;
import org.apache.oozie.action.hadoop.ActionExecutorTestCase;
import org.apache.oozie.WorkflowJobBean;
import org.apache.oozie.WorkflowActionBean;
+import org.apache.oozie.service.Services;
+import org.apache.oozie.service.WorkflowAppService;
import org.apache.oozie.util.XConfiguration;
import org.apache.oozie.client.OozieClient;
import org.apache.oozie.client.WorkflowAction;
@@ -27,8 +29,6 @@ import org.apache.oozie.client.WorkflowJ
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.fs.FileSystem;
-import org.apache.oozie.workflow.lite.NodeHandler;
-
import java.io.File;
import java.io.StringReader;
import java.io.Writer;
@@ -350,4 +350,52 @@ public class TestSubWorkflowActionExecut
Configuration childConf = new XConfiguration(new StringReader(wf.getConf()));
assertNull(childConf.get("abc"));
}
+
+ public void testSubworkflowLib() throws Exception {
+ XConfiguration protoConf = getBaseProtoConf();
+ WorkflowJobBean workflow = createBaseWorkflow(protoConf, "W");
+ FileSystem fs = getFileSystem();
+ Path parentLibJar = new Path(getFsTestCaseDir(), "lib/parentLibrary.jar");
+ fs.create(parentLibJar);
+ assertTrue(fs.exists(parentLibJar));
+ String defaultConf = workflow.getConf();
+ XConfiguration newConf = new XConfiguration(new StringReader(defaultConf));
+ newConf.set(OozieClient.LIBPATH, parentLibJar.getParent().toString());
+ workflow.setConf(newConf.toXmlString());
+
+ Path subWorkflowAppPath = new Path(getFsTestCaseDir().toString(), "subwf");
+ Writer writer = new OutputStreamWriter(fs.create(new Path(subWorkflowAppPath, "workflow.xml")));
+ writer.write(APP1);
+ writer.close();
+ Path subwfLibJar = new Path(subWorkflowAppPath, "lib/subwfLibrary.jar");
+ fs.create(subwfLibJar);
+ assertTrue(fs.exists(subwfLibJar));
+
+ final WorkflowActionBean action = (WorkflowActionBean) workflow.getActions().get(0);
+ action.setConf("<sub-workflow xmlns='uri:oozie:workflow:0.1' name='subwf'>" +
+ " <app-path>" + subWorkflowAppPath + File.separator + "workflow.xml" + "</app-path>" +
+ "</sub-workflow>");
+ SubWorkflowActionExecutor subWorkflow = new SubWorkflowActionExecutor();
+ subWorkflow.start(new Context(workflow, action), action);
+
+ final OozieClient oozieClient = subWorkflow.getWorkflowClient(new Context(workflow, action),
+ SubWorkflowActionExecutor.LOCAL);
+ waitFor(JOB_TIMEOUT, new Predicate() {
+ public boolean evaluate() throws Exception {
+ return oozieClient.getJobInfo(action.getExternalId()).getStatus() == WorkflowJob.Status.SUCCEEDED;
+ }
+ });
+
+ assertEquals(WorkflowJob.Status.SUCCEEDED, oozieClient.getJobInfo(action.getExternalId()).getStatus());
+ subWorkflow.check(new Context(workflow, action), action);
+ assertEquals(WorkflowAction.Status.DONE, action.getStatus());
+ subWorkflow.end(new Context(workflow, action), action);
+ assertEquals(WorkflowAction.Status.OK, action.getStatus());
+
+ WorkflowAppService wps = Services.get().get(WorkflowAppService.class);
+ WorkflowJob wf = oozieClient.getJobInfo(action.getExternalId());
+ Configuration childConf = new XConfiguration(new StringReader(wf.getConf()));
+ childConf = wps.createProtoActionConf(childConf, "authToken", true);
+ assertEquals(childConf.get(WorkflowAppService.APP_LIB_PATH_LIST), subwfLibJar.toString());
+ }
}
Modified: incubator/oozie/branches/branch-3.3/core/src/test/java/org/apache/oozie/service/TestLiteWorkflowAppService.java
URL: http://svn.apache.org/viewvc/incubator/oozie/branches/branch-3.3/core/src/test/java/org/apache/oozie/service/TestLiteWorkflowAppService.java?rev=1381698&r1=1381697&r2=1381698&view=diff
==============================================================================
--- incubator/oozie/branches/branch-3.3/core/src/test/java/org/apache/oozie/service/TestLiteWorkflowAppService.java (original)
+++ incubator/oozie/branches/branch-3.3/core/src/test/java/org/apache/oozie/service/TestLiteWorkflowAppService.java Thu Sep 6 18:03:09 2012
@@ -450,10 +450,9 @@ public class TestLiteWorkflowAppService
}
}
- public void testCreateprotoConfWithSubWorkflow_Case2_ParentWorkflowWithoutLibs() throws Exception {
- // When parent workflow has an empty (or missing) lib directory,
- // APP_LIB_PATH_LIST should contain libraries from only the subworkflow
- // (child)
+ public void testCreateprotoConfWithSubWorkflow_CheckSubworkflowLibInClasspath() throws Exception {
+ // When subworkflow has non-empty lib directory, APP_LIB_PATH_LIST for
+ // subworkflow should maintain its corresponding libraries in path
Services services = new Services();
try {
services.init();
@@ -472,6 +471,7 @@ public class TestLiteWorkflowAppService
Configuration jobConf = new XConfiguration();
jobConf.set(OozieClient.APP_PATH, "file://" + getTestCaseDir() + File.separator + "workflow.xml");
jobConf.set(OozieClient.USER_NAME, getTestUser());
+ jobConf.set(WorkflowAppService.APP_LIB_PATH_LIST, "parentdependency1.jar");
Configuration protoConf = wps.createProtoActionConf(jobConf, "authToken", true);
assertEquals(getTestUser(), protoConf.get(OozieClient.USER_NAME));
Modified: incubator/oozie/branches/branch-3.3/release-log.txt
URL: http://svn.apache.org/viewvc/incubator/oozie/branches/branch-3.3/release-log.txt?rev=1381698&r1=1381697&r2=1381698&view=diff
==============================================================================
--- incubator/oozie/branches/branch-3.3/release-log.txt (original)
+++ incubator/oozie/branches/branch-3.3/release-log.txt Thu Sep 6 18:03:09 2012
@@ -1,5 +1,6 @@
-- Oozie 3.3.0 release (unreleased)
+OOZIE-981 Subworkflow lib not found in classpath when parent workflow lib overwrites it (mona via virag)
OOZIE-978 Bundle status doesn't transit to KILLED after a coordinator job fails submission (virag)
OOZIE-971 TestRecoveryService failing very often in pre-commit builds (mona via virag)
OOZIE-966 Fix formatting in CLI output when GMT-#### and GMT-##:## formatted timezones are used (rkanter via tucu)