Skip to content

Commit e46fa02

Browse files
authored
fix(signal): don't dedup on canary signals (#6026)
* fix(signal): don't dedup on canary signals * fix(signal): don't dedup on canary signals * lint: fix ruff tests * lint(ruff): fix the service checks
1 parent f5028ef commit e46fa02

File tree

2 files changed

+330
-112
lines changed

2 files changed

+330
-112
lines changed

src/dispatch/signal/service.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -802,6 +802,10 @@ def filter_dedup(*, db_session: Session, signal_instance: SignalInstance) -> Sig
802802
Returns:
803803
SignalInstance: The filtered signal instance.
804804
"""
805+
# Skip deduplication on canary signals
806+
if signal_instance.canary:
807+
return signal_instance
808+
805809
if not signal_instance.signal.filters:
806810
default_dedup_window = datetime.now(timezone.utc) - timedelta(hours=1)
807811
instance = (
@@ -811,6 +815,7 @@ def filter_dedup(*, db_session: Session, signal_instance: SignalInstance) -> Sig
811815
SignalInstance.created_at >= default_dedup_window,
812816
SignalInstance.id != signal_instance.id,
813817
SignalInstance.case_id.isnot(None), # noqa
818+
~SignalInstance.canary, # Ignore canary signals in deduplication
814819
)
815820
.with_entities(SignalInstance.case_id)
816821
.order_by(desc(SignalInstance.created_at))
@@ -830,7 +835,8 @@ def filter_dedup(*, db_session: Session, signal_instance: SignalInstance) -> Sig
830835
continue
831836

832837
query = db_session.query(SignalInstance).filter(
833-
SignalInstance.signal_id == signal_instance.signal_id
838+
SignalInstance.signal_id == signal_instance.signal_id,
839+
~SignalInstance.canary, # Ignore canary signals in deduplication
834840
)
835841
# First join entities
836842
query = query.join(SignalInstance.entities)

0 commit comments

Comments
 (0)