liuhao1024
8f9abc9873
fix(cron): re-anchor stale next_run_at after direct jobs.json schedule edits
...
get_due_jobs() fires purely off the stored next_run_at <= now, with no
check that the stored instant is still an occurrence of the schedule's
current expression. A direct jobs.json edit that narrows schedule.expr
(e.g. daily "0 7 * * *" -> weekdays "0 7 * * 1-5") keeps the stored
next_run_at computed under the old expression, so the job fires on days
the new expression excludes. The within-grace fire and the catch-up
"run once now" path both inherit the wrong instant.
Add a best-effort stale-schedule guard on the fire path: when the stored
next_run_at is not an occurrence of the current cron expression,
re-anchor it via compute_next_run() from the current expression and skip
the fire. Non-cron kinds, missing expr, croniter unavailability, and
malformed input all report a match so the fire path keeps its existing
semantics. Recomputation uses the current expression, so the re-anchor
converges and cannot defer a valid job forever.
Fixes #93049
2026-08-23 18:25:35 -07:00
..
2026-08-23 17:45:47 -05:00
2026-08-08 04:19:49 -07:00
2026-08-23 18:25:19 -07:00
2026-08-20 11:46:30 -05:00
2026-08-23 17:45:47 -05:00
2026-08-09 22:09:49 -04:00
2026-08-23 18:25:35 -07:00
2026-08-15 13:35:32 -07:00
2026-08-23 18:25:12 -07:00
2026-08-23 18:25:35 -07:00
2026-08-16 06:38:38 -07:00
2026-08-13 23:43:15 +05:30
2026-08-04 17:36:26 -04:00
2026-08-08 18:11:02 -07:00
2026-08-23 15:27:24 -07:00
2026-08-19 22:14:56 -05:00
2026-08-20 19:56:01 -07:00
2026-08-23 18:25:19 -07:00
2026-08-13 02:38:28 -07:00
2026-08-12 19:13:32 -07:00
2026-08-19 12:41:45 -05:00
2026-08-23 02:55:03 +05:30
2026-08-08 12:33:19 -07:00
2026-08-23 18:25:35 -07:00
2026-08-23 17:43:39 -07:00
2026-08-07 10:11:05 -07:00
2026-08-19 12:41:45 -05:00
2026-08-19 01:19:28 -07:00
2026-08-12 17:25:30 -05:00
2026-08-06 05:00:17 +05:30
2026-08-13 22:44:23 +05:30
2026-08-16 01:50:20 -07:00
2026-08-23 17:01:31 -07:00
2026-08-23 06:36:57 -07:00
2026-08-15 23:37:22 -07:00
2026-08-17 16:34:02 -07:00
2026-08-20 04:54:14 -07:00
2026-08-20 12:41:17 -05:00
2026-08-20 19:56:28 -07:00
2026-08-20 12:41:17 -05:00
2026-08-14 15:41:38 -05:00
2026-08-03 17:19:49 -07:00
2026-08-14 21:48:14 -07:00
2026-08-08 05:21:09 -07:00
2026-08-12 19:13:32 -07:00
2026-08-16 06:29:53 -07:00
2026-08-09 22:09:49 -04:00
2026-08-15 00:36:03 -07:00
2026-08-09 22:09:49 -04:00
2026-08-15 23:37:22 -07:00
2026-08-09 22:09:49 -04:00
2026-08-16 19:53:07 -07:00
2026-08-13 23:43:15 +05:30
2026-08-13 23:43:15 +05:30
2026-08-13 02:38:28 -07:00
2026-08-14 21:35:30 -07:00
2026-08-14 22:33:58 -07:00
2026-08-08 19:46:35 -07:00
2026-08-14 21:58:09 -07:00
2026-08-14 21:58:09 -07:00
2026-08-14 21:58:09 -07:00
2026-08-16 11:34:40 -07:00
2026-08-13 02:38:28 -07:00
2026-08-13 18:39:54 +00:00
2026-08-13 18:39:54 +00:00
2026-08-14 21:58:09 -07:00
2026-08-17 02:40:59 -07:00
2026-08-15 01:55:22 -07:00
2026-08-07 19:44:35 +05:30
2026-08-11 17:06:15 -05:00
2026-08-16 23:26:10 -07:00
2026-08-23 13:34:32 +05:30
2026-08-14 21:36:41 -07:00
2026-08-09 22:09:49 -04:00
2026-08-20 11:37:01 +05:30
2026-08-14 21:45:08 -07:00
2026-08-14 21:50:48 -07:00
2026-08-13 11:49:14 -07:00
2026-08-17 15:12:53 -05:00
2026-08-17 16:39:47 -07:00
2026-08-14 13:51:26 -07:00
2026-08-14 13:51:26 -07:00
2026-08-12 18:55:14 -07:00
2026-08-10 17:02:56 -07:00
2026-08-08 12:33:19 -07:00
2026-08-07 00:41:58 -04:00
2026-08-16 20:43:13 -07:00
2026-08-10 17:02:56 -07:00
2026-08-10 17:02:56 -07:00
2026-08-21 21:53:11 +05:30
2026-08-06 07:49:42 -07:00
2026-08-04 11:26:15 +05:30
2026-08-23 02:55:03 +05:30
2026-08-23 02:55:03 +05:30
2026-08-22 04:02:29 +05:30
2026-08-15 02:22:58 -07:00
2026-08-22 14:33:20 +05:30
2026-08-23 18:25:12 -07:00
2026-08-08 14:18:26 +05:30
2026-08-23 18:25:12 -07:00
2026-08-15 00:36:03 -07:00
2026-08-13 09:36:02 -07:00
2026-08-07 09:44:21 -07:00
2026-08-16 06:26:37 -07:00
2026-08-06 23:08:23 -05:00
2026-08-23 18:24:26 -07:00
2026-08-06 19:35:47 -06:00
2026-08-09 13:43:14 -07:00
2026-08-12 20:02:07 -07:00
2026-08-14 12:02:05 -04:00
2026-08-13 02:38:28 -07:00
2026-08-23 17:43:39 -07:00