Andras Bacsai
50be16be8f
revert(scheduler): go back to the cron scan and keep the reliability fixes
...
The missed daily backups on Coolify Cloud came from Redis evicting queue keys
(allkeys-lfu on a full instance), not from the scan of all schedules. The
next_run_at design (452259aac , 5c5740533 ) did not prevent that, and it added
stored state that must be kept in sync on every frequency, timezone, and server
change. It was not released, so remove it:
- revert next_run_at, its model hooks, the "Next run" UI, and the diagnostics
changes; restore scheduled_job_states and the queue overlap lock
- a new migration removes the next_run_at columns and creates
scheduled_job_states again where the removed migration already ran
Keep the changes that fix real problems:
- run the manager every minute from the scheduler with `scheduled:dispatch`,
so a busy queue cannot delay it past the catch-up window
- load the server chain of scheduled backups with each chunk, which removes
about 7,000 queries per run on Coolify Cloud
- catch Throwable for each schedule, so one broken schedule does not stop the
others
- publish database and volume backups again when their queued job was not
started after 60 minutes (for example, lost in Redis); log lost tasks and
Docker cleanups as missed. A lost backup is not run again when a newer
occurrence of the same schedule exists.
2026-10-02 08:05:18 +02:00
..
2026-09-28 11:55:56 +02:00
2026-09-28 11:55:56 +02:00
2026-09-30 18:59:49 +02:00
2026-09-28 00:18:16 +02:00
2026-09-28 11:55:56 +02:00
2026-08-03 23:08:11 +02:00
2026-07-02 15:50:43 +02:00
2026-09-28 10:13:20 +02:00
2026-08-20 09:32:32 +02:00
2026-10-01 20:31:00 +02:00
2026-10-01 07:16:45 +02:00
2026-09-28 00:18:16 +02:00
2026-09-09 15:01:57 +02:00
2026-09-10 12:33:50 +02:00
2026-09-28 11:55:56 +02:00
2026-08-28 09:46:57 +02:00
2026-10-01 20:31:00 +02:00
2026-07-02 16:27:06 +02:00
2026-09-28 00:18:16 +02:00
2026-07-11 21:35:10 +02:00
2026-08-23 21:33:00 +02:00
2026-08-25 11:50:33 +02:00
2026-09-27 21:09:13 +02:00
2026-09-28 00:18:16 +02:00
2026-07-15 12:29:58 +02:00
2026-09-28 00:18:16 +02:00
2026-09-28 11:55:56 +02:00
2026-08-15 15:51:11 +02:00
2026-09-28 11:35:46 +02:00
2026-07-23 17:25:53 +02:00
2026-08-07 18:17:33 +02:00
2026-09-28 11:55:56 +02:00
2026-09-28 11:55:56 +02:00
2026-09-25 13:15:57 +02:00
2026-09-04 16:29:24 +02:00
2026-07-16 11:57:52 +02:00
2026-09-28 00:18:16 +02:00
2026-09-28 00:18:16 +02:00
2026-09-25 19:00:00 +02:00
2026-09-30 18:10:10 +02:00
2026-09-28 00:18:16 +02:00
2026-08-03 23:08:56 +02:00
2026-08-19 11:25:46 +02:00
2026-08-13 10:58:28 +02:00
2026-08-31 13:13:26 +02:00
2026-09-28 00:18:16 +02:00
2026-08-03 23:11:54 +02:00
2026-08-11 10:55:50 +00:00
2026-09-28 11:55:56 +02:00
2026-09-28 00:18:16 +02:00
2026-09-28 11:55:56 +02:00
2026-09-30 18:59:49 +02:00
2026-09-28 11:55:56 +02:00
2026-09-28 11:55:56 +02:00
2026-09-27 14:37:21 +02:00
2026-08-22 12:53:20 +02:00
2026-09-28 00:18:16 +02:00
2026-07-11 22:52:10 +02:00
2026-07-16 13:42:53 +02:00
2026-08-18 23:40:59 +02:00
2026-08-05 13:50:11 +02:00
2026-08-22 12:53:20 +02:00
2026-09-10 17:39:56 +02:00
2026-09-28 11:55:56 +02:00
2026-09-27 13:47:01 +02:00
2026-09-28 00:18:16 +02:00
2026-08-24 10:57:22 +02:00
2026-08-28 10:49:05 +02:00
2026-09-30 12:11:37 +02:00
2026-08-22 17:22:50 +02:00
2026-08-13 11:17:44 +02:00
2026-08-13 11:17:44 +02:00
2026-09-10 12:33:50 +02:00
2026-08-03 23:08:56 +02:00
2026-08-21 12:04:14 +02:00
2026-07-16 13:42:53 +02:00
2026-09-21 15:42:12 +02:00
2026-09-18 15:34:50 +02:00
2026-08-27 10:39:38 +02:00
2026-09-28 11:55:56 +02:00
2026-09-02 19:39:19 +02:00
2026-09-28 11:55:56 +02:00
2026-08-03 23:08:56 +02:00
2026-10-01 08:14:30 +02:00
2026-07-07 12:24:52 +02:00
2026-07-20 23:21:40 +02:00
2026-07-20 23:21:40 +02:00
2026-07-20 23:21:40 +02:00
2026-09-28 14:06:14 +02:00
2026-09-28 00:18:16 +02:00
2026-09-28 00:18:16 +02:00
2026-09-28 00:18:16 +02:00
2026-07-20 12:18:06 +02:00
2026-09-05 12:32:25 +02:00
2026-09-28 00:18:16 +02:00
2026-09-29 10:37:54 +02:00
2026-09-28 00:18:16 +02:00
2026-09-25 19:00:00 +02:00
2026-09-30 12:13:11 +02:00
2026-07-07 12:20:26 +02:00
2026-08-13 22:56:52 +02:00
2026-08-28 09:46:57 +02:00
2026-09-01 18:44:18 +02:00
2026-09-28 11:55:56 +02:00
2026-08-07 15:21:18 +02:00
2026-09-28 11:55:56 +02:00
2026-08-19 11:52:59 +02:00
2026-09-15 23:00:45 +02:00
2026-09-24 22:15:09 +02:00
2026-09-28 11:55:56 +02:00
2026-09-28 15:37:20 +02:00
2026-09-24 07:11:06 +02:00
2026-09-28 00:18:16 +02:00
2026-08-21 12:15:46 +02:00
2026-08-24 09:10:19 +02:00
2026-08-21 12:15:46 +02:00
2026-08-21 12:15:46 +02:00
2026-08-21 12:15:46 +02:00
2026-09-29 20:46:54 +02:00
2026-09-28 00:18:16 +02:00
2026-09-27 13:47:01 +02:00
2026-09-30 13:35:22 +02:00
2026-09-21 16:53:50 +02:00
2026-08-15 18:38:59 +02:00
2026-09-30 12:21:26 +02:00
2026-09-21 15:30:11 +02:00
2026-10-01 07:16:26 +02:00
2026-08-31 13:13:26 +02:00
2026-09-28 11:55:56 +02:00
2026-07-03 11:40:20 +02:00
2026-09-27 16:26:56 +02:00
2026-08-18 14:03:33 +02:00
2026-09-25 12:50:08 +02:00
2026-08-23 21:33:00 +02:00
2026-08-03 23:11:54 +02:00
2026-08-31 13:13:26 +02:00
2026-09-15 11:38:33 +02:00
2026-09-25 11:32:04 +02:00
2026-09-28 11:55:56 +02:00
2026-09-28 00:18:16 +02:00
2026-08-05 15:15:50 +02:00
2026-09-10 15:12:53 +02:00
2026-08-14 13:34:00 +02:00
2026-09-24 07:11:06 +02:00
2026-08-25 10:30:14 +02:00
2026-08-12 16:27:33 +02:00
2026-10-02 08:05:18 +02:00
2026-09-08 20:33:45 +02:00
2026-07-02 14:46:46 +02:00
2026-10-01 09:30:19 +02:00
2026-10-01 09:30:21 +02:00
2026-10-02 08:05:18 +02:00
2026-07-19 11:42:04 +02:00
2026-09-10 17:39:56 +02:00
2026-07-15 12:29:58 +02:00
2026-09-28 00:18:16 +02:00
2026-09-28 11:55:56 +02:00
2026-09-28 11:55:56 +02:00
2026-09-02 19:39:19 +02:00
2026-07-02 16:56:49 +02:00
2026-07-15 12:29:58 +02:00
2026-08-19 11:25:46 +02:00
2026-09-28 11:55:56 +02:00
2026-09-28 11:55:56 +02:00
2026-09-30 11:05:42 +02:00
2026-09-28 11:55:56 +02:00
2026-08-03 23:11:54 +02:00
2026-10-01 07:16:27 +02:00
2026-09-16 12:51:27 +02:00
2026-08-31 13:13:26 +02:00
2026-07-02 15:05:05 +02:00
2026-09-28 09:35:27 +02:00
2026-08-15 18:31:32 +02:00
2026-09-02 19:39:19 +02:00
2026-09-29 20:46:54 +02:00
2026-08-19 12:18:05 +02:00
2026-09-02 19:39:19 +02:00
2026-09-08 20:33:45 +02:00
2026-07-06 17:40:37 +02:00
2026-09-10 15:12:53 +02:00
2026-07-19 16:47:29 +02:00
2026-08-24 09:04:51 +02:00
2026-09-24 23:22:35 +02:00
2026-09-28 00:18:16 +02:00
2026-07-16 13:42:53 +02:00