ADR-0006: Per-Handler Idempotency Keys
ADR-0006: Per-Handler Idempotency Keys
Section titled “ADR-0006: Per-Handler Idempotency Keys”- Status: Accepted
- Date: 2026-05-01
- Decision makers: Scott Schreckengaust
Context and Problem Statement
Section titled “Context and Problem Statement”Handler-level idempotency was added to prevent duplicate side effects. Initial implementation used delivery:<deliveryId> as the key. But EventBridge delivers events to ALL matching rules — the stub handler (catch-all) and comment handler (issue_comment rule) both receive issue_comment events. Whichever ran first blocked the other.
Decision
Section titled “Decision”Use delivery:<handlerName>:<deliveryId> as the idempotency key. Each handler has its own namespace in the Jobs table.
Consequences
Section titled “Consequences”Positive
Section titled “Positive”- Multiple handlers can independently process the same event without blocking each other
- Idempotency still prevents duplicate processing within a single handler
Negative
Section titled “Negative”- More DynamoDB writes (one per handler per event)
- Negligible cost impact
References
Section titled “References”- PR #24
- Issue #12