diff --git a/src/sentry/snuba/tasks.py b/src/sentry/snuba/tasks.py index 59fca17bfa32..88a5a13e68ec 100644 --- a/src/sentry/snuba/tasks.py +++ b/src/sentry/snuba/tasks.py @@ -276,6 +276,10 @@ def _create_snql_in_snuba( ) -> str: body = { "project_id": subscription.project_id, + # Snuba attributes the resulting queries to this organization. Metrics entities + # additionally send a legacy `organization` key via get_entity_extra_params, + # which their subscription processors are configured with. + "organization_id": subscription.project.organization_id, "query": str(snql_query.query), "time_window": snuba_query.time_window, "resolution": snuba_query.resolution, diff --git a/tests/sentry/snuba/test_tasks.py b/tests/sentry/snuba/test_tasks.py index e3ca87fc9bf3..7d64788a2b52 100644 --- a/tests/sentry/snuba/test_tasks.py +++ b/tests/sentry/snuba/test_tasks.py @@ -160,6 +160,13 @@ def test_status_join(self) -> None: assert sub.status == QuerySubscription.Status.ACTIVE.value assert sub.subscription_id is not None + def test_organization_id(self) -> None: + sub = self.create_subscription(QuerySubscription.Status.CREATING) + with patch.object(_snuba_pool, "urlopen", side_effect=_snuba_pool.urlopen) as urlopen: + create_subscription_in_snuba(sub.id) + request_body = json.loads(urlopen.call_args[1]["body"]) + assert request_body["organization_id"] == self.organization.id + def test_group_id(self) -> None: group_id = 1234 sub = self.create_subscription(