Skip to content

feat: add transactional outbox for webhook emission (exactly-once) - #901

Merged
thlpkee20-wq merged 2 commits into
RevoraOrg:masterfrom
Sulamoney222:feat/webhook-transactional-outbox
Aug 31, 2026
Merged

feat: add transactional outbox for webhook emission (exactly-once)#901
thlpkee20-wq merged 2 commits into
RevoraOrg:masterfrom
Sulamoney222:feat/webhook-transactional-outbox

Conversation

@Sulamoney222

Copy link
Copy Markdown

Closes #853

Makes WebhookService event emission exactly-once via the transactional outbox.

  • Route outbox event_id through the delivery payload so the receiver webhookEventOrdering can dedupe retries.
  • WebhookService.emit(event, data, client) writes the outbox row atomically via the caller PoolClient when provided.
  • Added enqueueWebhookOutboxEvents helper in src/db/transaction.ts.
  • Boot the existing OutboxDispatcher when OUTBOX_DISPATCHER_ENABLED=true.
  • Tests added; lint and typecheck clean on changed files.
    Verification: 35/35 targeted tests pass; pre-existing failures on upstream master are unrelated.

@drips-wave

drips-wave Bot commented Aug 30, 2026

Copy link
Copy Markdown

@Sulamoney222 Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits.

You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀

Learn more about application limits

@thlpkee20-wq
thlpkee20-wq merged commit 2995ef4 into RevoraOrg:master Aug 31, 2026
1 check 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.

Add transactional outbox so WebhookService event emission is exactly-once

2 participants