Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions riotfile.py
Original file line number Diff line number Diff line change
Expand Up @@ -1195,6 +1195,7 @@ def select_pys(min_version=MIN_PYTHON_VERSION, max_version=MAX_PYTHON_VERSION):
"~=1.7.0",
"~=1.8.0",
"~=1.9.0",
"~=1.10.0",
latest,
],
# https://github.com/rq/rq/issues/1469 rq [1.0,1.8] is incompatible with click 8.0+
Expand Down
10 changes: 9 additions & 1 deletion tests/contrib/rq/test_rq.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@
# Span data which isn't static to ignore in the snapshots.
snapshot_ignores = ["meta.job.id", "meta.error.stack"]

rq_version = tuple(int(x) for x in rq.__version__.split(".")[:3])


@pytest.fixture()
def connection():
Expand Down Expand Up @@ -53,8 +55,14 @@ def test_sync_queue_enqueue(sync_queue):
sync_queue.enqueue(job_add1, 1)


@snapshot(ignores=snapshot_ignores)
@snapshot(ignores=snapshot_ignores, variants={"": rq_version >= (1, 10, 1), "pre_1_10_1": rq_version < (1, 10, 1)})
def test_queue_failing_job(sync_queue):
# Exception raising behavior was changed in 1.10.1
# https://github.com/rq/rq/commit/93f34c796f541ea4b1c156426d6524df05753826
if rq_version >= (1, 10, 1):
sync_queue.enqueue(job_fail)
return

with pytest.raises(Exception):
sync_queue.enqueue(job_fail)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,25 +7,21 @@
"span_id": 1,
"parent_id": 0,
"type": "worker",
"error": 1,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should we consider this a breaking change?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

discussed offline, it is but it's only for new versions of rq and the error information is still present on the child span.

