diff --git a/sentry_sdk/integrations/arq.py b/sentry_sdk/integrations/arq.py index da03bafb8b..3488457e20 100644 --- a/sentry_sdk/integrations/arq.py +++ b/sentry_sdk/integrations/arq.py @@ -119,7 +119,11 @@ async def _sentry_run_job(self: "Worker", job_id: str, score: int) -> None: SPANDATA.MESSAGING_MESSAGE_ID: job_id, }, parent_span=None, - ): + ) as span: + if self.queue_name is not None: + span.set_attribute( + SPANDATA.MESSAGING_DESTINATION_NAME, self.queue_name + ) return await old_run_job(self, job_id, score) transaction = Transaction( @@ -130,7 +134,9 @@ async def _sentry_run_job(self: "Worker", job_id: str, score: int) -> None: origin=ArqIntegration.origin, ) - with sentry_sdk.start_transaction(transaction): + with sentry_sdk.start_transaction(transaction) as span: + if self.queue_name is not None: + span.set_data(SPANDATA.MESSAGING_DESTINATION_NAME, self.queue_name) return await old_run_job(self, job_id, score) Worker.run_job = _sentry_run_job diff --git a/tests/integrations/arq/test_arq.py b/tests/integrations/arq/test_arq.py index 28008e1542..fb40018d2a 100644 --- a/tests/integrations/arq/test_arq.py +++ b/tests/integrations/arq/test_arq.py @@ -11,6 +11,7 @@ import sentry_sdk from sentry_sdk import get_client, start_transaction +from sentry_sdk.consts import SPANDATA from sentry_sdk.integrations.arq import ArqIntegration @@ -364,6 +365,10 @@ async def division(_, a, b=0): division_span = next(span for span in task_spans if span["name"] == "division") assert division_span["attributes"]["sentry.span.source"] == "task" + assert ( + division_span["attributes"][SPANDATA.MESSAGING_DESTINATION_NAME] + == worker.queue_name + ) assert any(span["name"] == "cron:division" for span in task_spans) else: @@ -410,6 +415,10 @@ async def division(_, a, b=0): assert func_event["type"] == "transaction" assert func_event["transaction"] == "division" assert func_event["transaction_info"] == {"source": "task"} + assert ( + func_event["contexts"]["trace"]["data"][SPANDATA.MESSAGING_DESTINATION_NAME] + == worker.queue_name + ) assert "arq_task_id" in func_event["tags"] assert "arq_task_retry" in func_event["tags"]