Skip to main content
← Back to list
01Issue
BugOpenSwamp CLIPublic
AssigneesNone

Relationships

#4367 serve: the cron-fire dedup claim has no deadline, so a hung control plane stalls every scheduled fire

Opened by zack · 11/3/2026

Found while planning swamp-club#4364.

In src/cli/commands/serve.ts the cronFireDedup callback passed to ScheduledExecutionService awaits controlPlaneStore.putIfAbsent on the fire-records key with no deadline. Every other control-plane call on the fire path is bounded: schedule state get and save by SCHEDULE_STATE_TIMEOUT_MS, the pause read by its own deadline.

Effect on a hung or very slow control plane: handleFire never returns for that slot. The fire never reaches the queue or the watermark write, its trackedFire promise sits in inFlightFires until drain's FIRE_SETTLE_TIMEOUT_MS gives up, and each later tick of the same workflow stacks another one. A catch-up fire hits the same wait.

Expected: the claim gets a deadline like the schedule-state calls, and a claim that times out follows the existing dedup-failure path (log and proceed, or treat as not claimed; decide which is safe for exactly-once) rather than waiting forever.

#4364 bounds the catch-up pass as a whole but does not change the ordinary fire path, so this is tracked separately.

02Bog Flow
◉OPEN○TRIAGED○IN PROGRESS○SHIPPED

Open

11/3/2026, 8:13:39 PM

No activity in this phase yet.

03Sludge Pulse

Sign in to post a ripple.