Skip to content

Commit 32d4eb3

Browse files
committed
Make sure thread info is added to http breadcrumbs
1 parent 8d456e8 commit 32d4eb3

File tree

5 files changed

+24
-7
lines changed

5 files changed

+24
-7
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/boto3.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
ensure_integration_enabled,
99
parse_url,
1010
parse_version,
11+
set_thread_info_from_span,
1112
)
1213

1314
from typing import TYPE_CHECKING
@@ -70,6 +71,8 @@ def _sentry_request_created(service_id, request, operation_name, **kwargs):
7071
data = {
7172
SPANDATA.HTTP_METHOD: request.method,
7273
}
74+
set_thread_info_from_span(data, span)
75+
7376
with capture_internal_exceptions():
7477
parsed_url = parse_url(request.url, sanitize=False)
7578
data["aws.request.url"] = parsed_url.url

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 & 7 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,16 +103,13 @@ 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
108111
data[SPANDATA.HTTP_FRAGMENT] = parsed_url.fragment
109112

110-
if span.get_attribute(SPANDATA.THREAD_ID) is not None:
111-
data[SPANDATA.THREAD_ID] = span.get_attribute(SPANDATA.THREAD_ID)
112-
if span.get_attribute(SPANDATA.THREAD_NAME) is not None:
113-
data[SPANDATA.THREAD_NAME] = span.get_attribute(SPANDATA.THREAD_NAME)
114-
115113
for key, value in data.items():
116114
span.set_attribute(key, value)
117115

@@ -261,8 +259,8 @@ def sentry_patched_popen_init(self, *a, **kw):
261259
thread_id, thread_name = get_current_thread_meta()
262260
breadcrumb_data = {
263261
"subprocess.pid": self.pid,
264-
"thread.id": thread_id,
265-
"thread.name": thread_name,
262+
SPANDATA.THREAD_ID: thread_id,
263+
SPANDATA.THREAD_NAME: thread_name,
266264
}
267265
if cwd:
268266
breadcrumb_data["subprocess.cwd"] = cwd

sentry_sdk/utils.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,15 @@
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
3536

3637
from typing import TYPE_CHECKING
3738

3839
if TYPE_CHECKING:
40+
from sentry_sdk.tracing import Span
3941
from types import FrameType, TracebackType
4042
from typing import (
4143
Any,
@@ -1941,3 +1943,11 @@ def http_client_status_to_breadcrumb_level(status_code):
19411943
return "warning"
19421944

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

0 commit comments

Comments
 (0)