Author: rkanter
Date: Fri Oct 18 16:49:44 2013
New Revision: 1533552

URL: http://svn.apache.org/r1533552
Log:
OOZIE-1577 Oozie coordinator job with identical start and end time remains 
RUNNING forever (bowenzhangusa via rkanter)

Modified:
    
oozie/trunk/core/src/main/java/org/apache/oozie/command/coord/CoordSubmitXCommand.java
    
oozie/trunk/core/src/test/java/org/apache/oozie/command/coord/TestCoordSubmitXCommand.java
    oozie/trunk/docs/src/site/twiki/CoordinatorFunctionalSpec.twiki
    oozie/trunk/release-log.txt

Modified: 
oozie/trunk/core/src/main/java/org/apache/oozie/command/coord/CoordSubmitXCommand.java
URL: 
http://svn.apache.org/viewvc/oozie/trunk/core/src/main/java/org/apache/oozie/command/coord/CoordSubmitXCommand.java?rev=1533552&r1=1533551&r2=1533552&view=diff
==============================================================================
--- 
oozie/trunk/core/src/main/java/org/apache/oozie/command/coord/CoordSubmitXCommand.java
 (original)
+++ 
oozie/trunk/core/src/main/java/org/apache/oozie/command/coord/CoordSubmitXCommand.java
 Fri Oct 18 16:49:44 2013
