-
Notifications
You must be signed in to change notification settings - Fork 557
ref(am): Introduce start_transaction #715
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
2e37add
2756487
153b5a9
bdfc417
7ce76f0
a488d1e
dc8ffc3
80275ef
63a4681
e8349ea
5036f28
429c842
af2b1e3
986c9f1
a32e2d0
a845863
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -4,7 +4,7 @@ | |
|
||
from sentry_sdk.hub import Hub | ||
from sentry_sdk.utils import capture_internal_exceptions, event_from_exception | ||
from sentry_sdk.tracing import Span | ||
from sentry_sdk.tracing import Transaction | ||
from sentry_sdk._compat import reraise | ||
from sentry_sdk.integrations import Integration, DidNotEnable | ||
from sentry_sdk.integrations.logging import ignore_logger | ||
|
@@ -130,19 +130,21 @@ def _inner(*args, **kwargs): | |
scope.clear_breadcrumbs() | ||
scope.add_event_processor(_make_event_processor(task, *args, **kwargs)) | ||
|
||
span = Span.continue_from_headers(args[3].get("headers") or {}) | ||
span.op = "celery.task" | ||
span.transaction = "unknown celery task" | ||
transaction = Transaction.continue_from_headers( | ||
args[3].get("headers") or {}, | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I see this was already there. What is |
||
op="celery.task", | ||
name="unknown celery task", | ||
) | ||
|
||
# Could possibly use a better hook than this one | ||
span.set_status("ok") | ||
transaction.set_status("ok") | ||
|
||
with capture_internal_exceptions(): | ||
# Celery task objects are not a thing to be trusted. Even | ||
# something such as attribute access can fail. | ||
span.transaction = task.name | ||
transaction.name = task.name | ||
|
||
with hub.start_span(span): | ||
with hub.start_transaction(transaction): | ||
return f(*args, **kwargs) | ||
|
||
return _inner # type: ignore | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -5,6 +5,7 @@ | |
from sentry_sdk._functools import wraps | ||
from sentry_sdk._types import MYPY | ||
from sentry_sdk.utils import logger, capture_internal_exceptions | ||
from sentry_sdk.tracing import Transaction | ||
|
||
if MYPY: | ||
from typing import Any | ||
|
@@ -140,8 +141,8 @@ def transaction(self, value): | |
"""When set this forces a specific transaction name to be set.""" | ||
self._transaction = value | ||
span = self._span | ||
if span: | ||
span.transaction = value | ||
if span and isinstance(span, Transaction) and value: | ||
span.name = value | ||
Comment on lines
+144
to
+145
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Would it make sense to store the whole transaction in Code reading it that expects a string (e.g. to set There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The current state at JS is that we have a single slot for a "span" that can be a transaction or a span. Let's leave this for later. |
||
|
||
@_attr_setter | ||
def user(self, value): | ||
|
@@ -166,8 +167,8 @@ def span(self): | |
def span(self, span): | ||
# type: (Optional[Span]) -> None | ||
self._span = span | ||
if span is not None: | ||
span_transaction = span.transaction | ||
if isinstance(span, Transaction): | ||
span_transaction = span.name | ||
if span_transaction: | ||
self._transaction = span_transaction | ||
|
||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In JS there is a fallback that calls
startTransaction
in this case, to ease transition of existing code.https://github.com/getsentry/sentry-javascript/blob/d66e2d7f76492b2e403f64b047ffaf7bdddabb0a/packages/apm/src/hubextensions.ts#L52-L71