Skip to content

fix: manual retry blocked by idempotency after first success#670

Merged
alexluong merged 6 commits into
mainfrom
fix-manual-retry
Feb 2, 2026
Merged

fix: manual retry blocked by idempotency after first success#670
alexluong merged 6 commits into
mainfrom
fix-manual-retry

Conversation

@alexluong

@alexluong alexluong commented Feb 2, 2026

Copy link
Copy Markdown
Collaborator

Problem

Calling POST /retry for the same event+destination a second time silently does nothing. The delivery task starts processing but produces no delivery.

This is a regression from #653: removing DeliveryEvent.ID made the manual retry idempotency key static (event_id:destination_id:manual). Once the first retry succeeds, the key is marked "processed" for 24h, silently blocking all subsequent retries.

Solution

Add a Nonce field to DeliveryTask, generated per manual retry request. The nonce is included in the idempotency key so separate /retry calls get unique keys, while MQ redeliveries of the same message are still deduplicated.

Other changes

  • Log when a delivery task is skipped due to idempotency ("delivery task skipped (idempotent)")

Test plan

  • Unit test: TestManualDelivery_DuplicateRetry
  • E2E test: TestRetry_DuplicateManualRetryExecutesBoth
  • Full deliverymq test suite passes

@vercel

vercel Bot commented Feb 2, 2026

Copy link
Copy Markdown

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

Project Deployment Actions Updated (UTC)
outpost-docs Ready Ready Preview, Comment Feb 2, 2026 2:56pm
outpost-website Ready Ready Preview, Comment Feb 2, 2026 2:56pm

Request Review

@vercel vercel Bot temporarily deployed to Preview – outpost-docs February 2, 2026 12:43 Inactive
@vercel vercel Bot temporarily deployed to Preview – outpost-website February 2, 2026 12:43 Inactive
@alexluong alexluong changed the title test: duplicate manual retry fix: manual retry blocked by idempotency after first success Feb 2, 2026
@vercel vercel Bot temporarily deployed to Preview – outpost-docs February 2, 2026 12:53 Inactive
@vercel vercel Bot temporarily deployed to Preview – outpost-website February 2, 2026 12:53 Inactive
@vercel vercel Bot temporarily deployed to Preview – outpost-website February 2, 2026 12:55 Inactive
@vercel vercel Bot temporarily deployed to Preview – outpost-docs February 2, 2026 12:56 Inactive
Base automatically changed from portal to refactor-auth February 2, 2026 14:15
Base automatically changed from refactor-auth to main February 2, 2026 14:16
@vercel vercel Bot temporarily deployed to Preview – outpost-website February 2, 2026 14:27 Inactive
@vercel vercel Bot temporarily deployed to Preview – outpost-docs February 2, 2026 14:28 Inactive
@vercel vercel Bot temporarily deployed to Preview – outpost-website February 2, 2026 14:55 Inactive
@vercel vercel Bot temporarily deployed to Preview – outpost-docs February 2, 2026 14:56 Inactive
@alexluong alexluong merged commit d0fa4ce into main Feb 2, 2026
4 checks passed
@alexluong alexluong deleted the fix-manual-retry branch February 2, 2026 14:58
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