Skip to content

Commit 5614351

Browse files
authored
Set operation for Job spans (#798)
* set TrackedRequest.operation when Job spans created * bump version patch
1 parent f53ab2a commit 5614351

11 files changed

Lines changed: 27 additions & 5 deletions

File tree

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333

3434
setup(
3535
name="scout_apm",
36-
version="3.2.0",
36+
version="3.2.1",
3737
description="Scout Application Performance Monitoring Agent",
3838
long_description=long_description,
3939
long_description_content_type="text/markdown",

src/scout_apm/api/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ def start(cls, kind, name, tags=None):
9797
operation = text(kind) + "/" + text(name)
9898

9999
tracked_request = TrackedRequest.instance()
100+
tracked_request.operation = operation
100101
tracked_request.is_real_request = True
101102
span = tracked_request.start_span(
102103
operation=operation, should_capture_backtrace=False

src/scout_apm/celery.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,9 @@ def task_prerun_callback(task=None, **kwargs):
5454
tracked_request.tag("routing_key", delivery_info.get("routing_key", "unknown"))
5555
tracked_request.tag("queue", delivery_info.get("queue", "unknown"))
5656

57-
tracked_request.start_span(operation=("Job/" + task.name))
57+
operation = "Job/" + task.name
58+
tracked_request.start_span(operation=operation)
59+
tracked_request.operation = operation
5860

5961

6062
def task_postrun_callback(task=None, **kwargs):

src/scout_apm/dramatiq.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,9 @@ def before_process_message(self, broker, message):
1717
tracked_request = TrackedRequest.instance()
1818
tracked_request.tag("queue", message.queue_name)
1919
tracked_request.tag("message_id", message.message_id)
20-
tracked_request.start_span(operation="Job/" + message.actor_name)
20+
operation = "Job/" + message.actor_name
21+
tracked_request.start_span(operation=operation)
22+
tracked_request.operation = operation
2123

2224
def after_process_message(self, broker, message, result=None, exception=None):
2325
if self._do_nothing:

src/scout_apm/huey.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ def scout_on_pre_execute(task):
3030

3131
operation = "Job/{}.{}".format(task.__module__, task.__class__.__name__)
3232
tracked_request.start_span(operation=operation)
33+
tracked_request.operation = operation
3334

3435

3536
def scout_on_post_execute(task, task_value, exception):

src/scout_apm/rq.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,9 @@ def wrap_perform(wrapped, instance, args, kwargs):
6767
tracked_request.tag("queue", instance.origin)
6868
queue_time = (dt.datetime.utcnow() - instance.enqueued_at).total_seconds()
6969
tracked_request.tag("queue_time", queue_time)
70-
71-
with tracked_request.span(operation="Job/{}".format(instance.func_name)):
70+
operation = "Job/{}".format(instance.func_name)
71+
tracked_request.operation = operation
72+
with tracked_request.span(operation=operation):
7273
try:
7374
return wrapped(*args, **kwargs)
7475
except Exception:

tests/integration/test_api.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,7 @@ async def my_transaction():
164164
assert len(tracked_request.complete_spans) == 2
165165
assert tracked_request.complete_spans[0].operation == "Custom/Foo"
166166
assert tracked_request.complete_spans[1].operation == "Controller/Bar"
167+
assert tracked_request.operation == "Controller/Bar"
167168

168169

169170
@pytest.mark.asyncio
@@ -183,6 +184,7 @@ async def my_transaction():
183184
assert len(tracked_request.active_spans) == 0
184185
assert len(tracked_request.complete_spans) == 1
185186
assert tracked_request.complete_spans[0].operation == "Controller/Bar"
187+
assert tracked_request.operation == "Controller/Bar"
186188

187189

188190
def test_web_transaction_decorator_async_for_sync_function(tracked_request):
@@ -213,6 +215,7 @@ async def my_transaction():
213215
assert len(tracked_request.complete_spans) == 2
214216
assert tracked_request.complete_spans[0].operation == "Custom/Foo"
215217
assert tracked_request.complete_spans[1].operation == "Job/Bar"
218+
assert tracked_request.operation == "Job/Bar"
216219

217220

218221
@pytest.mark.asyncio
@@ -232,6 +235,7 @@ async def my_transaction():
232235
assert len(tracked_request.active_spans) == 0
233236
assert len(tracked_request.complete_spans) == 1
234237
assert tracked_request.complete_spans[0].operation == "Job/Bar"
238+
assert tracked_request.operation == "Job/Bar"
235239

236240

237241
def test_background_transaction_decorator_async_for_sync_function(tracked_request):

tests/integration/test_celery.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ def test_hello_eager(tracked_requests):
9696
assert len(tracked_request.complete_spans) == 1
9797
span = tracked_request.complete_spans[0]
9898
assert span.operation == "Job/tests.integration.test_celery.hello"
99+
assert tracked_request.operation == "Job/tests.integration.test_celery.hello"
99100

100101

101102
def test_error_task(tracked_requests):
@@ -110,6 +111,7 @@ def test_error_task(tracked_requests):
110111
span = tracked_request.complete_spans[0]
111112
assert span.operation == "Job/tests.integration.test_celery.crash"
112113
assert tracked_request.tags["error"]
114+
assert tracked_request.operation == "Job/tests.integration.test_celery.crash"
113115

114116

115117
def test_error_task_error_monitor(error_monitor_errors, mock_get_safe_settings):
@@ -255,6 +257,7 @@ def test_hello_worker(celery_app, celery_worker, tracked_requests):
255257
assert len(tracked_request.complete_spans) == 1
256258
span = tracked_request.complete_spans[0]
257259
assert span.operation == "Job/tests.integration.test_celery.hello"
260+
assert tracked_request.operation == "Job/tests.integration.test_celery.hello"
258261

259262

260263
@skip_unless_celery_4_plus
@@ -274,6 +277,7 @@ def test_hello_worker_header_preset(celery_app, celery_worker, tracked_requests)
274277
span = tracked_request.complete_spans[0]
275278
assert span.operation == "Job/tests.integration.test_celery.hello"
276279
assert "scout.job_queue_time_ns" not in span.tags
280+
assert tracked_request.operation == "Job/tests.integration.test_celery.hello"
277281

278282

279283
@skip_unless_celery_4_plus

tests/integration/test_dramatiq.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ def test_hello(tracked_requests):
7979
assert len(tracked_request.complete_spans) == 1
8080
span = tracked_request.complete_spans[0]
8181
assert span.operation == "Job/hello"
82+
assert tracked_request.operation == "Job/hello"
8283

8384

8485
def test_fail(tracked_requests):
@@ -95,6 +96,7 @@ def test_fail(tracked_requests):
9596
assert len(tracked_request.complete_spans) == 1
9697
span = tracked_request.complete_spans[0]
9798
assert span.operation == "Job/fail"
99+
assert tracked_request.operation == "Job/fail"
98100

99101

100102
def test_not_installed(tracked_requests):

tests/integration/test_huey.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ def test_hello(tracked_requests):
6767
assert len(tracked_request.complete_spans) == 1
6868
span = tracked_request.complete_spans[0]
6969
assert span.operation == "Job/tests.integration.test_huey.hello"
70+
assert tracked_request.operation == "Job/tests.integration.test_huey.hello"
7071

7172

7273
def test_retry_once(tracked_requests):
@@ -82,6 +83,7 @@ def test_retry_once(tracked_requests):
8283
assert len(tracked_request.complete_spans) == 1
8384
span = tracked_request.complete_spans[0]
8485
assert span.operation == "Job/tests.integration.test_huey.retry_once"
86+
assert tracked_request.operation == "Job/tests.integration.test_huey.retry_once"
8587

8688

8789
def test_fail(tracked_requests):
@@ -97,6 +99,7 @@ def test_fail(tracked_requests):
9799
assert len(tracked_request.complete_spans) == 1
98100
span = tracked_request.complete_spans[0]
99101
assert span.operation == "Job/tests.integration.test_huey.fail"
102+
assert tracked_request.operation == "Job/tests.integration.test_huey.fail"
100103

101104

102105
def test_cancelled(tracked_requests):

0 commit comments

Comments
 (0)