Skip to content

docs(backend): define webhook safe recovery and retry semantics (SSB-… - #1429

Merged
github-actions[bot] merged 1 commit into
ritik4ever:mainfrom
cleank0de:fix/recover-safely-webhook-delivery
Oct 25, 2026
Merged

github-actions[bot] merged 1 commit into
ritik4ever:mainfrom
cleank0de:fix/recover-safely-webhook-delivery

Conversation

@cleank0de

Copy link
Copy Markdown
Contributor

Summary

Document and formalize safe recovery, retry, and dead-letter rollback semantics for the Webhook delivery workflow (duplicate delivery after timeout and temporary 5xx responses).

Project Area: backend
Batch ID: SSB-2026-152

Key Invariants & Semantics

  • Absence of Duplicate Money-Moving Effects: Outbound webhook delivery operates strictly after stream lifecycle and money movements commit. Webhook retries never re-trigger, simulate, or duplicate on-chain Soroban transactions, token transfers, escrow mutations, or stream events.
  • Explicit Retry Path on Temporary 5xx and Timeouts: When an endpoint times out or returns a temporary 5xx (500, 502, 503, 504), the worker retains the active delivery row in pending status and schedules a retry using configured backoff intervals (5s, 15s, 60s, 300s, 900s). Every retry re-sends the identical Idempotency-Key (stellar-stream-<delivery id>) header and exact canonical JSON body so endpoints can safely deduplicate received requests.
  • Explicit Dead-Letter Rollback Path: When attempts reach max_attempts without a 2xx response, the delivery is removed from webhook_deliveries and moved to webhook_dead_letters in a single transaction. No duplicate entries or dangling delivery rows remain.

Changes

  • Updated docs/webhook-monitoring.md with explicit safe recovery and rollback semantics for SSB-2026-152.

Closes #1095

@vercel

vercel Bot commented Oct 25, 2026

Copy link
Copy Markdown

@cleank0de is attempting to deploy a commit to the ritik4ever's projects Team on Vercel.

A member of the Team first needs to authorize it.

@coderabbitai

coderabbitai Bot commented Oct 25, 2026

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 939b8813-9579-4a34-b4d9-118d541bb22e
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions
github-actions Bot merged commit 5fd80ab into ritik4ever:main Oct 25, 2026
2 of 3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[RELIABILITY] Recover safely in Webhook delivery

1 participant