The daylight saving section is the one that bites in production: a job scheduled at 02:30 local time simply does not run on the spring change and runs twice in some schedulers on the autumn change. Running schedulers in UTC and converting only for display avoids most of it. For jobs that must not double fire, a lock row keyed on the job name and intended run time is a cheap safety net.
StackShortlist
Proof Over Promises.
The daylight saving section is the one that bites in production: a job scheduled at 02:30 local time simply does not run on the spring change and runs twice in some schedulers on the autumn change. Running schedulers in UTC and converting only for display avoids most of it. For jobs that must not double fire, a lock row keyed on the job name and intended run time is a cheap safety net.