Repository: oozie Updated Branches: refs/heads/master 9491db0b8 -> 5fe2d4dfc
OOZIE-1401 amend PurgeCommand should purge the workflow jobs w/o end_time (andras.piros, asasvari) Project: http://git-wip-us.apache.org/repos/asf/oozie/repo Commit: http://git-wip-us.apache.org/repos/asf/oozie/commit/5fe2d4df Tree: http://git-wip-us.apache.org/repos/asf/oozie/tree/5fe2d4df Diff: http://git-wip-us.apache.org/repos/asf/oozie/diff/5fe2d4df Branch: refs/heads/master Commit: 5fe2d4dfce1f66f4678198b8ae1d6ef2bcf10d4e Parents: 9491db0 Author: Attila Sasvari <asasv...@cloudera.com> Authored: Wed Jan 17 09:24:19 2018 +0100 Committer: Attila Sasvari <asasv...@cloudera.com> Committed: Wed Jan 17 09:24:19 2018 +0100 ---------------------------------------------------------------------- .../java/org/apache/oozie/WorkflowJobBean.java | 4 +- ...bsBasicInfoFromCoordParentIdJPAExecutor.java | 35 +--- .../jpa/WorkflowJobsBasicInfoFromParentId.java | 73 +++++++ ...asicInfoFromWorkflowParentIdJPAExecutor.java | 37 +--- .../apache/oozie/command/TestPurgeXCommand.java | 208 ++++++++++++++++--- release-log.txt | 1 + 6 files changed, 261 insertions(+), 97 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/oozie/blob/5fe2d4df/core/src/main/java/org/apache/oozie/WorkflowJobBean.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/oozie/WorkflowJobBean.java b/core/src/main/java/org/apache/oozie/WorkflowJobBean.java index 028164d..cd9a6df 100644 --- a/core/src/main/java/org/apache/oozie/WorkflowJobBean.java +++ b/core/src/main/java/org/apache/oozie/WorkflowJobBean.java @@ -119,9 +119,9 @@ import java.util.List; @NamedQuery(name = "GET_WORKFLOWS_WITH_COORD_PARENT_ID", query = "select w.id from WorkflowJobBean w where w.parentId like :parentId"), // when setting parentId parameter, make sure to append a '%' (percent symbol) at the end (e.g. 0000004-130709155224435-oozie-rkan-C%") - @NamedQuery(name = "GET_WORKFLOWS_BASIC_INFO_BY_PARENT_ID", query = "select w.id, w.statusStr, w.endTimestamp from WorkflowJobBean w where w.parentId = :parentId"), + @NamedQuery(name = "GET_WORKFLOWS_BASIC_INFO_BY_PARENT_ID", query = "select w.id, w.statusStr, w.endTimestamp, w.lastModifiedTimestamp from WorkflowJobBean w where w.parentId = :parentId"), - @NamedQuery(name = "GET_WORKFLOWS_BASIC_INFO_BY_COORD_PARENT_ID", query = "select w.id, w.statusStr, w.endTimestamp from WorkflowJobBean w where w.parentId like :parentId"), + @NamedQuery(name = "GET_WORKFLOWS_BASIC_INFO_BY_COORD_PARENT_ID", query = "select w.id, w.statusStr, w.endTimestamp, w.lastModifiedTimestamp from WorkflowJobBean w where w.parentId like :parentId"), @NamedQuery(name = "GET_WORKFLOW_FOR_USER", query = "select w.user from WorkflowJobBean w where w.id = :id"), http://git-wip-us.apache.org/repos/asf/oozie/blob/5fe2d4df/core/src/main/java/org/apache/oozie/executor/jpa/WorkflowJobsBasicInfoFromCoordParentIdJPAExecutor.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/oozie/executor/jpa/WorkflowJobsBasicInfoFromCoordParentIdJPAExecutor.java b/core/src/main/java/org/apache/oozie/executor/jpa/WorkflowJobsBasicInfoFromCoordParentIdJPAExecutor.java index 2e1ab5f..f2c2c02 100644 --- a/core/src/main/java/org/apache/oozie/executor/jpa/WorkflowJobsBasicInfoFromCoordParentIdJPAExecutor.java +++ b/core/src/main/java/org/apache/oozie/executor/jpa/WorkflowJobsBasicInfoFromCoordParentIdJPAExecutor.java @@ -20,28 +20,20 @@ package org.apache.oozie.executor.jpa; import org.apache.oozie.ErrorCode; import org.apache.oozie.WorkflowJobBean; -import org.apache.oozie.client.WorkflowJob; -import org.apache.oozie.util.DateUtils; import javax.persistence.EntityManager; import javax.persistence.Query; -import java.sql.Timestamp; -import java.util.ArrayList; import java.util.List; -public class WorkflowJobsBasicInfoFromCoordParentIdJPAExecutor implements JPAExecutor<List<WorkflowJobBean>> { - private String parentId; - private int limit; - private int offset; - +public class WorkflowJobsBasicInfoFromCoordParentIdJPAExecutor extends WorkflowJobsBasicInfoFromParentId + implements JPAExecutor<List<WorkflowJobBean>> +{ public WorkflowJobsBasicInfoFromCoordParentIdJPAExecutor(String parentId, int limit) { this(parentId, 0, limit); } public WorkflowJobsBasicInfoFromCoordParentIdJPAExecutor(String parentId, int offset, int limit) { - this.parentId = parentId; - this.offset = offset; - this.limit = limit; + super(parentId, offset, limit); } @Override @@ -63,23 +55,4 @@ public class WorkflowJobsBasicInfoFromCoordParentIdJPAExecutor implements JPAEx throw new JPAExecutorException(ErrorCode.E0603, e.getMessage(), e); } } - - private List<WorkflowJobBean> getBeanFromArray(List resultList) { - List<WorkflowJobBean> wfActionBeanList = new ArrayList<WorkflowJobBean>(); - for (Object element : resultList) { - WorkflowJobBean wfBean = new WorkflowJobBean(); - Object[] arr = (Object[])element; - if(arr[0] != null) { - wfBean.setId((String) arr[0]); - } - if(arr[1] != null) { - wfBean.setStatus(WorkflowJob.Status.valueOf((String) arr[1])); - } - if(arr[2] != null) { - wfBean.setEndTime(DateUtils.toDate((Timestamp) arr[2])); - } - wfActionBeanList.add(wfBean); - } - return wfActionBeanList; - } } http://git-wip-us.apache.org/repos/asf/oozie/blob/5fe2d4df/core/src/main/java/org/apache/oozie/executor/jpa/WorkflowJobsBasicInfoFromParentId.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/oozie/executor/jpa/WorkflowJobsBasicInfoFromParentId.java b/core/src/main/java/org/apache/oozie/executor/jpa/WorkflowJobsBasicInfoFromParentId.java new file mode 100644 index 0000000..4b8adfb --- /dev/null +++ b/core/src/main/java/org/apache/oozie/executor/jpa/WorkflowJobsBasicInfoFromParentId.java @@ -0,0 +1,73 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.oozie.executor.jpa; + +import org.apache.oozie.WorkflowJobBean; +import org.apache.oozie.client.WorkflowJob; +import org.apache.oozie.util.DateUtils; + +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +public class WorkflowJobsBasicInfoFromParentId { + protected final String parentId; + protected final int limit; + protected final int offset; + + WorkflowJobsBasicInfoFromParentId(final String parentId, final int offset, final int limit) { + this.parentId = parentId; + this.offset = offset; + this.limit = limit; + } + + List<WorkflowJobBean> getBeanFromArray(final List resultList) { + final List<WorkflowJobBean> wfActionBeanList = new ArrayList<>(); + + for (final Object element : resultList) { + final WorkflowJobBean wfBean = new WorkflowJobBean(); + final Object[] arr = (Object[])element; + + final String id = (String) arr[0]; + if (id != null) { + wfBean.setId(id); + } + + final String status = (String) arr[1]; + if (status != null) { + wfBean.setStatus(WorkflowJob.Status.valueOf(status)); + } + + final Timestamp endTime = (Timestamp) arr[2]; + if (endTime != null) { + wfBean.setEndTime(DateUtils.toDate(endTime)); + } + + final Timestamp lastModifiedTime = (Timestamp) arr[3]; + if (lastModifiedTime != null) { + final Date d = DateUtils.toDate(lastModifiedTime); + wfBean.setLastModifiedTime(d); + } + wfActionBeanList.add(wfBean); + } + + return wfActionBeanList; + } +} http://git-wip-us.apache.org/repos/asf/oozie/blob/5fe2d4df/core/src/main/java/org/apache/oozie/executor/jpa/WorkflowJobsBasicInfoFromWorkflowParentIdJPAExecutor.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/oozie/executor/jpa/WorkflowJobsBasicInfoFromWorkflowParentIdJPAExecutor.java b/core/src/main/java/org/apache/oozie/executor/jpa/WorkflowJobsBasicInfoFromWorkflowParentIdJPAExecutor.java index 8205334..f582647 100644 --- a/core/src/main/java/org/apache/oozie/executor/jpa/WorkflowJobsBasicInfoFromWorkflowParentIdJPAExecutor.java +++ b/core/src/main/java/org/apache/oozie/executor/jpa/WorkflowJobsBasicInfoFromWorkflowParentIdJPAExecutor.java @@ -20,29 +20,20 @@ package org.apache.oozie.executor.jpa; import org.apache.oozie.ErrorCode; import org.apache.oozie.WorkflowJobBean; -import org.apache.oozie.client.WorkflowJob; -import org.apache.oozie.util.DateUtils; import javax.persistence.EntityManager; import javax.persistence.Query; -import java.sql.Timestamp; -import java.util.ArrayList; import java.util.List; -public class WorkflowJobsBasicInfoFromWorkflowParentIdJPAExecutor implements JPAExecutor<List<WorkflowJobBean>> { - - private String parentId; - private int limit; - private int offset; - +public class WorkflowJobsBasicInfoFromWorkflowParentIdJPAExecutor extends WorkflowJobsBasicInfoFromParentId + implements JPAExecutor<List<WorkflowJobBean>> +{ public WorkflowJobsBasicInfoFromWorkflowParentIdJPAExecutor(String parentId, int limit) { this(parentId, 0, limit); } public WorkflowJobsBasicInfoFromWorkflowParentIdJPAExecutor(String parentId, int offset, int limit) { - this.parentId = parentId; - this.offset = offset; - this.limit = limit; + super(parentId, offset, limit); } @Override @@ -64,24 +55,4 @@ public class WorkflowJobsBasicInfoFromWorkflowParentIdJPAExecutor implements JPA throw new JPAExecutorException(ErrorCode.E0603, e.getMessage(), e); } } - - private List<WorkflowJobBean> getBeanFromArray(List resultList) { - List<WorkflowJobBean> wfActionBeanList = new ArrayList<WorkflowJobBean>(); - for (Object element : resultList) { - WorkflowJobBean wfBean = new WorkflowJobBean(); - Object[] arr = (Object[])element; - if(arr[0] != null) { - wfBean.setId((String) arr[0]); - } - if(arr[1] != null) { - wfBean.setStatus(WorkflowJob.Status.valueOf((String) arr[1])); - } - if(arr[2] != null) { - wfBean.setEndTime(DateUtils.toDate((Timestamp) arr[2])); - } - wfActionBeanList.add(wfBean); - } - - return wfActionBeanList; - } } http://git-wip-us.apache.org/repos/asf/oozie/blob/5fe2d4df/core/src/test/java/org/apache/oozie/command/TestPurgeXCommand.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/oozie/command/TestPurgeXCommand.java b/core/src/test/java/org/apache/oozie/command/TestPurgeXCommand.java index af9591b..d11fcff 100644 --- a/core/src/test/java/org/apache/oozie/command/TestPurgeXCommand.java +++ b/core/src/test/java/org/apache/oozie/command/TestPurgeXCommand.java @@ -42,12 +42,13 @@ import org.apache.oozie.executor.jpa.CoordActionGetJPAExecutor; import org.apache.oozie.executor.jpa.CoordJobGetJPAExecutor; import org.apache.oozie.executor.jpa.CoordJobInsertJPAExecutor; import org.apache.oozie.executor.jpa.CoordJobQueryExecutor; -import org.apache.oozie.executor.jpa.WorkflowJobQueryExecutor; import org.apache.oozie.executor.jpa.CoordJobQueryExecutor.CoordJobQuery; import org.apache.oozie.executor.jpa.JPAExecutorException; +import org.apache.oozie.executor.jpa.QueryExecutor; import org.apache.oozie.executor.jpa.WorkflowActionGetJPAExecutor; import org.apache.oozie.executor.jpa.WorkflowJobGetJPAExecutor; import org.apache.oozie.executor.jpa.WorkflowJobInsertJPAExecutor; +import org.apache.oozie.executor.jpa.WorkflowJobQueryExecutor; import org.apache.oozie.executor.jpa.WorkflowJobQueryExecutor.WorkflowJobQuery; import org.apache.oozie.service.JPAService; import org.apache.oozie.service.LiteWorkflowStoreService; @@ -174,30 +175,6 @@ public class TestPurgeXCommand extends XDataTestCase { } /** - * Test : purge failed wf job with null end_time successfully - * - * @throws Exception - */ - public void testFailedJobNullEndTimePurgeXCommand() throws Exception { - final WorkflowJobBean job = this.addRecordToWfJobTable(WorkflowJob.Status.FAILED, WorkflowInstance.Status.FAILED); - final Date endTime = job.getEndTime(); - job.setLastModifiedTime(endTime); - job.setEndTime(null); - - final JPAService jpaService = Services.get().get(JPAService.class); - final WorkflowJobGetJPAExecutor wfJobGetCmd = new WorkflowJobGetJPAExecutor(job.getId()); - - new PurgeXCommand(7, 1, 1, 10).call(); - - try { - jpaService.execute(wfJobGetCmd); - fail("Workflow Job should have been purged"); - } catch (JPAExecutorException je) { - assertEquals(ErrorCode.E0604, je.getErrorCode()); - } - } - - /** * Test : purge killed wf job and action successfully * * @throws Exception @@ -2882,6 +2859,66 @@ public class TestPurgeXCommand extends XDataTestCase { } /** + * Test : The subworkflow should get purged, and the workflow parent should get purged --> both will get purged + * Subworkflow has terminated, last modified time is known, but end time is null + * + * @throws Exception + */ + public void testPurgeWFWithEndedSubWFWithNullEndTimeValidLastModifiedTime() throws Exception { + final JPAService jpaService = Services.get().get(JPAService.class); + assertNotNull(jpaService); + + WorkflowJobBean wfJob = addRecordToWfJobTable(WorkflowJob.Status.SUCCEEDED, WorkflowInstance.Status.SUCCEEDED); + WorkflowActionBean wfAction1 = addRecordToWfActionTable(wfJob.getId(), "1", WorkflowAction.Status.OK); + + WorkflowJobBean subwfJob1 = addRecordToWfJobTable(WorkflowJob.Status.SUCCEEDED, WorkflowInstance.Status.SUCCEEDED, + wfJob.getId()); + subwfJob1.setEndTime(null); + WorkflowActionBean subwfAction1 = addRecordToWfActionTable(subwfJob1.getId(), "1", WorkflowAction.Status.OK); + + final WorkflowJobGetJPAExecutor wfJobGetCmd = new WorkflowJobGetJPAExecutor(wfJob.getId()); + final WorkflowActionGetJPAExecutor wfAction1GetCmd = new WorkflowActionGetJPAExecutor(wfAction1.getId()); + final WorkflowJobGetJPAExecutor subwfJob1GetCmd = new WorkflowJobGetJPAExecutor(subwfJob1.getId()); + final WorkflowActionGetJPAExecutor subwfAction1GetCmd = new WorkflowActionGetJPAExecutor(subwfAction1.getId()); + + wfJob = jpaService.execute(wfJobGetCmd); + wfAction1 = jpaService.execute(wfAction1GetCmd); + subwfJob1 = jpaService.execute(subwfJob1GetCmd); + subwfAction1 = jpaService.execute(subwfAction1GetCmd); + + assertEquals(WorkflowJob.Status.SUCCEEDED, wfJob.getStatus()); + assertEquals(WorkflowAction.Status.OK, wfAction1.getStatus()); + assertEquals(WorkflowJob.Status.SUCCEEDED, subwfJob1.getStatus()); + assertEquals(WorkflowAction.Status.OK, subwfAction1.getStatus()); + + final QueryExecutor<WorkflowJobBean, WorkflowJobQueryExecutor.WorkflowJobQuery> workflowJobQueryExecutor = + WorkflowJobQueryExecutor.getInstance(); + workflowJobQueryExecutor.executeUpdate(WorkflowJobQuery.UPDATE_WORKFLOW, subwfJob1); + + final int wfOlderThanDays = 7; + final int coordOlderThanDays = 1; + final int bundleOlderThanDays = 1; + final int limit = 3; + new PurgeXCommand(wfOlderThanDays, coordOlderThanDays, bundleOlderThanDays, limit).call(); + + try { + jpaService.execute(wfJobGetCmd); + fail("Workflow Job should have been purged"); + } + catch (JPAExecutorException je) { + assertEquals(ErrorCode.E0604, je.getErrorCode()); + } + + try { + jpaService.execute(subwfJob1GetCmd); + fail("SubWorkflow Job 1 should have been purged"); + } + catch (JPAExecutorException je) { + assertEquals(ErrorCode.E0604, je.getErrorCode()); + } + } + + /** * Test : The subworkflow and workflow should get purged, but the coordinator parent shouldn't get purged --> none will get * purged * @@ -3068,12 +3105,12 @@ public class TestPurgeXCommand extends XDataTestCase { CoordinatorActionBean coordAction = addRecordToCoordActionTable(coordJob.getId(), 1, CoordinatorAction.Status.SUCCEEDED, "coord-action-get.xml", wfJob.getId(), "SUCCEEDED", 0); - WorkflowJobGetJPAExecutor wfJobGetCmd = new WorkflowJobGetJPAExecutor(wfJob.getId()); - WorkflowActionGetJPAExecutor wfActionGetCmd = new WorkflowActionGetJPAExecutor(wfAction.getId()); - WorkflowJobGetJPAExecutor subwfJobGetCmd = new WorkflowJobGetJPAExecutor(subwfJob.getId()); - WorkflowActionGetJPAExecutor subwfActionGetCmd = new WorkflowActionGetJPAExecutor(subwfAction.getId()); - CoordJobGetJPAExecutor coordJobGetCmd = new CoordJobGetJPAExecutor(coordJob.getId()); - CoordActionGetJPAExecutor coordActionGetCmd = new CoordActionGetJPAExecutor(coordAction.getId()); + final WorkflowJobGetJPAExecutor wfJobGetCmd = new WorkflowJobGetJPAExecutor(wfJob.getId()); + final WorkflowActionGetJPAExecutor wfActionGetCmd = new WorkflowActionGetJPAExecutor(wfAction.getId()); + final WorkflowJobGetJPAExecutor subwfJobGetCmd = new WorkflowJobGetJPAExecutor(subwfJob.getId()); + final WorkflowActionGetJPAExecutor subwfActionGetCmd = new WorkflowActionGetJPAExecutor(subwfAction.getId()); + final CoordJobGetJPAExecutor coordJobGetCmd = new CoordJobGetJPAExecutor(coordJob.getId()); + final CoordActionGetJPAExecutor coordActionGetCmd = new CoordActionGetJPAExecutor(coordAction.getId()); wfJob = jpaService.execute(wfJobGetCmd); wfAction = jpaService.execute(wfActionGetCmd); @@ -3139,6 +3176,115 @@ public class TestPurgeXCommand extends XDataTestCase { } } + + /** + * Test : The subworkflow and workflow should get purged, and the coordinator parent should get purged --> all will get + * purged + * + * Coordinator parent finished Workflow and its subworkflow have terminated, last modified time is known, but end time is null + * for workflow and subworkflow + * + * @throws Exception + */ + public void testPurgeCoordWithWFChildWithSubWFNullEndTimeValidLastModifiedTime() throws Exception { + final JPAService jpaService = Services.get().get(JPAService.class); + assertNotNull(jpaService); + + CoordinatorJobBean coordJob = addRecordToCoordJobTable(CoordinatorJob.Status.SUCCEEDED, false, false); + + final QueryExecutor<WorkflowJobBean, WorkflowJobQueryExecutor.WorkflowJobQuery> workflowJobQueryExecutor = + WorkflowJobQueryExecutor.getInstance(); + WorkflowJobBean wfJob = addRecordToWfJobTable(WorkflowJob.Status.SUCCEEDED, WorkflowInstance.Status.SUCCEEDED); + wfJob.setLastModifiedTime(wfJob.getEndTime()); + wfJob.setEndTime(null); + workflowJobQueryExecutor.executeUpdate(WorkflowJobQuery.UPDATE_WORKFLOW, wfJob); + + WorkflowActionBean wfAction = addRecordToWfActionTable(wfJob.getId(), "1", WorkflowAction.Status.OK); + WorkflowJobBean subwfJob = addRecordToWfJobTable(WorkflowJob.Status.SUCCEEDED, WorkflowInstance.Status.SUCCEEDED, + wfJob.getId()); + subwfJob.setLastModifiedTime(subwfJob.getEndTime()); + subwfJob.setEndTime(null); + workflowJobQueryExecutor.executeUpdate(WorkflowJobQuery.UPDATE_WORKFLOW, subwfJob); + + WorkflowActionBean subwfAction = addRecordToWfActionTable(subwfJob.getId(), "1", WorkflowAction.Status.OK); + CoordinatorActionBean coordAction = addRecordToCoordActionTable(coordJob.getId(), 1, CoordinatorAction.Status.SUCCEEDED, + "coord-action-get.xml", wfJob.getId(), "SUCCEEDED", 0); + + final WorkflowJobGetJPAExecutor wfJobGetCmd = new WorkflowJobGetJPAExecutor(wfJob.getId()); + final WorkflowActionGetJPAExecutor wfActionGetCmd = new WorkflowActionGetJPAExecutor(wfAction.getId()); + final WorkflowJobGetJPAExecutor subwfJobGetCmd = new WorkflowJobGetJPAExecutor(subwfJob.getId()); + final WorkflowActionGetJPAExecutor subwfActionGetCmd = new WorkflowActionGetJPAExecutor(subwfAction.getId()); + final CoordJobGetJPAExecutor coordJobGetCmd = new CoordJobGetJPAExecutor(coordJob.getId()); + final CoordActionGetJPAExecutor coordActionGetCmd = new CoordActionGetJPAExecutor(coordAction.getId()); + + wfJob = jpaService.execute(wfJobGetCmd); + wfAction = jpaService.execute(wfActionGetCmd); + subwfJob = jpaService.execute(subwfJobGetCmd); + subwfAction = jpaService.execute(subwfActionGetCmd); + coordJob = jpaService.execute(coordJobGetCmd); + coordAction = jpaService.execute(coordActionGetCmd); + assertEquals(WorkflowJob.Status.SUCCEEDED, wfJob.getStatus()); + assertEquals(WorkflowAction.Status.OK, wfAction.getStatus()); + assertEquals(WorkflowJob.Status.SUCCEEDED, subwfJob.getStatus()); + assertEquals(WorkflowAction.Status.OK, subwfAction.getStatus()); + assertEquals(CoordinatorJob.Status.SUCCEEDED, coordJob.getStatus()); + assertEquals(CoordinatorAction.Status.SUCCEEDED, coordAction.getStatus()); + + final int wfOlderThanDays = 7; + final int coordOlderThanDays = 7; + final int bundleOlderThanDays = 1; + final int limit = 10; + new PurgeXCommand(wfOlderThanDays, coordOlderThanDays, bundleOlderThanDays, limit).call(); + + try { + jpaService.execute(coordJobGetCmd); + fail("Coordinator Job should have been purged"); + } + catch (JPAExecutorException je) { + assertEquals(ErrorCode.E0604, je.getErrorCode()); + } + + try { + jpaService.execute(coordActionGetCmd); + fail("Coordinator Action should have been purged"); + } + catch (JPAExecutorException je) { + assertEquals(ErrorCode.E0605, je.getErrorCode()); + } + + try { + jpaService.execute(wfJobGetCmd); + fail("Workflow Job should have been purged"); + } + catch (JPAExecutorException je) { + assertEquals(ErrorCode.E0604, je.getErrorCode()); + } + + try { + jpaService.execute(wfActionGetCmd); + fail("Workflow Action should have been purged"); + } + catch (JPAExecutorException je) { + assertEquals(ErrorCode.E0605, je.getErrorCode()); + } + + try { + jpaService.execute(subwfJobGetCmd); + fail("SubWorkflow Job should have been purged"); + } + catch (JPAExecutorException je) { + assertEquals(ErrorCode.E0604, je.getErrorCode()); + } + + try { + jpaService.execute(subwfActionGetCmd); + fail("SubWorkflow Action should have been purged"); + } + catch (JPAExecutorException je) { + assertEquals(ErrorCode.E0605, je.getErrorCode()); + } + } + /** * Test : The subworkflow, workflow, and coordinator should get purged, but the bundle parent shouldn't get purged --> none will * get purged http://git-wip-us.apache.org/repos/asf/oozie/blob/5fe2d4df/release-log.txt ---------------------------------------------------------------------- diff --git a/release-log.txt b/release-log.txt index e563aaa..5feb3ce 100644 --- a/release-log.txt +++ b/release-log.txt @@ -1,5 +1,6 @@ -- Oozie 5.0.0 release (trunk - unreleased) +OOZIE-1401 amend PurgeCommand should purge the workflow jobs w/o end_time (andras.piros, asasvari) OOZIE-3085 Improve logging in ActionExecutors: add log entry for start(), end() and kill() (kmarton via andras.piros) OOZIE-3083 Make improved version Info backward compatible (gezapeti via asasvari) OOZIE-2150 Shell launcher should print shell script (jtolar via andras.piros)