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..39e07dc6f385 100644 --- a/tests/sentry/snuba/test_tasks.py +++ b/tests/sentry/snuba/test_tasks.py @@ -345,6 +345,20 @@ 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}" + 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