"meta": {
"error.msg": "error",
"error.stack": "Traceback (most recent call last):\n File \"/Users/kyle.verhoog/dev/dd-trace-py/ddtrace/contrib/rq/__init__.py\", line 140, in traced_queue_enqueue_job\n return func(*args, **kwargs)\n File \"/Users/kyle.verhoog/dev/dd-trace-py/.riot/venv_py395_click712_rq~100/lib/python3.9/site-packages/rq/queue.py\", line 356, in enqueue_job\n job = self.run_job(job)\n File \"/Users/kyle.verhoog/dev/dd-trace-py/.riot/venv_py395_click712_rq~100/lib/python3.9/site-packages/rq/queue.py\", line 282, in run_job\n job.perform()\n File \"/Users/kyle.verhoog/dev/dd-trace-py/ddtrace/contrib/trace_utils.py\", line 162, in wrapper\n return func(mod, pin, wrapped, instance, args, kwargs)\n File \"/Users/kyle.verhoog/dev/dd-trace-py/ddtrace/contrib/rq/__init__.py\", line 193, in traced_job_perform\n return func(*args, **kwargs)\n File \"/Users/kyle.verhoog/dev/dd-trace-py/.riot/venv_py395_click712_rq~100/lib/python3.9/site-packages/rq/job.py\", line 588, in perform\n self._result = self._execute()\n File \"/Users/kyle.verhoog/dev/dd-trace-py/.riot/venv_py395_click712_rq~100/lib/python3.9/site-packages/rq/job.py\", line 594, in _execute\n return self.func(*self.args, **self.kwargs)\n File \"/Users/kyle.verhoog/dev/dd-trace-py/tests/contrib/rq/jobs.py\", line 10, in job_fail\n raise MyException(\"error\")\ntests.contrib.rq.jobs.MyException: error\n",
"error.type": "tests.contrib.rq.jobs.MyException",
"job.func_name": "tests.contrib.rq.jobs.job_fail",
"job.id": "41b97d3b-3231-4c5a-b317-6c13a6926749",
"job.id": "b916a7ab-9289-4c07-a40d-260e96c69f63",
"queue.name": "sync-q",
"runtime-id": "2fae27a28fd644a6bd2fbbd179813bd4"
"runtime-id": "5b62413a62ad44468e21e09f3dc941d6"
},
"metrics": {
"_dd.agent_psr": 1.0,
"_dd.top_level": 1,
"_dd.tracer_kr": 1.0,
"_sampling_priority_v1": 1,
"system.pid": 67067
"system.pid": 4083
},
"duration": 8260000,
"start": 1632150770649318000
"duration": 9563000,
"start": 1638903827586533000
},
{
"name": "rq.job.perform",
Expand All @@ -37,10 +33,10 @@
"error": 1,
"meta": {
"error.msg": "error",
"error.stack": "Traceback (most recent call last):\n File \"/Users/kyle.verhoog/dev/dd-trace-py/ddtrace/contrib/rq/__init__.py\", line 193, in traced_job_perform\n return func(*args, **kwargs)\n File \"/Users/kyle.verhoog/dev/dd-trace-py/.riot/venv_py395_click712_rq~100/lib/python3.9/site-packages/rq/job.py\", line 588, in perform\n self._result = self._execute()\n File \"/Users/kyle.verhoog/dev/dd-trace-py/.riot/venv_py395_click712_rq~100/lib/python3.9/site-packages/rq/job.py\", line 594, in _execute\n return self.func(*self.args, **self.kwargs)\n File \"/Users/kyle.verhoog/dev/dd-trace-py/tests/contrib/rq/jobs.py\", line 10, in job_fail\n raise MyException(\"error\")\ntests.contrib.rq.jobs.MyException: error\n",
"error.stack": "Traceback (most recent call last):\n File \"/Users/brett.langdon/datadog/dd-trace-py/ddtrace/contrib/rq/__init__.py\", line 193, in traced_job_perform\n return func(*args, **kwargs)\n File \"/Users/brett.langdon/datadog/dd-trace-py/.riot/venv_py3100_rq_click712/lib/python3.10/site-packages/rq/job.py\", line 821, in perform\n self._result = self._execute()\n File \"/Users/brett.langdon/datadog/dd-trace-py/.riot/venv_py3100_rq_click712/lib/python3.10/site-packages/rq/job.py\", line 844, in _execute\n result = self.func(*self.args, **self.kwargs)\n File \"/Users/brett.langdon/datadog/dd-trace-py/tests/contrib/rq/jobs.py\", line 10, in job_fail\n raise MyException(\"error\")\ntests.contrib.rq.jobs.MyException: error\n",
"error.type": "tests.contrib.rq.jobs.MyException",
"job.id": "41b97d3b-3231-4c5a-b317-6c13a6926749"
"job.id": "b916a7ab-9289-4c07-a40d-260e96c69f63"
},
"duration": 2357000,
"start": 1632150770654147000
"duration": 2109000,
"start": 1638903827592392000
}]]
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
[[
{
"name": "rq.queue.enqueue_job",
"service": "rq",
"resource": "tests.contrib.rq.jobs.job_fail",
"trace_id": 0,
"span_id": 1,
"parent_id": 0,
"type": "worker",
"error": 1,
"meta": {
"error.msg": "error",
"error.stack": "Traceback (most recent call last):\n File \"/Users/brett.langdon/datadog/dd-trace-py/ddtrace/contrib/rq/__init__.py\", line 140, in traced_queue_enqueue_job\n return func(*args, **kwargs)\n File \"/Users/brett.langdon/datadog/dd-trace-py/.riot/venv_py3100_rq~190_click712/lib/python3.10/site-packages/rq/queue.py\", line 570, in enqueue_job\n job = self.run_job(job)\n File \"/Users/brett.langdon/datadog/dd-trace-py/.riot/venv_py3100_rq~190_click712/lib/python3.10/site-packages/rq/queue.py\", line 448, in run_job\n job.perform()\n File \"/root/project/ddtrace/contrib/trace_utils.py\", line 162, in wrapper\n File \"/Users/brett.langdon/datadog/dd-trace-py/ddtrace/contrib/rq/__init__.py\", line 193, in traced_job_perform\n return func(*args, **kwargs)\n File \"/Users/brett.langdon/datadog/dd-trace-py/.riot/venv_py3100_rq~190_click712/lib/python3.10/site-packages/rq/job.py\", line 749, in perform\n self._result = self._execute()\n File \"/Users/brett.langdon/datadog/dd-trace-py/.riot/venv_py3100_rq~190_click712/lib/python3.10/site-packages/rq/job.py\", line 772, in _execute\n result = self.func(*self.args, **self.kwargs)\n File \"/Users/brett.langdon/datadog/dd-trace-py/tests/contrib/rq/jobs.py\", line 10, in job_fail\n raise MyException(\"error\")\ntests.contrib.rq.jobs.MyException: error\n",
"error.type": "tests.contrib.rq.jobs.MyException",
"job.func_name": "tests.contrib.rq.jobs.job_fail",
"job.id": "0775ce83-6cb6-454b-aed1-77bed1a66f8f",
"queue.name": "sync-q",
"runtime-id": "e60df3a2728d440a8398fcbd9566b7f1"
},
"metrics": {
"_dd.agent_psr": 1.0,
"_dd.top_level": 1,
"_dd.tracer_kr": 1.0,
"_sampling_priority_v1": 1,
"system.pid": 4490
},
"duration": 9413000,
"start": 1638903903477358000
},
{
"name": "rq.job.perform",
"service": "rq",
"resource": "tests.contrib.rq.jobs.job_fail",
"trace_id": 0,
"span_id": 2,
"parent_id": 1,
"error": 1,
"meta": {
"error.msg": "error",
"error.stack": "Traceback (most recent call last):\n File \"/Users/brett.langdon/datadog/dd-trace-py/ddtrace/contrib/rq/__init__.py\", line 193, in traced_job_perform\n return func(*args, **kwargs)\n File \"/Users/brett.langdon/datadog/dd-trace-py/.riot/venv_py3100_rq~190_click712/lib/python3.10/site-packages/rq/job.py\", line 749, in perform\n self._result = self._execute()\n File \"/Users/brett.langdon/datadog/dd-trace-py/.riot/venv_py3100_rq~190_click712/lib/python3.10/site-packages/rq/job.py\", line 772, in _execute\n result = self.func(*self.args, **self.kwargs)\n File \"/Users/brett.langdon/datadog/dd-trace-py/tests/contrib/rq/jobs.py\", line 10, in job_fail\n raise MyException(\"error\")\ntests.contrib.rq.jobs.MyException: error\n",
"error.type": "tests.contrib.rq.jobs.MyException",
"job.id": "0775ce83-6cb6-454b-aed1-77bed1a66f8f"
},
"duration": 2844000,
"start": 1638903903483183000
}]]