Skip to content

Conversation

@drakkan
Copy link

@drakkan drakkan commented Feb 20, 2023

Suppose you have a job scheduled every minute.

The current time is 15:00:00 and for reasons outside our control it is set to 17:00:00, the job runs as expected and "Next" will be set to 17:01:00.
If the system clock returns to the correct time and so now is, for example, 15:01:00, when we calculate the duration of the timer here

cron/cron.go

Line 259 in bc59245

timer = time.NewTimer(c.entries[0].Next.Sub(now))

we will have something like 2 hours and then no job runs for 2 hours.

This patch fixes the issue. Thank you

CybotTM added a commit to netresearch/go-cron that referenced this pull request Nov 25, 2025
- Add detection for system time moving backwards (NTP correction,
  VM snapshot restore) and reschedule affected entries (robfig#480)
- Pre-allocate slice in removeEntry to avoid reallocations (robfig#539)
- Add tests for time backwards detection and WithSeconds option
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant