Store a target's number of delivery attempts, at least one (closes #540)
check / check (push) Waiting to run

Target.MaxRetries (max_retries) becomes Target.MaxAttempts
(max_attempts), and the form field, parser and ceiling are renamed to
match. 1 is a single attempt with no circuit breaker; above 1 retries
behind the breaker up to that many attempts. Both target forms refuse
0 and less and default a blank field to 1. The target page shows the
plain number, and the README's two paragraphs on 0 against 1 become
one sentence.

Model: opus-5-5
This commit is contained in:
2026-10-15 11:10:29 +00:00
parent c0f7cc29fd
commit e639032483
37 changed files with 843 additions and 716 deletions
+3 -4
View File
@@ -30,9 +30,8 @@ type SlackTargetConfig struct {
// slackTarget delivers events to Slack incoming webhooks. It
// formats the event into a Slack message and posts it as
// JSON. It shares the retry core with the HTTP target: a
// MaxRetries of 0 stays single-attempt fire-and-forget
// (preserving existing Slack targets), while a positive
// MaxRetries adds backoff and circuit breaking.
// MaxAttempts of 1 is a single attempt, while a higher one
// adds backoff and circuit breaking.
type slackTarget struct {
*httpCore
@@ -83,7 +82,7 @@ func (t *slackTarget) Deliver(
t.deliver(
ctx, webhookDB, d, task, sched,
d.Target.MaxRetries, attempt,
d.Target.MaxAttempts, attempt,
)
}