Skip to content

fix: retry id collision for multi-destination events#609

Merged
alexluong merged 3 commits into
mainfrom
retryid
Jan 6, 2026
Merged

fix: retry id collision for multi-destination events#609
alexluong merged 3 commits into
mainfrom
retryid

Conversation

@alexluong

@alexluong alexluong commented Jan 6, 2026

Copy link
Copy Markdown
Collaborator

Fix: Retry ID collision for multi-destination events

Problem

When a single event fans out to multiple destinations and all deliveries fail, only one retry was scheduled. The others were silently overwritten because GetRetryID() returned only event.ID, causing all retries to share the same scheduler task ID.

Solution

Changed GetRetryID() to return event.ID + ":" + destination.ID, making retry IDs unique per event+destination combination.

We use this composite key (not DeliveryEvent.ID) because manual retries create a new DeliveryEvent but must still be able to cancel pending automatic retries for the same event+destination.

Tests

  • TestMessageHandler_RetryID_MultipleDestinations - verifies unique retry IDs for fan-out
  • TestManualDelivery_Success - verifies manual retry cancels the correct pending retry

@vercel

vercel Bot commented Jan 6, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Review Updated (UTC)
outpost-docs Ready Ready Preview, Comment Jan 6, 2026 5:47am
outpost-website Ready Ready Preview, Comment Jan 6, 2026 5:47am

@alexluong alexluong changed the title fix: duplicate retry id among event deliveries fix: retry id collision for multi-destination events Jan 6, 2026
@alexluong alexluong merged commit 08f422c into main Jan 6, 2026
5 of 6 checks passed
@alexluong alexluong deleted the retryid branch January 6, 2026 13:26
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.

2 participants