public Tuple getPeriodStartingAt()

in spi/src/main/java/org/opensearch/jobscheduler/spi/schedule/CronSchedule.java [111:127]


    public Tuple<Instant, Instant> getPeriodStartingAt(Instant startTime) {
        long delay = scheduleDelay == null ? 0 : scheduleDelay;
        Instant realStartTime;
        if (startTime != null) {
            realStartTime = startTime;
        } else {
            Instant now = this.clock.instant();
            Optional<ZonedDateTime> lastExecutionTime = this.executionTime.lastExecution(ZonedDateTime.ofInstant(now.minusMillis(delay), this.timezone));
            if (!lastExecutionTime.isPresent()) {
                return new Tuple<>(now, now);
            }
            realStartTime = lastExecutionTime.get().toInstant().plusMillis(delay);
        }
        ZonedDateTime zonedDateTime = ZonedDateTime.ofInstant(realStartTime.minusMillis(delay), this.timezone);
        ZonedDateTime newEndTime = executionTime.nextExecution(zonedDateTime).orElse(null);
        return new Tuple<>(realStartTime, newEndTime == null ? null : newEndTime.toInstant().plusMillis(delay));
    }