-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Open
Labels
Description
Problem
When an EventSubscription includes multiple destinations that resolve to overlapping recipients, users receive duplicate notifications. Each destination is processed independently, so recipients appearing in more than one destination get the same notification multiple times.
Example:
- Destination 1: Email + Owners →
[email protected] - Destination 2: Email + Mentions →
{[email protected], [email protected]}
Result:[email protected]receives two identical emails.
Root Cause
There is no global recipient deduplication across destinations.
Each destination resolves recipients separately, and internal deduplication only occurs within a single destination. No mechanism tracks recipients already notified during the same event cycle.
Key Flow:
createEventsWithReceivers()attaches all destination IDs to each eventpublishEvents()iterates destinations sequentially- Each publisher (
EmailPublisher,SlackPublisher, etc.) resolves recipients independently RecipientResolverreturns a per-destination recipient set, unaware of other destinations- No cross-destination deduplication is performed
Relevant Code
AbstractEventConsumer.java(307–315):createEventsWithReceivers()AbstractEventConsumer.java(195–205):publishEvents()EmailPublisher,SlackEventPublisher, etc.: Per-destination recipient resolutionRecipientResolver.java: Independent recipient sets per destination
Impact
- Users receive duplicate notifications when multiple destinations overlap
- Affects Email, Slack, MS Teams, GChat, Webhooks
- Occurs when the same transport type is used in multiple destinations
Metadata
Metadata
Assignees
Labels
Type
Projects
Status
Validation 🧐