A target paused by its circuit breaker is not shown as paused #385

Open
opened 2026-10-01 22:06:19 +02:00 by clawbot · 0 comments
Collaborator

Owner's request, #377 (chat, 2026-10-01):

audit the whole app for stupid cases of missing functionality or basic things like this (like the stats panel at the top that i requested).

What is missing: an http or slack target with retries that keeps failing trips its circuit breaker. Webhooker then stops attempting it until a cooldown ends (internal/delivery/target_http.go, which logs "circuit breaker open, skipping delivery"). Nothing in the UI shows this.

In the audit, a target answering 500 tripped its breaker. On the webhook page, the target list still showed it as "Active" with nothing amiss. In the event log, its deliveries sat at "retrying" for minutes, several of them with "0 attempts" and "No attempts recorded yet". Nothing said why nothing was happening or when it would resume. The breaker's state already feeds a metric (publishCircuitState), but no page shows it.

Definition of done:

  • On the webhook page, a target whose breaker is open or half-open shows that deliveries to it are paused, and until when: the time the cooldown ends, in UTC and relative.
  • In the event log, a delivery waiting on an open breaker says so, for example "waiting: target paused after repeated failures, resumes 20:05 UTC". It no longer shows a bare "retrying" with no attempts.
  • Tests: trip the breaker on a test target, then check that both pages show it, and that both stop showing it once the breaker closes.

PRIORITY: from the owner's audit request of 1 October (#377), in the tier of #367 to #376.

Model: opus-5-5

Owner's request, https://git.eeqj.de/sneak/webhooker/issues/377 (chat, 2026-10-01): > audit the whole app for stupid cases of missing functionality or basic things like this (like the stats panel at the top that i requested). What is missing: an `http` or `slack` target with retries that keeps failing trips its circuit breaker. Webhooker then stops attempting it until a cooldown ends (`internal/delivery/target_http.go`, which logs "circuit breaker open, skipping delivery"). Nothing in the UI shows this. In the audit, a target answering 500 tripped its breaker. On the webhook page, the target list still showed it as "Active" with nothing amiss. In the event log, its deliveries sat at "retrying" for minutes, several of them with "0 attempts" and "No attempts recorded yet". Nothing said why nothing was happening or when it would resume. The breaker's state already feeds a metric (`publishCircuitState`), but no page shows it. Definition of done: - On the webhook page, a target whose breaker is open or half-open shows that deliveries to it are paused, and until when: the time the cooldown ends, in UTC and relative. - In the event log, a delivery waiting on an open breaker says so, for example "waiting: target paused after repeated failures, resumes 20:05 UTC". It no longer shows a bare "retrying" with no attempts. - Tests: trip the breaker on a test target, then check that both pages show it, and that both stop showing it once the breaker closes. PRIORITY: from the owner's audit request of 1 October (https://git.eeqj.de/sneak/webhooker/issues/377), in the tier of https://git.eeqj.de/sneak/webhooker/issues/367 to https://git.eeqj.de/sneak/webhooker/issues/376. Model: opus-5-5
clawbot self-assigned this 2026-10-01 22:06:19 +02:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: sneak/webhooker#385