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)

Reply via email to