Repository: falcon
Updated Branches:
  refs/heads/master c8d58b8a9 -> 81136147d


FALCON-2097 Feed update with replication delay creates holes

Author: sandeep <[email protected]>

Reviewers: @pallavi-rao

Closes #239 from sandeepSamudrala/master and squashes the following commits:

c065566 [sandeep] reverting last line changes made
1a4dcd2 [sandeep] rebased and resolved the conflicts from master
271318b [sandeep] FALCON-2097. Adding UT to the new method for getting next 
instance time with Delay.
a94d4fe [sandeep] rebasing from master
9e68a57 [sandeep] FALCON-298. Feed update with replication delay creates holes


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

Branch: refs/heads/master
Commit: 81136147dbdf32c3d2d2da4e30ae5ec944cc332f
Parents: c8d58b8
Author: sandeep <[email protected]>
Authored: Mon Aug 8 14:31:17 2016 +0530
Committer: Pallavi Rao <[email protected]>
Committed: Mon Aug 8 14:31:17 2016 +0530

----------------------------------------------------------------------
 .../main/java/org/apache/falcon/entity/EntityUtil.java  | 12 ++++++++++++
 .../java/org/apache/falcon/entity/EntityUtilTest.java   |  8 ++++++++
 .../falcon/workflow/engine/OozieWorkflowEngine.java     |  2 +-
 3 files changed, 21 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/falcon/blob/81136147/common/src/main/java/org/apache/falcon/entity/EntityUtil.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/org/apache/falcon/entity/EntityUtil.java 
b/common/src/main/java/org/apache/falcon/entity/EntityUtil.java
index 51172f2..aef1fd5 100644
--- a/common/src/main/java/org/apache/falcon/entity/EntityUtil.java
+++ b/common/src/main/java/org/apache/falcon/entity/EntityUtil.java
@@ -462,6 +462,18 @@ public final class EntityUtil {
         return insCal.getTime();
     }
 
+    public static Date getNextInstanceTimeWithDelay(Date instanceTime, 
Frequency delay, TimeZone tz) {
+        if (tz == null) {
+            tz = TimeZone.getTimeZone("UTC");
+        }
+        Calendar insCal = Calendar.getInstance(tz);
+        insCal.setTime(instanceTime);
+        final int delayAmount = delay.getFrequencyAsInt();
+        insCal.add(delay.getTimeUnit().getCalendarUnit(), delayAmount);
+
+        return insCal.getTime();
+    }
+
     public static String md5(Entity entity) throws FalconException {
         return new String(Hex.encodeHex(DigestUtils.md5(stringOf(entity))));
     }

http://git-wip-us.apache.org/repos/asf/falcon/blob/81136147/common/src/test/java/org/apache/falcon/entity/EntityUtilTest.java
----------------------------------------------------------------------
diff --git a/common/src/test/java/org/apache/falcon/entity/EntityUtilTest.java 
b/common/src/test/java/org/apache/falcon/entity/EntityUtilTest.java
index 766b2fa..42ae3e6 100644
--- a/common/src/test/java/org/apache/falcon/entity/EntityUtilTest.java
+++ b/common/src/test/java/org/apache/falcon/entity/EntityUtilTest.java
@@ -471,4 +471,12 @@ public class EntityUtilTest extends AbstractTestBase {
         Assert.assertFalse(EntityUtil.isEntityDependentOnCluster(process, 
"fakeCluster"));
     }
 
+    @Test
+    public void testGetNextInstanceTimeWithDelay() throws Exception {
+        Date date = getDate("2016-08-10 03:00 UTC");
+        Frequency delay = new Frequency("hours(2)");
+        Date nextInstanceWithDelay = 
EntityUtil.getNextInstanceTimeWithDelay(date, delay, 
TimeZone.getTimeZone("UTC"));
+        Assert.assertEquals(nextInstanceWithDelay, getDate("2016-08-10 05:00 
UTC"));
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/falcon/blob/81136147/oozie/src/main/java/org/apache/falcon/workflow/engine/OozieWorkflowEngine.java
----------------------------------------------------------------------
diff --git 
a/oozie/src/main/java/org/apache/falcon/workflow/engine/OozieWorkflowEngine.java
 
b/oozie/src/main/java/org/apache/falcon/workflow/engine/OozieWorkflowEngine.java
index 38a6c00..06d0142 100644
--- 
a/oozie/src/main/java/org/apache/falcon/workflow/engine/OozieWorkflowEngine.java
+++ 
b/oozie/src/main/java/org/apache/falcon/workflow/engine/OozieWorkflowEngine.java
@@ -1413,7 +1413,7 @@ public class OozieWorkflowEngine extends 
AbstractWorkflowEngine {
 
             //calculate next start time based on delay.
             endTime = (delay == null) ? endTime
-                    : EntityUtil.getNextStartTime(coord.getStartTime(), delay, 
EntityUtil.getTimeZone(entity), endTime);
+                    : EntityUtil.getNextInstanceTimeWithDelay(endTime, delay, 
EntityUtil.getTimeZone(entity));
             LOG.debug("Updating endtime of coord {} to {} on cluster {}",
                     coord.getId(), SchemaHelper.formatDateUTC(endTime), 
cluster);
 

Reply via email to