Skip to content

🐛 fix(webhooks): preserve events across queue faults - #1853

Closed
gaborbernat wants to merge 1 commit into
tox-dev:mainfrom
gaborbernat:fix/webhook-queue-1476
Closed

gaborbernat wants to merge 1 commit into
tox-dev:mainfrom
gaborbernat:fix/webhook-queue-1476

Conversation

@gaborbernat

Copy link
Copy Markdown
Member

A committed PyPI or OCI mutation could lose its webhook when the first or a later target queue write failed, leaving no durable work for restart recovery.

Peryx now commits each webhook intent with its mutation, including a fixed target snapshot and delivery identities. The background worker writes missing target rows and retains the intent until fan-out completes, so restart recovery leaves existing rows intact.

Closes #1476

Peryx could commit a package mutation before queueing its webhook, so a queue
failure discarded the only delivery state.

Persist each event intent in the mutation transaction and give its target
deliveries fixed identities. The worker resumes missing targets after restart
and leaves committed delivery rows intact.

Closes tox-dev#1476
@gaborbernat gaborbernat added the bug Something isn't working label Aug 29, 2026
@gaborbernat gaborbernat self-assigned this Aug 29, 2026
@gaborbernat

Copy link
Copy Markdown
Member Author

Replaced by #1854 so the branch lives in tox-dev/peryx.

@codspeed

codspeed Bot commented Aug 29, 2026

Copy link
Copy Markdown

Merging this PR will not alter performance

✅ 23 untouched benchmarks
⏩ 139 skipped benchmarks1


Comparing gaborbernat:fix/webhook-queue-1476 (0615f7c) with main (811f476)

Open in CodSpeed

Footnotes

  1. 139 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Preserve webhooks when queue writes fail

1 participant