diff --git a/src/sentry/discover/compare_timeseries.py b/src/sentry/discover/compare_timeseries.py index 3efffc6711ed0e..34551cefb0ecc8 100644 --- a/src/sentry/discover/compare_timeseries.py +++ b/src/sentry/discover/compare_timeseries.py @@ -327,10 +327,12 @@ def assert_timeseries_close(aligned_timeseries, alert_rule): "confidence": values.get("confidence"), } - sentry_sdk.set_tag("false_positive_misfires", false_positive_misfire) - sentry_sdk.set_tag("false_negative_misfires", false_negative_misfire) - for trigger_action_type, count in trigger_action_types.items(): - sentry_sdk.set_tag(f"trigger_action_type.{trigger_action_type}", count) + with sentry_sdk.isolation_scope() as scope: + scope.set_tag("false_positive_misfires", false_positive_misfire) + scope.set_tag("false_negative_misfires", false_negative_misfire) + for trigger_action_type, count in trigger_action_types.items(): + scope.set_tag(f"trigger_action_type.{trigger_action_type}", count) + sentry_sdk.capture_message("False Misfires", level="info") if mismatches: with sentry_sdk.isolation_scope() as scope: diff --git a/tests/sentry/discover/test_compare_timeseries.py b/tests/sentry/discover/test_compare_timeseries.py index b5568105e8a397..07e712d0602ef4 100644 --- a/tests/sentry/discover/test_compare_timeseries.py +++ b/tests/sentry/discover/test_compare_timeseries.py @@ -176,8 +176,11 @@ def test_compare_mri_alert(self) -> None: result = compare_timeseries_for_alert_rule(alert_rule) assert result["skipped"] is True - @mock.patch("sentry.discover.compare_timeseries.sentry_sdk.set_tag") - def test_false_positive_misfires(self, mock_set_tag: mock.MagicMock) -> None: + @mock.patch("sentry.discover.compare_timeseries.sentry_sdk.isolation_scope") + def test_false_positive_misfires(self, mock_isolation_scope: mock.MagicMock) -> None: + mock_scope = mock.MagicMock() + mock_isolation_scope.return_value.__enter__.return_value = mock_scope + alert_rule = self.create_alert_rule( dataset=Dataset.PerformanceMetrics, query_type=SnubaQuery.Type.PERFORMANCE, @@ -192,11 +195,14 @@ def test_false_positive_misfires(self, mock_set_tag: mock.MagicMock) -> None: } assert_timeseries_close(aligned_timeseries=aligned_timeseries, alert_rule=alert_rule) - mock_set_tag.assert_any_call("false_positive_misfires", 1) - mock_set_tag.assert_any_call("false_negative_misfires", 0) + mock_scope.set_tag.assert_any_call("false_positive_misfires", 1) + mock_scope.set_tag.assert_any_call("false_negative_misfires", 0) + + @mock.patch("sentry.discover.compare_timeseries.sentry_sdk.isolation_scope") + def test_false_negative_misfires(self, mock_isolation_scope: mock.MagicMock) -> None: + mock_scope = mock.MagicMock() + mock_isolation_scope.return_value.__enter__.return_value = mock_scope - @mock.patch("sentry.discover.compare_timeseries.sentry_sdk.set_tag") - def test_false_negative_misfires(self, mock_set_tag: mock.MagicMock) -> None: alert_rule = self.create_alert_rule( dataset=Dataset.PerformanceMetrics, query_type=SnubaQuery.Type.PERFORMANCE, @@ -211,5 +217,5 @@ def test_false_negative_misfires(self, mock_set_tag: mock.MagicMock) -> None: } assert_timeseries_close(aligned_timeseries=aligned_timeseries, alert_rule=alert_rule) - mock_set_tag.assert_any_call("false_positive_misfires", 0) - mock_set_tag.assert_any_call("false_negative_misfires", 1) + mock_scope.set_tag.assert_any_call("false_positive_misfires", 0) + mock_scope.set_tag.assert_any_call("false_negative_misfires", 1)