@Override public void timerExpired(Timer timer) { Date actualExecutionTime = new Date(); super.timerExpired(timer); Date completionTime = new Date(); this.triggerContext.update(this.scheduledExecutionTime, actualExecutionTime, completionTime); if (!this.cancelled) { schedule(); } } }
@Override public void run() { Date actualExecutionTime = new Date(); super.run(); Date completionTime = new Date(); synchronized (this.triggerContextMonitor) { Assert.state(this.scheduledExecutionTime != null, "No scheduled execution"); this.triggerContext.update(this.scheduledExecutionTime, actualExecutionTime, completionTime); if (!obtainCurrentFuture().isCancelled()) { schedule(); } } }
@Override public void run() { Date actualExecutionTime = new Date(); super.run(); Date completionTime = new Date(); synchronized (this.triggerContextMonitor) { Assert.state(this.scheduledExecutionTime != null, "No scheduled execution"); this.triggerContext.update(this.scheduledExecutionTime, actualExecutionTime, completionTime); if (!obtainCurrentFuture().isCancelled()) { schedule(); } } }
private static TriggerContext getTriggerContext(Date lastCompletionTime) { SimpleTriggerContext context = new SimpleTriggerContext(); context.update(null, null, lastCompletionTime); return context; }
@Override public void timerExpired(Timer timer) { Date actualExecutionTime = new Date(); super.timerExpired(timer); Date completionTime = new Date(); this.triggerContext.update(this.scheduledExecutionTime, actualExecutionTime, completionTime); if (!this.cancelled) { schedule(); } } }
@Test public void testIncrementSecondWithPreviousExecutionTooEarly() throws Exception { CronTrigger trigger = new CronTrigger("11 * * * * *", timeZone); calendar.set(Calendar.SECOND, 11); SimpleTriggerContext context = new SimpleTriggerContext(); context.update(calendar.getTime(), new Date(calendar.getTimeInMillis() - 100), new Date(calendar.getTimeInMillis() - 90)); calendar.add(Calendar.MINUTE, 1); assertEquals(calendar.getTime(), trigger.nextExecutionTime(context)); }
Date date = this.trigger.nextExecutionTime(triggerContext); if (date != null) { triggerContext.update(date, null, null); long millis = date.getTime() - System.currentTimeMillis(); sink.next(Duration.ofMillis(millis)); Mono.delay(duration) .doOnNext(l -> triggerContext.update(triggerContext.lastScheduledExecutionTime(), new Date(), null)) .flatMapMany(l -> .subscribeOn(Schedulers.fromExecutor(this.taskExecutor)) .doOnComplete(() -> triggerContext.update(triggerContext.lastScheduledExecutionTime(), triggerContext.lastActualExecutionTime(), new Date())
@Override public void run() { Date actualExecutionTime = new Date(); super.run(); Date completionTime = new Date(); synchronized (this.triggerContextMonitor) { Assert.state(this.scheduledExecutionTime != null, "No scheduled execution"); this.triggerContext.update(this.scheduledExecutionTime, actualExecutionTime, completionTime); if (!obtainCurrentFuture().isCancelled()) { schedule(); } } }
@Override public void timerExpired(Timer timer) { Date actualExecutionTime = new Date(); super.timerExpired(timer); Date completionTime = new Date(); this.triggerContext.update(this.scheduledExecutionTime, actualExecutionTime, completionTime); if (!this.cancelled) { schedule(); } } }
CronTrigger trigger = new CronTrigger(); trigger.setCronExpression("0 0 23 3,18 * ? *"); SimpleTriggerContext triggerContext = new SimpleTriggerContext(); triggerContext.update(null, null, new Date()); Date nextFireAt = trigger.nextExecutionTime(triggerContext);
Date date = this.trigger.nextExecutionTime(triggerContext); if (date != null) { triggerContext.update(date, null, null); long millis = date.getTime() - System.currentTimeMillis(); sink.next(Duration.ofMillis(millis)); Mono.delay(duration) .doOnNext(l -> triggerContext.update(triggerContext.lastScheduledExecutionTime(), new Date(), null)) .flatMapMany(l -> .subscribeOn(Schedulers.fromExecutor(this.taskExecutor)) .doOnComplete(() -> triggerContext.update(triggerContext.lastScheduledExecutionTime(), triggerContext.lastActualExecutionTime(), new Date())