You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@oozie.apache.org by ro...@apache.org on 2014/06/01 05:01:00 UTC

git commit: OOZIE-1812 Bundle status is always in RUNNING if one of the action status is in PREP (puru via rohini)

Repository: oozie
Updated Branches:
  refs/heads/master 74cb3b0bc -> 3637874e9


OOZIE-1812 Bundle status is always in RUNNING if one of the action status is in PREP (puru via rohini)


Project: http://git-wip-us.apache.org/repos/asf/oozie/repo
Commit: http://git-wip-us.apache.org/repos/asf/oozie/commit/3637874e
Tree: http://git-wip-us.apache.org/repos/asf/oozie/tree/3637874e
Diff: http://git-wip-us.apache.org/repos/asf/oozie/diff/3637874e

Branch: refs/heads/master
Commit: 3637874e911b5b15103015285b6ac7b7703ea8cc
Parents: 74cb3b0
Author: Rohini Palaniswamy <ro...@yahoo-inc.com>
Authored: Sat May 31 20:00:27 2014 -0700
Committer: Rohini Palaniswamy <ro...@yahoo-inc.com>
Committed: Sat May 31 20:00:27 2014 -0700

----------------------------------------------------------------------
 .../oozie/service/StatusTransitService.java     | 24 +++++++++-------
 .../oozie/service/TestStatusTransitService.java | 29 ++++++++++++++++++++
 release-log.txt                                 |  1 +
 3 files changed, 44 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/oozie/blob/3637874e/core/src/main/java/org/apache/oozie/service/StatusTransitService.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/oozie/service/StatusTransitService.java b/core/src/main/java/org/apache/oozie/service/StatusTransitService.java
index e140e64..21ac25f 100644
--- a/core/src/main/java/org/apache/oozie/service/StatusTransitService.java
+++ b/core/src/main/java/org/apache/oozie/service/StatusTransitService.java
@@ -426,7 +426,7 @@ public class StatusTransitService implements Service {
             if (bundleActionStatus.containsKey(Job.Status.PREP)) {
                 // If all the bundle actions are PREP then bundle job should be RUNNING.
                 if (bundleActions.size() > bundleActionStatus.get(Job.Status.PREP)) {
-                    bundleStatus[0] = Job.Status.RUNNING;
+                    bundleStatus[0] = getRunningStatus(bundleActionStatus);
                     ret = true;
                 }
             }
@@ -618,21 +618,25 @@ public class StatusTransitService implements Service {
                 List<BundleActionBean> bundleActions, Job.Status[] bundleStatus) {
             boolean ret = false;
             if (bundleStatus[0] != Job.Status.PREP) {
-                if (bundleActionStatus.containsKey(Job.Status.FAILED)
-                        || bundleActionStatus.containsKey(Job.Status.KILLED)
-                        || bundleActionStatus.containsKey(Job.Status.DONEWITHERROR)
-                        || bundleActionStatus.containsKey(Job.Status.RUNNINGWITHERROR)) {
-                    bundleStatus[0] = Job.Status.RUNNINGWITHERROR;
-                }
-                else {
-                    bundleStatus[0] = Job.Status.RUNNING;
-                }
+                bundleStatus[0] = getRunningStatus(bundleActionStatus);
                 ret = true;
             }
             return ret;
 
         }
 
+        private Job.Status getRunningStatus(HashMap<Job.Status, Integer> bundleActionStatus) {
+            if (bundleActionStatus.containsKey(Job.Status.FAILED)
+                    || bundleActionStatus.containsKey(Job.Status.KILLED)
+                    || bundleActionStatus.containsKey(Job.Status.DONEWITHERROR)
+                    || bundleActionStatus.containsKey(Job.Status.RUNNINGWITHERROR)) {
+                return Job.Status.RUNNINGWITHERROR;
+            }
+            else {
+                return Job.Status.RUNNING;
+            }
+        }
+
         private void updateBundleJob(boolean isPending, BundleJobBean bundleJob, Job.Status bundleStatus)
                 throws JPAExecutorException {
             String jobId = bundleJob.getId();

http://git-wip-us.apache.org/repos/asf/oozie/blob/3637874e/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 b767b69..bb99138 100644
--- a/core/src/test/java/org/apache/oozie/service/TestStatusTransitService.java
+++ b/core/src/test/java/org/apache/oozie/service/TestStatusTransitService.java
@@ -1475,4 +1475,33 @@ public class TestStatusTransitService extends XDataTestCase {
         bundleJob = jpaService.execute(new BundleJobGetJPAExecutor(bundleId));
         assertEquals(CoordinatorJob.Status.RUNNING, bundleJob.getStatus());
     }
+
+    // Test bundle transition from running to runningwitherror when one action is killed.
+    public void testBundleStatusTransitRunningWithError() throws Exception {
+        Services.get().destroy();
+        setSystemProperty(StatusTransitService.CONF_BACKWARD_SUPPORT_FOR_STATES_WITHOUT_ERROR, "false");
+        new Services().init();
+
+        BundleJobBean bundleJob = this.addRecordToBundleJobTable(Job.Status.RUNNING, true);
+        final String bundleId = bundleJob.getId();
+        addRecordToBundleActionTable(bundleId, "action1-C", 0, Job.Status.PREP);
+        addRecordToBundleActionTable(bundleId, "action2-C", 0, Job.Status.RUNNING);
+        BundleActionBean action3 = addRecordToBundleActionTable(bundleId, "action3-C", 0, Job.Status.DONEWITHERROR);
+
+        Runnable runnable = new StatusTransitRunnable();
+        runnable.run();
+        bundleJob = BundleJobQueryExecutor.getInstance().get(BundleJobQuery.GET_BUNDLE_JOB_STATUS, bundleId);
+        assertEquals(Job.Status.RUNNINGWITHERROR, bundleJob.getStatus());
+
+        action3.setStatus(Job.Status.SUSPENDED);
+        action3.setPending(1);
+        action3.setLastModifiedTime(new Date());
+        BundleActionQueryExecutor.getInstance().executeUpdate(
+                BundleActionQuery.UPDATE_BUNDLE_ACTION_STATUS_PENDING_MODTIME_COORDID, action3);
+        runnable = new StatusTransitRunnable();
+        runnable.run();
+        bundleJob = BundleJobQueryExecutor.getInstance().get(BundleJobQuery.GET_BUNDLE_JOB_STATUS, bundleId);
+        assertEquals(Job.Status.RUNNING, bundleJob.getStatus());
+
+    }
 }

http://git-wip-us.apache.org/repos/asf/oozie/blob/3637874e/release-log.txt
----------------------------------------------------------------------
diff --git a/release-log.txt b/release-log.txt
index 4e909e3..fbd7bea 100644
--- a/release-log.txt
+++ b/release-log.txt
@@ -1,5 +1,6 @@
 -- Oozie 4.1.0 release (trunk - unreleased)
 
+OOZIE-1812 Bundle status is always in RUNNING if one of the action status is in PREP (puru via rohini)
 OOZIE-1848 Pig actions fail due to missing joda-time jar from pig sharelib (bzhang)
 OOZIE-1319 "LAST_ONLY" in execution control for coordinator job still runs all the actions (rkanter)
 OOZIE-1862 Add hadoop token file location for Hive/Tez jobs (venkatnrangan via bzhang)