Repository: oozie Updated Branches: refs/heads/master 9f150b0b1 -> 2f2b34882
OOZIE-2017 On startup, StatusTransitService can transition Coordinators that were in PREPSUSPENDED to RUNNING (rkanter) Project: http://git-wip-us.apache.org/repos/asf/oozie/repo Commit: http://git-wip-us.apache.org/repos/asf/oozie/commit/2f2b3488 Tree: http://git-wip-us.apache.org/repos/asf/oozie/tree/2f2b3488 Diff: http://git-wip-us.apache.org/repos/asf/oozie/diff/2f2b3488 Branch: refs/heads/master Commit: 2f2b34882f443f8dfff12c7a713964d91667abb3 Parents: 9f150b0 Author: Robert Kanter <[email protected]> Authored: Wed Oct 8 13:22:15 2014 -0700 Committer: Robert Kanter <[email protected]> Committed: Wed Oct 8 13:22:15 2014 -0700 ---------------------------------------------------------------------- .../coord/CoordStatusTransitXCommand.java | 6 ++- .../oozie/service/TestStatusTransitService.java | 48 ++++++++++++++++++++ release-log.txt | 1 + 3 files changed, 54 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/oozie/blob/2f2b3488/core/src/main/java/org/apache/oozie/command/coord/CoordStatusTransitXCommand.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/oozie/command/coord/CoordStatusTransitXCommand.java b/core/src/main/java/org/apache/oozie/command/coord/CoordStatusTransitXCommand.java index 2c5aab8..ffc5c44 100644 --- a/core/src/main/java/org/apache/oozie/command/coord/CoordStatusTransitXCommand.java +++ b/core/src/main/java/org/apache/oozie/command/coord/CoordStatusTransitXCommand.java @@ -170,7 +170,9 @@ public class CoordStatusTransitXCommand extends StatusTransitXCommand { @Override protected boolean isSuspendedState() { - if (coordJob.getStatus() == Job.Status.SUSPENDED || coordJob.getStatus() == Job.Status.SUSPENDEDWITHERROR) { + if (coordJob.getStatus() == Job.Status.SUSPENDED + || coordJob.getStatus() == Job.Status.SUSPENDEDWITHERROR + || coordJob.getStatus() == Job.Status.PREPSUSPENDED) { return true; } else { @@ -182,6 +184,8 @@ public class CoordStatusTransitXCommand extends StatusTransitXCommand { protected Status getSuspendedStatus() { if (coordJob.getStatus() == Job.Status.SUSPENDED || coordJob.getStatus() == Job.Status.SUSPENDEDWITHERROR) { return hasTerminatedActions() ? Job.Status.SUSPENDEDWITHERROR : Job.Status.SUSPENDED; + } else if (coordJob.getStatus() == Job.Status.PREPSUSPENDED) { + return Job.Status.PREPSUSPENDED; } else { return getBottomUpSuspendedState(); http://git-wip-us.apache.org/repos/asf/oozie/blob/2f2b3488/core/src/test/java/org/apache/oozie/service/TestStatusTransitService.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/oozie/service/TestStatusTransitService.java b/core/src/test/java/org/apache/oozie/service/TestStatusTransitService.java index 364d71d..d25a2a4 100644 --- a/core/src/test/java/org/apache/oozie/service/TestStatusTransitService.java +++ b/core/src/test/java/org/apache/oozie/service/TestStatusTransitService.java @@ -438,6 +438,54 @@ public class TestStatusTransitService extends XDataTestCase { assertEquals(Job.Status.SUCCEEDED, coordJob1.getStatus()); } + /** + * If you have a PREP coordinator job (with no actions) and you suspend it, it goes into PREPSUSPENDED. + * The StatusTransitService should not transition it to RUNNING automatically. This test verifies that the job remains in + * PREPSUSPENDED; and transitions back to PREP after a resume command. + * + * @throws Exception + */ + public void testFoo() throws Exception { + final JPAService jpaService = Services.get().get(JPAService.class); + assertNotNull(jpaService); + String currentDatePlusMonth = XDataTestCase.getCurrentDateafterIncrementingInMonths(1); + Date start = DateUtils.parseDateOozieTZ(currentDatePlusMonth); + Date end = DateUtils.parseDateOozieTZ(currentDatePlusMonth); + + CoordinatorJobBean coordJob = addRecordToCoordJobTable(CoordinatorJob.Status.PREP, start, end, true, false, 0); + final String coordJobId = coordJob.getId(); + + new CoordSuspendXCommand(coordJobId).call(); + + CoordJobGetJPAExecutor coordJobGetCmd = new CoordJobGetJPAExecutor(coordJobId); + coordJob = jpaService.execute(coordJobGetCmd); + + assertEquals(Job.Status.PREPSUSPENDED, coordJob.getStatus()); + + new StatusTransitRunnable().run(); + + CoordinatorJobBean coordJob1 = jpaService.execute(new CoordJobGetJPAExecutor(coordJobId)); + assertEquals(Job.Status.PREPSUSPENDED, coordJob1.getStatus()); + + new CoordResumeXCommand(coordJobId).call(); + + coordJob = jpaService.execute(coordJobGetCmd); + + assertEquals(Job.Status.PREP, coordJob.getStatus()); + + new StatusTransitRunnable().run(); + + waitFor(20 * 1000, new Predicate() { + @Override + public boolean evaluate() throws Exception { + CoordinatorJobBean job = jpaService.execute(new CoordJobGetJPAExecutor(coordJobId)); + return job.getStatus().equals(Job.Status.PREP); + } + }); + + coordJob1 = jpaService.execute(new CoordJobGetJPAExecutor(coordJobId)); + assertEquals(Job.Status.PREP, coordJob1.getStatus()); + } /** * Test : all coord actions are running, job pending is reset http://git-wip-us.apache.org/repos/asf/oozie/blob/2f2b3488/release-log.txt ---------------------------------------------------------------------- diff --git a/release-log.txt b/release-log.txt index f4a866d..bcbc9e8 100644 --- a/release-log.txt +++ b/release-log.txt @@ -1,5 +1,6 @@ -- Oozie 4.2.0 release (trunk - unreleased) +OOZIE-2017 On startup, StatusTransitService can transition Coordinators that were in PREPSUSPENDED to RUNNING (rkanter) OOZIE-1940 StatusTransitService has race condition (puru) OOZIE-1696 Document how to get the action conf in the Java action (jrkinley via rkanter) OOZIE-1567 Provide a wait tool in Oozie (rkanter)
