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);
