Leave a delivery cut off by a stop for the next start (closes #527)
check / check (push) Canceled after 0s

Stopping the engine cancels the context every http and slack request is
sent with. An attempt cut off that way was recorded as failed, which for
a target with no retries, or on a last retry, ended the delivery failed
and nothing sent it again.

The shared retry core now records nothing for a failed attempt when the
engine's context is cancelled: no result, no circuit breaker outcome, no
status change. The delivery stays pending or retrying and startup
recovery sends it again. A target's own timeout is still a failed
attempt. The README's Graceful shutdown bullet, Shutdown section and the
at-least-once note say so.

Model: opus-5-5
This commit is contained in:
2026-10-15 08:02:12 +00:00
parent 573f7f986a
commit c695b7714d
4 changed files with 213 additions and 15 deletions
+1 -1
View File
@@ -82,7 +82,7 @@ func (t *slackTarget) Deliver(
}
t.deliver(
webhookDB, d, task, sched,
ctx, webhookDB, d, task, sched,
d.Target.MaxRetries, attempt,
)
}