Skip to content
INC-240806-01Resolved

Webhook retries pushed payments-worker p95 past its rolling baseline

One deploy, two UTC windows, and the trace evidence that isolated the retry loop.

The rollback held through a complete five-minute verification window.

Review deploy diffrefreshed 14:31:09Z · UTC

Incident p95

912 ms

+611 ms

baseline p95
301 ms · 24h rolling
service
payments-worker · prod
onset
14:02:11Z · UTC
24h rolling baseline
2026-08-05 14:01:47 UTC to 2026-08-06 14:01:46 UTC
p95 · ms · 184,240 of 184,240 samples
incident window
2026-08-06 14:02:11 UTC to 2026-08-06 14:18:00 UTC
p95 · ms · 2,410 of 2,437 samples

Current health refreshed 14:31:09Z.

Trace evidence

Baseline against incident

The retry span moved by 959 ms while database and flush time held.

http.server

463 ms → 1,284 ms

webhook.retry

190 ms → 1,149 ms

pg.query

118 ms → 118 ms

signal.flush

2 ms → 2 ms

Dashed baseline, solid incident, one scale to 1,284 ms
Exact span durations for trace 4b21f0c9. The 2 ms flush is drawn above at a 1 px minimum marker.
SpanBaselineIncidentChange
http.server463 ms1,284 ms+821 ms
webhook.retry190 ms1,149 ms+959 ms
pg.query118 ms118 ms+0 ms
signal.flush2 ms2 ms+0 ms

Release evidence

The deploy that changed

The selected release raised retry attempts, backoff, and the total budget in one commit.

Retry configuration before, in, and after the selected deploy
FieldBefore8f21c4eRollback
retry.maxAttempts131
retry.backoff0 ms380 ms0 ms
retry.budget250 ms1,200 ms250 ms
retry.scopefailed webhooksfailed webhooksfailed webhooks

UTC sequence

Evidence in order

Times are normalized to UTC. Collector skew was +3.2 seconds before correction.

  1. Deploy01

    Deploy landed

    8f21c4e by @nadia changed the webhook retry budget.

  2. Impact02

    Regression began

    payments-worker p95 left its 24h rolling envelope 24 seconds later.

  3. Evidence03

    Deploy attributed

    The release-window distance ranked 8f21c4e above two older deploys.

  4. Evidence04

    Retry loop identified

    Aligned traces isolated 1,149 ms inside webhook.retry.

  5. Recovery05

    Rollback applied

    4b9e2d1 restored the previous retry budget.

  6. Recovery06

    Incident resolved

    Five complete minutes held p95 at 309 ms and errors at 0.05%.

Failure groups

The retry loop dominates

Complete traces are ranked by matched signature, with counts and shares kept visible.

Aggregation

Count of complete incident-window traces grouped by normalized error signature. Partial traces are excluded.
  1. 1

    Repeated webhook retries

    1,412 · 58.6%

    Three attempts with 380 ms backoff dominate the incident trace.

  2. 2

    Retry budget exhausted

    612 · 25.4%

    The 1,200 ms budget ends before the third attempt returns.

  3. 3

    Downstream timeout

    386 · 16.0%

    The receiver times out after the worker has already retried.

Resolution receipt

Recovery, with receipts

Rollback, verification, and current health are separate facts with separate timestamps.

rollback
4b9e2d1
applied
14:21:10Z UTC
resolved
14:28:11Z UTC
verification
14:23:11Z–14:28:11Z UTC
verified p95
309 ms
verified samples
17,842

Current health: healthy

Health refreshed 14:31:09Z UTC.