private BasicTimeChecker getEndTimeChecker(final Trigger t) { if (t.getExpireCondition().getExpression().contains("EndTimeChecker")) { return getBasicTimeChecker(t.getExpireCondition().getCheckers()); } return null; }
private void checkAllTriggers() throws TriggerManagerException { // sweep through the rest of them for (final Trigger t : this.triggers) { try { TriggerManager.this.scannerStage = "Checking for trigger " + t.getTriggerId(); if (t.getStatus().equals(TriggerStatus.READY)) { /** * Prior to this change, expiration condition should never be called though * we have some related code here. ExpireCondition used the same BasicTimeChecker * as triggerCondition do. As a consequence, we need to figure out a way to distinguish * the previous ExpireCondition and this commit's ExpireCondition. */ if (t.getExpireCondition().getExpression().contains("EndTimeChecker") && t .expireConditionMet()) { onTriggerPause(t); } else if (t.triggerConditionMet()) { onTriggerTrigger(t); } } if (t.getStatus().equals(TriggerStatus.EXPIRED) && t.getSource().equals("azkaban")) { removeTrigger(t); } else { t.updateNextCheckTime(); } } catch (final Throwable th) { //skip this trigger, moving on to the next one logger.error("Failed to process trigger with id : " + t, th); } } }
@Test public void neverExpireTriggerTest() throws TriggerManagerException { final Trigger t1 = createNeverExpireTrigger("triggerLoader", 10); this.triggerManager.insertTrigger(t1); t1.setResetOnTrigger(false); final ThresholdChecker triggerChecker = (ThresholdChecker) t1.getTriggerCondition().getCheckers().values() .toArray()[0]; final BasicTimeChecker expireChecker = (BasicTimeChecker) t1.getExpireCondition().getCheckers().values() .toArray()[0]; ThresholdChecker.setVal(15); sleep(300); sleep(300); assertTrue(triggerChecker.isCheckerMet() == true); assertTrue(expireChecker.eval() == false); ThresholdChecker.setVal(25); sleep(300); assertTrue(triggerChecker.isCheckerMet() == true); assertTrue(expireChecker.eval() == false); }
@Test public void timeCheckerAndExpireTriggerTest() throws TriggerManagerException { final long curr = System.currentTimeMillis(); final Trigger t1 = createPeriodAndEndCheckerTrigger(curr); this.triggerManager.insertTrigger(t1); t1.setResetOnTrigger(true); final BasicTimeChecker expireChecker = (BasicTimeChecker) t1.getExpireCondition().getCheckers().values() .toArray()[0]; sleep(1000); assertTrue(expireChecker.eval() == false); assertTrue(t1.getStatus() == TriggerStatus.READY); sleep(1000); sleep(1000); sleep(1000); assertTrue(expireChecker.eval() == true); assertTrue(t1.getStatus() == TriggerStatus.PAUSED); sleep(1000); assertTrue(expireChecker.eval() == true); assertTrue(t1.getStatus() == TriggerStatus.PAUSED); }
private BasicTimeChecker getEndTimeChecker(final Trigger t) { if (t.getExpireCondition().getExpression().contains("EndTimeChecker")) { return getBasicTimeChecker(t.getExpireCondition().getCheckers()); } return null; }
private void checkAllTriggers() throws TriggerManagerException { // sweep through the rest of them for (final Trigger t : this.triggers) { try { TriggerManager.this.scannerStage = "Checking for trigger " + t.getTriggerId(); if (t.getStatus().equals(TriggerStatus.READY)) { /** * Prior to this change, expiration condition should never be called though * we have some related code here. ExpireCondition used the same BasicTimeChecker * as triggerCondition do. As a consequence, we need to figure out a way to distinguish * the previous ExpireCondition and this commit's ExpireCondition. */ if (t.getExpireCondition().getExpression().contains("EndTimeChecker") && t .expireConditionMet()) { onTriggerPause(t); } else if (t.triggerConditionMet()) { onTriggerTrigger(t); } } if (t.getStatus().equals(TriggerStatus.EXPIRED) && t.getSource().equals("azkaban")) { removeTrigger(t); } else { t.updateNextCheckTime(); } } catch (final Throwable th) { //skip this trigger, moving on to the next one logger.error("Failed to process trigger with id : " + t, th); } } }