Skip to content

Commit 19ef41e

Browse files
authored
Watcher: Simplify finding next date in cron schedule (#33015)
The code introduced in 3fa3680 to fix an issue with crons always returning -1 was not very readable. This implementation uses streams to improve readability.
1 parent 2cc6116 commit 19ef41e

File tree

1 file changed

+8
-13
lines changed

1 file changed

+8
-13
lines changed

x-pack/plugin/watcher/src/main/java/org/elasticsearch/xpack/watcher/trigger/schedule/CronnableSchedule.java

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -30,19 +30,14 @@ private CronnableSchedule(Cron... crons) {
3030
@Override
3131
public long nextScheduledTimeAfter(long startTime, long time) {
3232
assert time >= startTime;
33-
long nextTime = Long.MAX_VALUE;
34-
for (Cron cron : crons) {
35-
long nextValidTimeAfter = cron.getNextValidTimeAfter(time);
36-
37-
boolean previousCronExpired = nextTime == -1;
38-
boolean currentCronValid = nextValidTimeAfter > -1;
39-
if (previousCronExpired && currentCronValid) {
40-
nextTime = nextValidTimeAfter;
41-
} else {
42-
nextTime = Math.min(nextTime, nextValidTimeAfter);
43-
}
44-
}
45-
return nextTime;
33+
return Arrays.stream(crons)
34+
.map(cron -> cron.getNextValidTimeAfter(time))
35+
// filter out expired dates before sorting
36+
.filter(nextValidTime -> nextValidTime > -1)
37+
.sorted()
38+
.findFirst()
39+
// no date in the future found, return -1 to the caller
40+
.orElse(-1L);
4641
}
4742

4843
public Cron[] crons() {

0 commit comments

Comments
 (0)