Maybe we should implement fixed delay correctly and do run a one-time on-upgrade migration where we change all existing timer scripts to fixed rate, since that’s what they are in reality…
edit: no, then you’d lose the safety guarantees of fixed delay.
Well we could, but there’s little reason to do that instead of using ScheduledExecutorService.
The big issue here is an unexpected behavior change on upgrade for all the existing timer scripts out there, not how to actually implement fixed delay.
I think you should just fix it. Anyone who chose fixed delay operation was expecting variable start times. That they’ve been getting earlier starts than “proper” is simply a variety of “variable”.