Jobs: don't schedule jobs with no computable next event

if we have a schedule that has no 'next event' we should skip the scheduling
instead of schedule every round

this can happen if someone sets an schedule that has no next match.
some examples:
* 2-31 00:00 (there is not February 31st)
* mon 2022-04-02 (this would be a saturday, not monday)
* 1970-1-1 (or every other exact date in the past)

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
This commit is contained in:
Dominik Csapak 2022-04-01 13:24:44 +02:00 committed by Thomas Lamprecht
parent b49a0404be
commit 349fe2a92a

View File

@ -232,9 +232,9 @@ sub run_jobs {
my $last_run = get_last_runtime($id, $type);
my $calspec = PVE::CalendarEvent::parse_calendar_event($schedule);
my $next_sync = PVE::CalendarEvent::compute_next_event($calspec, $last_run) // 0;
my $next_sync = PVE::CalendarEvent::compute_next_event($calspec, $last_run);
next if time() < $next_sync; # not yet its (next) turn
next if !defined($next_sync) || time() < $next_sync; # not yet its (next) turn
my $plugin = PVE::Jobs::Plugin->lookup($type);
if (starting_job($id, $type)) {