Skip to content

Commit 28ba185

Browse files
authored
Add thread info to HTTP breadcrumbs (#4368)
To preserve behavior form 2.x
1 parent ee41a63 commit 28ba185

File tree

5 files changed

+22
-2
lines changed

5 files changed

+22
-2
lines changed

sentry_sdk/integrations/aiohttp.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
parse_url,
3535
parse_version,
3636
reraise,
37+
set_thread_info_from_span,
3738
transaction_from_function,
3839
HAS_REAL_CONTEXTVARS,
3940
CONTEXTVARS_ERROR_MESSAGE,
@@ -241,6 +242,8 @@ async def on_request_start(session, trace_config_ctx, params):
241242
data = {
242243
SPANDATA.HTTP_METHOD: method,
243244
}
245+
set_thread_info_from_span(data, span)
246+
244247
if parsed_url is not None:
245248
data["url"] = parsed_url.url
246249
data[SPANDATA.HTTP_QUERY] = parsed_url.query

sentry_sdk/integrations/httpx.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
http_client_status_to_breadcrumb_level,
1010
logger,
1111
parse_url,
12+
set_thread_info_from_span,
1213
)
1314

1415
from typing import TYPE_CHECKING
@@ -65,6 +66,8 @@ def send(self, request, **kwargs):
6566
data = {
6667
SPANDATA.HTTP_METHOD: request.method,
6768
}
69+
set_thread_info_from_span(data, span)
70+
6871
if parsed_url is not None:
6972
data["url"] = parsed_url.url
7073
data[SPANDATA.HTTP_QUERY] = parsed_url.query

sentry_sdk/integrations/stdlib.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
logger,
2020
safe_repr,
2121
parse_url,
22+
set_thread_info_from_span,
2223
)
2324

2425
from typing import TYPE_CHECKING
@@ -102,6 +103,8 @@ def putrequest(self, method, url, *args, **kwargs):
102103
data = {
103104
SPANDATA.HTTP_METHOD: method,
104105
}
106+
set_thread_info_from_span(data, span)
107+
105108
if parsed_url is not None:
106109
data["url"] = parsed_url.url
107110
data[SPANDATA.HTTP_QUERY] = parsed_url.query
@@ -256,8 +259,8 @@ def sentry_patched_popen_init(self, *a, **kw):
256259
thread_id, thread_name = get_current_thread_meta()
257260
breadcrumb_data = {
258261
"subprocess.pid": self.pid,
259-
"thread.id": thread_id,
260-
"thread.name": thread_name,
262+
SPANDATA.THREAD_ID: thread_id,
263+
SPANDATA.THREAD_NAME: thread_name,
261264
}
262265
if cwd:
263266
breadcrumb_data["subprocess.cwd"] = cwd

sentry_sdk/tracing.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,8 @@ def __init__(
247247
if status is not None:
248248
self.set_status(status)
249249

250+
self.update_active_thread()
251+
250252
def __eq__(self, other):
251253
# type: (object) -> bool
252254
if not isinstance(other, Span):

sentry_sdk/utils.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
DEFAULT_ADD_FULL_STACK,
3030
DEFAULT_MAX_STACK_FRAMES,
3131
DEFAULT_MAX_VALUE_LENGTH,
32+
SPANDATA,
3233
EndpointType,
3334
)
3435
from sentry_sdk._types import Annotated, AnnotatedValue, SENSITIVE_DATA_SUBSTITUTE
@@ -1941,3 +1942,11 @@ def http_client_status_to_breadcrumb_level(status_code):
19411942
return "warning"
19421943

19431944
return "info"
1945+
1946+
1947+
def set_thread_info_from_span(data, span):
1948+
# type: (Dict[str, Any], sentry_sdk.tracing.Span) -> None
1949+
if span.get_attribute(SPANDATA.THREAD_ID) is not None:
1950+
data[SPANDATA.THREAD_ID] = span.get_attribute(SPANDATA.THREAD_ID)
1951+
if span.get_attribute(SPANDATA.THREAD_NAME) is not None:
1952+
data[SPANDATA.THREAD_NAME] = span.get_attribute(SPANDATA.THREAD_NAME)

0 commit comments

Comments
 (0)