azkaban-aplcache

fix endtime schedule (#1246) An issue was introduced in #1110

6/21/2017 10:06:27 PM

Details

diff --git a/azkaban-common/src/main/java/azkaban/scheduler/TriggerBasedScheduleLoader.java b/azkaban-common/src/main/java/azkaban/scheduler/TriggerBasedScheduleLoader.java
index f32b900..ab0bdb8 100644
--- a/azkaban-common/src/main/java/azkaban/scheduler/TriggerBasedScheduleLoader.java
+++ b/azkaban-common/src/main/java/azkaban/scheduler/TriggerBasedScheduleLoader.java
@@ -44,7 +44,7 @@ public class TriggerBasedScheduleLoader implements ScheduleLoader {
   private long lastUpdateTime = -1;
 
   public TriggerBasedScheduleLoader(final TriggerManager triggerManager,
-                                    final String triggerSource) {
+      final String triggerSource) {
     this.triggerManager = triggerManager;
     this.triggerSource = triggerSource;
   }
@@ -129,8 +129,9 @@ public class TriggerBasedScheduleLoader implements ScheduleLoader {
 
   private Schedule triggerToSchedule(final Trigger t) throws ScheduleManagerException {
 
-    final BasicTimeChecker triggerTimeChecker = getBasicTimeChecker(t.getTriggerCondition().getCheckers());
-    final BasicTimeChecker endTimeChecker = getBasicTimeChecker(t.getExpireCondition().getCheckers());
+    final BasicTimeChecker triggerTimeChecker = getBasicTimeChecker(
+        t.getTriggerCondition().getCheckers());
+    final BasicTimeChecker endTimeChecker = getEndTimeChecker(t);
 
     final List<TriggerAction> actions = t.getActions();
     ExecuteFlowAction act = null;
@@ -147,7 +148,8 @@ public class TriggerBasedScheduleLoader implements ScheduleLoader {
           act.getFlowName(),
           t.getStatus().toString(),
           triggerTimeChecker.getFirstCheckTime(),
-          endTimeChecker == null? Constants.DEFAULT_SCHEDULE_END_EPOCH_TIME: endTimeChecker.getNextCheckTime(),
+          endTimeChecker == null ? Constants.DEFAULT_SCHEDULE_END_EPOCH_TIME
+              : endTimeChecker.getNextCheckTime(),
           triggerTimeChecker.getTimeZone(),
           triggerTimeChecker.getPeriod(),
           t.getLastModifyTime(),
@@ -174,6 +176,14 @@ public class TriggerBasedScheduleLoader implements ScheduleLoader {
     return null;
   }
 
+  private BasicTimeChecker getEndTimeChecker(final Trigger t) {
+    if (t.getExpireCondition().getExpression().contains("EndTimeChecker")) {
+      return getBasicTimeChecker(t.getExpireCondition().getCheckers());
+    }
+    return null;
+  }
+
+
   @Override
   public void removeSchedule(final Schedule s) throws ScheduleManagerException {
     try {