@@ -308,8 +308,8 @@ public class CoordSubmitXCommand extends
      */
     private void validateCoordinatorJob() {
         // check if startTime < endTime
-        if (coordJob.getStartTime().after(coordJob.getEndTime())) {
-            throw new IllegalArgumentException("Coordinator Start Time cannot 
be greater than End Time.");
+        if (!coordJob.getStartTime().before(coordJob.getEndTime())) {
+            throw new IllegalArgumentException("Coordinator Start Time must be 
earlier than End Time.");
         }
     }
 

Modified: 
oozie/trunk/core/src/test/java/org/apache/oozie/command/coord/TestCoordSubmitXCommand.java
URL: 
http://svn.apache.org/viewvc/oozie/trunk/core/src/test/java/org/apache/oozie/command/coord/TestCoordSubmitXCommand.java?rev=1533552&r1=1533551&r2=1533552&view=diff
==============================================================================
--- 
oozie/trunk/core/src/test/java/org/apache/oozie/command/coord/TestCoordSubmitXCommand.java
 (original)
+++ 
oozie/trunk/core/src/test/java/org/apache/oozie/command/coord/TestCoordSubmitXCommand.java
 Fri Oct 18 16:49:44 2013
@@ -133,7 +133,45 @@ public class TestCoordSubmitXCommand ext
         catch (CommandException e) {
             assertEquals(sc.getJob().getStatus(), Job.Status.FAILED);
             assertEquals(e.getErrorCode(), ErrorCode.E1003);
-            assertTrue(e.getMessage().contains("Coordinator Start Time cannot 
be greater than End Time."));
+            assertTrue(e.getMessage().contains("Coordinator Start Time must be 
earlier than End Time."));
+        }
+    }
+
+    public void testBasicSubmitWithIdenticalStartAndEndTime() throws Exception 
{
+        Configuration conf = new XConfiguration();
+        File appPathFile = new File(getTestCaseDir(), "coordinator.xml");
+        String appXml = "<coordinator-app name=\"NAME\" 
frequency=\"${coord:days(1)}\" start=\"2010-02-01T01:00Z\" "
+                + "end=\"2010-02-01T01:00Z\" timezone=\"UTC\" "
+                + "xmlns=\"uri:oozie:coordinator:0.2\"> <controls> "
+                + "<execution>LIFO</execution> </controls> <datasets> "
+                + "<dataset name=\"a\" frequency=\"${coord:days(7)}\" 
initial-instance=\"2009-02-01T01:00Z\" "
+                + "timezone=\"UTC\"> <uri-template>" + 
getTestCaseFileUri("coord/workflows/${YEAR}/${DAY}")
+                + "</uri-template>  </dataset> "
+                + "<dataset name=\"local_a\" frequency=\"${coord:days(7)}\" 
initial-instance=\"2009-02-01T01:00Z\" "
+                + "timezone=\"UTC\"> <uri-template>" + 
getTestCaseFileUri("coord/workflows/${YEAR}/${DAY}")
+                + "</uri-template>  </dataset> "
+                + "</datasets> <input-events> "
+                + "<data-in name=\"A\" dataset=\"a\"> 
<instance>${coord:latest(0)}</instance> </data-in>  "
+                + "</input-events> "
+                + "<output-events> <data-out name=\"LOCAL_A\" 
dataset=\"local_a\"> "
+                + "<instance>${coord:current(-1)}</instance> </data-out> 
</output-events> <action> <workflow> "
+                + "<app-path>hdfs:///tmp/workflows/</app-path> "
+                + "<configuration> <property> <name>inputA</name> 
<value>${coord:dataIn('A')}</value> </property> "
+                + "<property> <name>inputB</name> 
<value>${coord:dataOut('LOCAL_A')}</value> "
+                + "</property></configuration> </workflow> </action> 
</coordinator-app>";
+        writeToFile(appXml, appPathFile);
+        conf.set(OozieClient.COORDINATOR_APP_PATH, 
appPathFile.toURI().toString());
+        conf.set(OozieClient.USER_NAME, getTestUser());
+        CoordSubmitXCommand sc = new CoordSubmitXCommand(conf);
+
+        try {
+            sc.call();
+            fail("Expected to catch errors due to incorrectly specified Start 
and End Time");
+        }
+        catch (CommandException e) {
+            assertEquals(sc.getJob().getStatus(), Job.Status.FAILED);
+            assertEquals(e.getErrorCode(), ErrorCode.E1003);
+            assertTrue(e.getMessage().contains("Coordinator Start Time must be 
earlier than End Time."));
         }
     }
 

Modified: oozie/trunk/docs/src/site/twiki/CoordinatorFunctionalSpec.twiki
URL: 
http://svn.apache.org/viewvc/oozie/trunk/docs/src/site/twiki/CoordinatorFunctionalSpec.twiki?rev=1533552&r1=1533551&r2=1533552&view=diff
==============================================================================
--- oozie/trunk/docs/src/site/twiki/CoordinatorFunctionalSpec.twiki (original)
+++ oozie/trunk/docs/src/site/twiki/CoordinatorFunctionalSpec.twiki Fri Oct 18 
16:49:44 2013
@@ -792,7 +792,8 @@ Coordinator applications are normally pa
 
 To create a coordinator job, a job configuration that resolves all coordinator 
application parameters must be provided to the coordinator engine.
 
-A coordinator job is a running instance of a coordinator application running 
from a start time to an end time.
+A coordinator job is a running instance of a coordinator application running 
from a start time to an end time. The start
+time must be earlier than the end time.
 
 At any time, a coordinator job is in one of the following status: *PREP, 
RUNNING, RUNNINGWITHERROR, PREPSUSPENDED, SUSPENDED, SUSPENDEDWITHERROR, 
PREPPAUSED, PAUSED, PAUSEDWITHERROR, SUCCEEDED, DONEWITHERROR, KILLED, FAILED*.
 

Modified: oozie/trunk/release-log.txt
URL: 
http://svn.apache.org/viewvc/oozie/trunk/release-log.txt?rev=1533552&r1=1533551&r2=1533552&view=diff
==============================================================================
--- oozie/trunk/release-log.txt (original)
+++ oozie/trunk/release-log.txt Fri Oct 18 16:49:44 2013
@@ -1,5 +1,6 @@
 -- Oozie 4.1.0 release (trunk - unreleased)
 
+OOZIE-1577 Oozie coordinator job with identical start and end time remains 
"RUNNING" forever (bowenzhangusa via rkanter)
 OOZIE-1559 Fix missing fields from new SELECT queries and Recovery Service 
picking up killed control nodes (ryota,mona via mona)
 OOZIE-1569 Maintain backward incompatibility for running jobs before upgrade 
(mona)
 OOZIE-1568 TestWorkflowClient.testSla is flakey (rkanter)


Reply via email to