Author: rohini
Date: Fri Sep 20 20:28:10 2013
New Revision: 1525128
URL: http://svn.apache.org/r1525128
Log:
OOZIE-1468 Add created time column in WF_ACTIONS and SLA tables (rohini)
Modified:
oozie/trunk/core/src/main/java/org/apache/oozie/BundleActionBean.java
oozie/trunk/core/src/main/java/org/apache/oozie/CoordinatorJobBean.java
oozie/trunk/core/src/main/java/org/apache/oozie/WorkflowActionBean.java
oozie/trunk/core/src/main/java/org/apache/oozie/WorkflowJobBean.java
oozie/trunk/core/src/main/java/org/apache/oozie/command/wf/SignalXCommand.java
oozie/trunk/core/src/main/java/org/apache/oozie/executor/jpa/WorkflowsJobGetJPAExecutor.java
oozie/trunk/core/src/main/java/org/apache/oozie/sla/SLACalculatorMemory.java
oozie/trunk/core/src/main/java/org/apache/oozie/sla/SLARegistrationBean.java
oozie/trunk/core/src/main/java/org/apache/oozie/sla/SLASummaryBean.java
oozie/trunk/core/src/test/java/org/apache/oozie/command/wf/TestSignalXCommand.java
oozie/trunk/core/src/test/java/org/apache/oozie/executor/jpa/TestSLASummaryQueryExecutor.java
oozie/trunk/core/src/test/java/org/apache/oozie/sla/TestSLACalculatorMemory.java
oozie/trunk/core/src/test/java/org/apache/oozie/test/XDataTestCase.java
oozie/trunk/release-log.txt
Modified: oozie/trunk/core/src/main/java/org/apache/oozie/BundleActionBean.java
URL:
http://svn.apache.org/viewvc/oozie/trunk/core/src/main/java/org/apache/oozie/BundleActionBean.java?rev=1525128&r1=1525127&r2=1525128&view=diff
==============================================================================
--- oozie/trunk/core/src/main/java/org/apache/oozie/BundleActionBean.java
(original)
+++ oozie/trunk/core/src/main/java/org/apache/oozie/BundleActionBean.java Fri
Sep 20 20:28:10 2013
@@ -36,6 +36,7 @@ import org.apache.oozie.client.Job.Statu
import org.apache.oozie.client.rest.JsonBean;
import org.apache.oozie.util.DateUtils;
import org.apache.oozie.util.WritableUtils;
+import org.apache.openjpa.persistence.jdbc.Index;
import org.json.simple.JSONObject;
@Entity
@@ -84,6 +85,7 @@ public class BundleActionBean implements
@Column(name = "bundle_action_id")
private String bundleActionId = null;
+ @Index
@Column(name = "bundle_id")
private String bundleId = null;
Modified:
oozie/trunk/core/src/main/java/org/apache/oozie/CoordinatorJobBean.java
URL:
http://svn.apache.org/viewvc/oozie/trunk/core/src/main/java/org/apache/oozie/CoordinatorJobBean.java?rev=1525128&r1=1525127&r2=1525128&view=diff
==============================================================================
--- oozie/trunk/core/src/main/java/org/apache/oozie/CoordinatorJobBean.java
(original)
+++ oozie/trunk/core/src/main/java/org/apache/oozie/CoordinatorJobBean.java Fri
Sep 20 20:28:10 2013
@@ -169,6 +169,7 @@ public class CoordinatorJobBean implemen
private String group = null;
@Basic
+ @Index
@Column(name = "bundle_id")
private String bundleId = null;
Modified:
oozie/trunk/core/src/main/java/org/apache/oozie/WorkflowActionBean.java
URL:
http://svn.apache.org/viewvc/oozie/trunk/core/src/main/java/org/apache/oozie/WorkflowActionBean.java?rev=1525128&r1=1525127&r2=1525128&view=diff
==============================================================================
--- oozie/trunk/core/src/main/java/org/apache/oozie/WorkflowActionBean.java
(original)
+++ oozie/trunk/core/src/main/java/org/apache/oozie/WorkflowActionBean.java Fri
Sep 20 20:28:10 2013
@@ -123,21 +123,25 @@ public class WorkflowActionBean implemen
private String wfId = null;
@Basic
+ @Column(name = "created_time")
+ private Timestamp createdTimeTS = null;
+
+ @Basic
@Index
@Column(name = "status")
private String statusStr = WorkflowAction.Status.PREP.toString();
@Basic
@Column(name = "last_check_time")
- private java.sql.Timestamp lastCheckTimestamp;
+ private Timestamp lastCheckTimestamp;
@Basic
@Column(name = "end_time")
- private java.sql.Timestamp endTimestamp = null;
+ private Timestamp endTimestamp = null;
@Basic
@Column(name = "start_time")
- private java.sql.Timestamp startTimestamp = null;
+ private Timestamp startTimestamp = null;
@Basic
@Column(name = "execution_path", length = 1024)
@@ -150,7 +154,7 @@ public class WorkflowActionBean implemen
@Basic
@Index
@Column(name = "pending_age")
- private java.sql.Timestamp pendingAgeTimestamp = null;
+ private Timestamp pendingAgeTimestamp = null;
@Basic
@Column(name = "signal_value")
@@ -870,6 +874,18 @@ public class WorkflowActionBean implemen
this.id = id;
}
+ public Timestamp getCreatedTimestamp() {
+ return createdTimeTS;
+ }
+
+ public Date getCreatedTime() {
+ return DateUtils.toDate(createdTimeTS);
+ }
+
+ public void setCreatedTime(Date createdTime) {
+ this.createdTimeTS = DateUtils.convertDateToTimestamp(createdTime);
+ }
+
@Override
public String getName() {
return name;
Modified: oozie/trunk/core/src/main/java/org/apache/oozie/WorkflowJobBean.java
URL:
http://svn.apache.org/viewvc/oozie/trunk/core/src/main/java/org/apache/oozie/WorkflowJobBean.java?rev=1525128&r1=1525127&r2=1525128&view=diff
==============================================================================
--- oozie/trunk/core/src/main/java/org/apache/oozie/WorkflowJobBean.java
(original)
+++ oozie/trunk/core/src/main/java/org/apache/oozie/WorkflowJobBean.java Fri
Sep 20 20:28:10 2013
@@ -208,6 +208,7 @@ public class WorkflowJobBean implements
private int run = 1;
@Basic
+ @Index
@Column(name = "parent_id")
private String parentId;
Modified:
oozie/trunk/core/src/main/java/org/apache/oozie/command/wf/SignalXCommand.java
URL:
http://svn.apache.org/viewvc/oozie/trunk/core/src/main/java/org/apache/oozie/command/wf/SignalXCommand.java?rev=1525128&r1=1525127&r2=1525128&view=diff
==============================================================================
---
oozie/trunk/core/src/main/java/org/apache/oozie/command/wf/SignalXCommand.java
(original)
+++
oozie/trunk/core/src/main/java/org/apache/oozie/command/wf/SignalXCommand.java
Fri Sep 20 20:28:10 2013
@@ -328,6 +328,7 @@ public class SignalXCommand extends Work
String actionSlaXml = getActionSLAXml(newAction.getName(),
workflowInstance.getApp()
.getDefinition(), wfJob.getConf());
newAction.setSlaXml(actionSlaXml);
+ newAction.setCreatedTime(new Date());
insertList.add(newAction);
LOG.debug("SignalXCommand: Name: " + newAction.getName() +
", Id: " + newAction.getId()
+ ", Authcode:" + newAction.getCred());
Modified:
oozie/trunk/core/src/main/java/org/apache/oozie/executor/jpa/WorkflowsJobGetJPAExecutor.java
URL:
http://svn.apache.org/viewvc/oozie/trunk/core/src/main/java/org/apache/oozie/executor/jpa/WorkflowsJobGetJPAExecutor.java?rev=1525128&r1=1525127&r2=1525128&view=diff
==============================================================================
---
oozie/trunk/core/src/main/java/org/apache/oozie/executor/jpa/WorkflowsJobGetJPAExecutor.java
(original)
+++
oozie/trunk/core/src/main/java/org/apache/oozie/executor/jpa/WorkflowsJobGetJPAExecutor.java
Fri Sep 20 20:28:10 2013
@@ -226,7 +226,7 @@ public class WorkflowsJobGetJPAExecutor
else {
if (orArray.size() > 0) {
StringBuilder sbTotal = new StringBuilder(sb);
- sb.append(" order by w.startTimestamp desc ");
+ sb.append(" order by w.createdTimestamp desc ");
q = em.createQuery(sb.toString());
q.setFirstResult(start - 1);
q.setMaxResults(len);
Modified:
oozie/trunk/core/src/main/java/org/apache/oozie/sla/SLACalculatorMemory.java
URL:
http://svn.apache.org/viewvc/oozie/trunk/core/src/main/java/org/apache/oozie/sla/SLACalculatorMemory.java?rev=1525128&r1=1525127&r2=1525128&view=diff
==============================================================================
---
oozie/trunk/core/src/main/java/org/apache/oozie/sla/SLACalculatorMemory.java
(original)
+++
oozie/trunk/core/src/main/java/org/apache/oozie/sla/SLACalculatorMemory.java
Fri Sep 20 20:28:10 2013
@@ -17,6 +17,7 @@
*/
package org.apache.oozie.sla;
+import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
@@ -57,6 +58,7 @@ import org.apache.oozie.service.JPAServi
import org.apache.oozie.service.ServiceException;
import org.apache.oozie.service.Services;
import org.apache.oozie.sla.service.SLAService;
+import org.apache.oozie.util.DateUtils;
import org.apache.oozie.util.XLog;
@@ -401,8 +403,12 @@ public class SLACalculatorMemory impleme
slaCalc.setJobStatus(getJobStatus(reg.getAppType()));
slaMap.put(jobId, slaCalc);
List<JsonBean> insertList = new ArrayList<JsonBean>();
+ final SLASummaryBean summaryBean = new SLASummaryBean(slaCalc);
+ final Timestamp currentTime =
DateUtils.convertDateToTimestamp(new Date());
+ reg.setCreatedTimestamp(currentTime);
+ summaryBean.setCreatedTimestamp(currentTime);
insertList.add(reg);
- insertList.add(new SLASummaryBean(slaCalc));
+ insertList.add(summaryBean);
BatchQueryExecutor.getInstance().executeBatchInsertUpdateDelete(insertList,
null, null);
LOG.trace("SLA Registration Event - Job:" + jobId);
return true;
Modified:
oozie/trunk/core/src/main/java/org/apache/oozie/sla/SLARegistrationBean.java
URL:
http://svn.apache.org/viewvc/oozie/trunk/core/src/main/java/org/apache/oozie/sla/SLARegistrationBean.java?rev=1525128&r1=1525127&r2=1525128&view=diff
==============================================================================
---
oozie/trunk/core/src/main/java/org/apache/oozie/sla/SLARegistrationBean.java
(original)
+++
oozie/trunk/core/src/main/java/org/apache/oozie/sla/SLARegistrationBean.java
Fri Sep 20 20:28:10 2013
@@ -72,17 +72,21 @@ public class SLARegistrationBean impleme
private String appType = null;
@Basic
+ @Column(name = "created_time")
+ private Timestamp createdTimeTS = null;
+
+ @Basic
@Index
@Column(name = "nominal_time")
- private java.sql.Timestamp nominalTimeTS = null;
+ private Timestamp nominalTimeTS = null;
@Basic
@Column(name = "expected_start")
- private java.sql.Timestamp expectedStartTS = null;
+ private Timestamp expectedStartTS = null;
@Basic
@Column(name = "expected_end")
- private java.sql.Timestamp expectedEndTS = null;
+ private Timestamp expectedEndTS = null;
@Basic
@Column(name = "expected_duration")
@@ -159,6 +163,22 @@ public class SLARegistrationBean impleme
this.appType = appType.toString();
}
+ public Timestamp getCreatedTimestamp() {
+ return createdTimeTS;
+ }
+
+ public void setCreatedTimestamp(Timestamp createdTime) {
+ this.createdTimeTS = createdTime;
+ }
+
+ public Date getCreatedTime() {
+ return DateUtils.toDate(createdTimeTS);
+ }
+
+ public void setCreatedTime(Date createdTime) {
+ this.createdTimeTS = DateUtils.convertDateToTimestamp(createdTime);
+ }
+
public Date getNominalTime() {
return DateUtils.toDate(nominalTimeTS);
}
Modified:
oozie/trunk/core/src/main/java/org/apache/oozie/sla/SLASummaryBean.java
URL:
http://svn.apache.org/viewvc/oozie/trunk/core/src/main/java/org/apache/oozie/sla/SLASummaryBean.java?rev=1525128&r1=1525127&r2=1525128&view=diff
==============================================================================
--- oozie/trunk/core/src/main/java/org/apache/oozie/sla/SLASummaryBean.java
(original)
+++ oozie/trunk/core/src/main/java/org/apache/oozie/sla/SLASummaryBean.java Fri
Sep 20 20:28:10 2013
@@ -82,6 +82,10 @@ public class SLASummaryBean implements J
private String user;
@Basic
+ @Column(name = "created_time")
+ private Timestamp createdTimeTS = null;
+
+ @Basic
@Index
@Column(name = "nominal_time")
private Timestamp nominalTimeTS = null;
@@ -172,6 +176,22 @@ public class SLASummaryBean implements J
this.parentId = parentId;
}
+ public Timestamp getCreatedTimestamp() {
+ return createdTimeTS;
+ }
+
+ public void setCreatedTimestamp(Timestamp createdTime) {
+ this.createdTimeTS = createdTime;
+ }
+
+ public Date getCreatedTime() {
+ return DateUtils.toDate(createdTimeTS);
+ }
+
+ public void setCreatedTime(Date createdTime) {
+ this.createdTimeTS = DateUtils.convertDateToTimestamp(createdTime);
+ }
+
public Date getNominalTime() {
return DateUtils.toDate(nominalTimeTS);
}
Modified:
oozie/trunk/core/src/test/java/org/apache/oozie/command/wf/TestSignalXCommand.java
URL:
http://svn.apache.org/viewvc/oozie/trunk/core/src/test/java/org/apache/oozie/command/wf/TestSignalXCommand.java?rev=1525128&r1=1525127&r2=1525128&view=diff
==============================================================================
---
oozie/trunk/core/src/test/java/org/apache/oozie/command/wf/TestSignalXCommand.java
(original)
+++
oozie/trunk/core/src/test/java/org/apache/oozie/command/wf/TestSignalXCommand.java
Fri Sep 20 20:28:10 2013
@@ -23,6 +23,7 @@ import java.io.OutputStreamWriter;
import java.io.Reader;
import java.io.Writer;
import java.util.Properties;
+
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.log4j.Appender;
@@ -31,6 +32,7 @@ import org.apache.log4j.Logger;
import org.apache.log4j.SimpleLayout;
import org.apache.log4j.WriterAppender;
import org.apache.oozie.DagEngine;
+import org.apache.oozie.WorkflowActionBean;
import org.apache.oozie.client.OozieClient;
import org.apache.oozie.client.WorkflowAction;
import org.apache.oozie.client.WorkflowJob;
@@ -116,11 +118,22 @@ public class TestSignalXCommand extends
WorkflowJob wf = oc.getJobInfo(jobId);
assertEquals(WorkflowJob.Status.PREP, wf.getStatus());
+ long beforeStart = System.currentTimeMillis();
+
oc.start(jobId);
checkSuspendActions(wf, oc, jobId, WorkflowJob.Status.SUSPENDED,
new String[]{"action1"},
new String[]{":start:"});
+ // Check for creation time
+ long afterStart = System.currentTimeMillis();
+ WorkflowJob wf1 = oc.getJobInfo(jobId);
+ for (WorkflowAction action : wf1.getActions()) {
+ WorkflowActionBean bean = (WorkflowActionBean) action;
+ assertNotNull(bean.getCreatedTime());
+ assertTrue((bean.getCreatedTime().getTime() > beforeStart) &&
(bean.getCreatedTime().getTime() < afterStart));
+ }
+
oc.resume(jobId);
checkSuspendActions(wf, oc, jobId, WorkflowJob.Status.SUSPENDED,
new String[]{"decision1"},
Modified:
oozie/trunk/core/src/test/java/org/apache/oozie/executor/jpa/TestSLASummaryQueryExecutor.java
URL:
http://svn.apache.org/viewvc/oozie/trunk/core/src/test/java/org/apache/oozie/executor/jpa/TestSLASummaryQueryExecutor.java?rev=1525128&r1=1525127&r2=1525128&view=diff
==============================================================================
---
oozie/trunk/core/src/test/java/org/apache/oozie/executor/jpa/TestSLASummaryQueryExecutor.java
(original)
+++
oozie/trunk/core/src/test/java/org/apache/oozie/executor/jpa/TestSLASummaryQueryExecutor.java
Fri Sep 20 20:28:10 2013
@@ -21,19 +21,12 @@ import java.util.Date;
import javax.persistence.EntityManager;
import javax.persistence.Query;
-import org.apache.oozie.WorkflowActionBean;
-import org.apache.oozie.WorkflowJobBean;
-import org.apache.oozie.client.WorkflowAction;
-import org.apache.oozie.client.WorkflowJob;
import org.apache.oozie.client.event.SLAEvent.SLAStatus;
import org.apache.oozie.executor.jpa.SLASummaryQueryExecutor.SLASummaryQuery;
-import
org.apache.oozie.executor.jpa.WorkflowActionQueryExecutor.WorkflowActionQuery;
-import org.apache.oozie.executor.jpa.WorkflowJobQueryExecutor.WorkflowJobQuery;
import org.apache.oozie.service.JPAService;
import org.apache.oozie.service.Services;
import org.apache.oozie.sla.SLASummaryBean;
import org.apache.oozie.test.XDataTestCase;
-import org.apache.oozie.workflow.WorkflowInstance;
public class TestSLASummaryQueryExecutor extends XDataTestCase {
Services services;
@@ -98,17 +91,23 @@ public class TestSLASummaryQueryExecutor
public void testExecuteUpdate() throws Exception {
SLASummaryBean bean = addRecordToSLASummaryTable("test-sla-summary",
SLAStatus.IN_PROCESS);
+ SLASummaryBean retBean =
SLASummaryQueryExecutor.getInstance().get(SLASummaryQuery.GET_SLA_SUMMARY,
+ bean.getId());
+ Date createdTime = retBean.getCreatedTime();
+ assertNotNull(createdTime);
Date startTime = new Date(System.currentTimeMillis() - 1000 * 3600 *
2);
Date endTime = new Date(System.currentTimeMillis() - 1000 * 3600 * 1);
bean.setActualStart(startTime);
bean.setActualEnd(endTime);
bean.setSLAStatus(SLAStatus.MET);
+ bean.setCreatedTime(startTime); // Should not be updated
SLASummaryQueryExecutor.getInstance().executeUpdate(SLASummaryQuery.UPDATE_SLA_SUMMARY_ALL,
bean);
- SLASummaryBean retBean =
SLASummaryQueryExecutor.getInstance().get(SLASummaryQuery.GET_SLA_SUMMARY,
+ retBean =
SLASummaryQueryExecutor.getInstance().get(SLASummaryQuery.GET_SLA_SUMMARY,
bean.getId());
assertEquals(bean.getActualStartTimestamp(),
retBean.getActualStartTimestamp());
assertEquals(bean.getActualEndTimestamp(),
retBean.getActualEndTimestamp());
assertEquals(SLAStatus.MET, retBean.getSLAStatus());
+ assertEquals(createdTime, retBean.getCreatedTime()); // Created time
should not be updated
}
public void testGet() throws Exception {
Modified:
oozie/trunk/core/src/test/java/org/apache/oozie/sla/TestSLACalculatorMemory.java
URL:
http://svn.apache.org/viewvc/oozie/trunk/core/src/test/java/org/apache/oozie/sla/TestSLACalculatorMemory.java?rev=1525128&r1=1525127&r2=1525128&view=diff
==============================================================================
---
oozie/trunk/core/src/test/java/org/apache/oozie/sla/TestSLACalculatorMemory.java
(original)
+++
oozie/trunk/core/src/test/java/org/apache/oozie/sla/TestSLACalculatorMemory.java
Fri Sep 20 20:28:10 2013
@@ -33,7 +33,6 @@ import org.apache.oozie.client.Coordinat
import org.apache.oozie.client.event.SLAEvent;
import org.apache.oozie.client.event.JobEvent.EventStatus;
import org.apache.oozie.client.event.SLAEvent.SLAStatus;
-import org.apache.oozie.client.rest.JsonBean;
import org.apache.oozie.executor.jpa.BatchQueryExecutor.UpdateEntry;
import org.apache.oozie.executor.jpa.CoordActionInsertJPAExecutor;
import org.apache.oozie.executor.jpa.SLASummaryQueryExecutor.SLASummaryQuery;
@@ -42,6 +41,7 @@ import org.apache.oozie.executor.jpa.SLA
import org.apache.oozie.executor.jpa.WorkflowActionInsertJPAExecutor;
import org.apache.oozie.executor.jpa.WorkflowJobQueryExecutor;
import org.apache.oozie.executor.jpa.WorkflowJobQueryExecutor.WorkflowJobQuery;
+import org.apache.oozie.executor.jpa.sla.SLARegistrationGetJPAExecutor;
import org.apache.oozie.executor.jpa.sla.SLASummaryGetJPAExecutor;
import org.apache.oozie.service.EventHandlerService;
import org.apache.oozie.service.JPAService;
@@ -520,6 +520,9 @@ public class TestSLACalculatorMemory ext
slaCalcMemory.addRegistration(slaRegBean.getId(), slaRegBean);
slaCalcMemory.updateJobSla(jobId);
SLASummaryBean slaSummary = jpaService.execute(new
SLASummaryGetJPAExecutor(jobId));
+ slaRegBean = jpaService.execute(new
SLARegistrationGetJPAExecutor(jobId));
+ assertNotNull(slaRegBean.getCreatedTimestamp());
+ assertEquals(slaRegBean.getCreatedTimestamp(),
slaSummary.getCreatedTimestamp());
// Only end sla should be processed (100)
assertEquals(4, slaSummary.getEventProcessed());
slaCalcMemory.updateJobSla(jobId);
Modified:
oozie/trunk/core/src/test/java/org/apache/oozie/test/XDataTestCase.java
URL:
http://svn.apache.org/viewvc/oozie/trunk/core/src/test/java/org/apache/oozie/test/XDataTestCase.java?rev=1525128&r1=1525127&r2=1525128&view=diff
==============================================================================
--- oozie/trunk/core/src/test/java/org/apache/oozie/test/XDataTestCase.java
(original)
+++ oozie/trunk/core/src/test/java/org/apache/oozie/test/XDataTestCase.java Fri
Sep 20 20:28:10 2013
@@ -792,6 +792,7 @@ public abstract class XDataTestCase exte
sla.setId(Services.get().get(UUIDService.class).generateId(ApplicationType.COORDINATOR));
sla.setAppName(appName);
sla.setAppType(AppType.COORDINATOR_JOB);
+ sla.setCreatedTime(today);
sla.setNominalTime(today);
sla.setExpectedStart(today);
sla.setExpectedEnd(today);
@@ -835,6 +836,7 @@ public abstract class XDataTestCase exte
sla.setExpectedEnd(today);
sla.setExpectedStart(today);
sla.setJobData("test-job-data");
+ sla.setCreatedTime(today);
sla.setNominalTime(today);
sla.setNotificationMsg("test-sla-notification-msg");
sla.setParentId(Services.get().get(UUIDService.class).generateId(ApplicationType.BUNDLE));
@@ -1193,9 +1195,11 @@ public abstract class XDataTestCase exte
action.setType("map-reduce");
action.setTransition("transition");
action.setStatus(status);
- action.setStartTime(new Date());
- action.setEndTime(new Date());
- action.setLastCheckTime(new Date());
+ final Date currDate = new Date();
+ action.setCreatedTime(currDate);
+ action.setStartTime(currDate);
+ action.setEndTime(currDate);
+ action.setLastCheckTime(currDate);
action.setCred("null");
action.setStats("dummyStats");
if (pending) {
Modified: oozie/trunk/release-log.txt
URL:
http://svn.apache.org/viewvc/oozie/trunk/release-log.txt?rev=1525128&r1=1525127&r2=1525128&view=diff
==============================================================================
--- oozie/trunk/release-log.txt (original)
+++ oozie/trunk/release-log.txt Fri Sep 20 20:28:10 2013
@@ -1,5 +1,6 @@
-- Oozie 4.1.0 release (trunk - unreleased)
+OOZIE-1468 Add created time column in WF_ACTIONS and SLA tables (rohini)
OOZIE-1524 Change Workflow SELECT query to fetch only necessary columns and
consolidate JPA Executors (ryota)
OOZIE-1515 Passing superset of action id range should be allowed (mona)
OOZIE-1530 Fork-join mismatch makes workflow Failed but some actions stay
Running (mona)