@@ -802,6 +802,10 @@ def filter_dedup(*, db_session: Session, signal_instance: SignalInstance) -> Sig
802
802
Returns:
803
803
SignalInstance: The filtered signal instance.
804
804
"""
805
+ # Skip deduplication on canary signals
806
+ if signal_instance .canary :
807
+ return signal_instance
808
+
805
809
if not signal_instance .signal .filters :
806
810
default_dedup_window = datetime .now (timezone .utc ) - timedelta (hours = 1 )
807
811
instance = (
@@ -811,6 +815,7 @@ def filter_dedup(*, db_session: Session, signal_instance: SignalInstance) -> Sig
811
815
SignalInstance .created_at >= default_dedup_window ,
812
816
SignalInstance .id != signal_instance .id ,
813
817
SignalInstance .case_id .isnot (None ), # noqa
818
+ ~ SignalInstance .canary , # Ignore canary signals in deduplication
814
819
)
815
820
.with_entities (SignalInstance .case_id )
816
821
.order_by (desc (SignalInstance .created_at ))
@@ -830,7 +835,8 @@ def filter_dedup(*, db_session: Session, signal_instance: SignalInstance) -> Sig
830
835
continue
831
836
832
837
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
834
840
)
835
841
# First join entities
836
842
query = query .join (SignalInstance .entities )
0 commit comments