Relationships
↔ sibling #2468#2472 serve --hot-reload: a changed trigger override schedule is logged as applied but the built-in cron keeps firing
Opened by randybias · 9/24/2026· Shipped 10/5/2026
Problem
With swamp serve --hot-reload, changing a trigger override's schedule in the --config file and sending swamp serve reload (SIGHUP) logs that the schedule changed. But the scheduler keeps firing on the workflow's built-in cron.
Measured (20260923.231117.0)
serve runs with --config=/config/serve.yaml --hot-reload. The workflow declares trigger.schedule: "0 5 * * *". The config's triggers: override for it was changed to schedule: "44 10 * * *", confirmed in the pod's mounted file, then:
$ swamp serve reload --repo-dir /data/repo
Sent SIGHUP to serve process 68Server log, in order:
SIGHUP received, reloading pulled extensions...
Scheduled workflow "mircloud-sweep-cabling-drift" ("0 5 * * *")
Registered schedule for workflow "mircloud-sweep-cabling-drift": "0 5 * * *"
Updated trigger overrides: 1 schedule(s) changed
Hot-reloaded 65 type(s)
Reloaded 1 trigger override(s) from serve.yamlGET /healthafterwards:{"cronExpression":"0 5 * * *","nextRun":"2026-09-25T05:00:00.000Z"}.- No fire at 10:44. The worker received 0 dispatches for the workflow.
- Control: the same override applied by a restart (07:15Z, cron
21 07 * * *) fired on time, rune47f6fa5at 07:21:00Z.
Suspected cause (INFERRED from the log order)
The extension hot-reload rescans workflow directories and re-registers each workflow's built-in schedule, and that overwrites the override the reload just applied. It may also discard the override's inputs. That is not measured, and if true it would make a scheduled fire fail input validation after any reload.
Ask
- Apply trigger overrides AFTER the workflow rescan on reload, or make the rescan override-aware.
- Make
/health'sschedules[]report the effective cron and the source (built-in or override).
Shipped
Click a lifecycle step above to view its details.
stack72 commented 10/5/2026, 10:41:03 PM
Thanks @randybias for reporting this! We shipped: Serve resolves --config at boot, but hot reload and the workflow.trigger get/set/remove handlers read /.swamp/serve.yaml. Resolve the config path once at startup, carry it on the connection context, and use it for reload and the trigger handlers. Trigger get reports the scheduler's in-memory override, and set/remove refuse clearly when the config file cannot be written. Fixes #2472 and the linked #2468.. The fix has been merged and a release is on its way. We appreciate your contribution to swamp.
Sign in to post a ripple.