From 83c27681932de04136ac4e63fcaf36d9dcd8ea30 Mon Sep 17 00:00:00 2001 From: "sentry[bot]" <39604003+sentry[bot]@users.noreply.github.com> Date: Sun, 25 Oct 2026 10:47:41 +0000 Subject: [PATCH 1/2] fix(alerts): Skip issue validation when deleting old subscription during update --- src/sentry/snuba/tasks.py | 1 + tests/sentry/snuba/test_tasks.py | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/src/sentry/snuba/tasks.py b/src/sentry/snuba/tasks.py index 86969cd6894a..1afad7a81e2f 100644 --- a/src/sentry/snuba/tasks.py +++ b/src/sentry/snuba/tasks.py @@ -149,6 +149,7 @@ def update_subscription_in_snuba( [subscription.project_id], None, {"organization_id": subscription.project.organization_id}, + skip_field_validation_for_entity_subscription_deletion=True, ), ) ) diff --git a/tests/sentry/snuba/test_tasks.py b/tests/sentry/snuba/test_tasks.py index 5304a190222e..e32978471f12 100644 --- a/tests/sentry/snuba/test_tasks.py +++ b/tests/sentry/snuba/test_tasks.py @@ -346,6 +346,21 @@ def test_eap_rpc_query_count(self) -> None: assert not QuerySubscription.objects.filter(id=sub.id).exists() + def test_invalid_subscription_query(self) -> None: + """Updating a subscription whose query references a deleted issue should not raise.""" + subscription_id = f"1/{uuid4().hex}" + sub = self.create_subscription( + QuerySubscription.Status.UPDATING, + subscription_id=subscription_id, + query="issue:INVALID-1", + ) + update_subscription_in_snuba(sub.id) + sub = QuerySubscription.objects.get(id=sub.id) + assert sub.status == QuerySubscription.Status.ACTIVE.value + assert sub.subscription_id is not None + assert sub.subscription_id != subscription_id + + class DeleteSubscriptionFromSnubaTest(BaseSnubaTaskTest): expected_status = QuerySubscription.Status.DELETING task = delete_subscription_from_snuba # type: ignore[assignment] From a7ababb1d14c0ac7bb306a2cdab44b90e4f20320 Mon Sep 17 00:00:00 2001 From: "getsantry[bot]" <66042841+getsantry[bot]@users.noreply.github.com> Date: Sun, 25 Oct 2026 10:48:43 +0000 Subject: [PATCH 2/2] :hammer_and_wrench: apply pre-commit fixes --- tests/sentry/snuba/test_tasks.py | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/sentry/snuba/test_tasks.py b/tests/sentry/snuba/test_tasks.py index e32978471f12..39e07dc6f385 100644 --- a/tests/sentry/snuba/test_tasks.py +++ b/tests/sentry/snuba/test_tasks.py @@ -345,7 +345,6 @@ def test_eap_rpc_query_count(self) -> None: delete_subscription_from_snuba(sub.id) assert not QuerySubscription.objects.filter(id=sub.id).exists() - def test_invalid_subscription_query(self) -> None: """Updating a subscription whose query references a deleted issue should not raise.""" subscription_id = f"1/{uuid4().hex}"