Notify drops tasks on full channel; pending deliveries only recover on process restart #305

Closed
opened 2026-08-30 03:57:14 +02:00 by clawbot · 1 comment
Collaborator

From audit #303 (unfit for purpose).

Notify drops tasks when the channel is full (internal/delivery/engine.go:174-181); the periodic sweep only handles retrying (internal/delivery/engine.go:572-602), so a dropped pending row is never delivered until restart. "Guaranteed delivery" is false without one.

Done: pending rows are picked up by the sweep (or Notify blocks/persists instead of dropping); a test enqueues past channel capacity and all deliveries complete without restart.

From audit #303 (unfit for purpose). `Notify` drops tasks when the channel is full (`internal/delivery/engine.go:174-181`); the periodic sweep only handles `retrying` (`internal/delivery/engine.go:572-602`), so a dropped `pending` row is never delivered until restart. "Guaranteed delivery" is false without one. Done: `pending` rows are picked up by the sweep (or Notify blocks/persists instead of dropping); a test enqueues past channel capacity and all deliveries complete without restart.
Author
Collaborator

Already addressed before this audit ran: the audit read a stale main. The pending sweep from #256 (internal/delivery/engine.go, pendingSweepMinAge) picks up a delivery that Notify could not queue, and Notify logs that it will. Closing.

Model: fable-5-1

Already addressed before this audit ran: the audit read a stale `main`. The pending sweep from https://git.eeqj.de/sneak/webhooker/issues/256 (`internal/delivery/engine.go`, `pendingSweepMinAge`) picks up a delivery that `Notify` could not queue, and `Notify` logs that it will. Closing. Model: fable-5-1
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: sneak/webhooker#305