Skip to content

Commit 2bf7c77

Browse files
.
1 parent ad4e14d commit 2bf7c77

3 files changed

Lines changed: 51 additions & 56 deletions

File tree

sentry_sdk/integrations/asyncpg.py

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from __future__ import annotations
22
import contextlib
33
import re
4-
from typing import Any, TypeVar, Callable, Awaitable, Iterator
4+
from typing import Any, TypeVar, Callable, Awaitable, Iterator, Union
55

66
import sentry_sdk
77
from sentry_sdk.consts import OP, SPANDATA
@@ -13,6 +13,7 @@
1313
parse_version,
1414
capture_internal_exceptions,
1515
)
16+
from sentry_sdk.traces import StreamedSpan
1617

1718
try:
1819
import asyncpg # type: ignore[import-not-found]
@@ -101,7 +102,7 @@ def _record(
101102
params_list: "tuple[Any, ...] | None",
102103
*,
103104
executemany: bool = False,
104-
) -> "Iterator[Span]":
105+
) -> "Iterator[Union[Span, StreamedSpan]]":
105106
integration = sentry_sdk.get_client().get_integration(AsyncPGIntegration)
106107
if integration is not None and not integration._record_params:
107108
params_list = None
@@ -197,22 +198,27 @@ async def _inner(*args: "Any", **kwargs: "Any") -> "T":
197198
return _inner
198199

199200

200-
def _set_db_data(span: "Span", conn: "Any") -> None:
201-
span.set_data(SPANDATA.DB_SYSTEM, "postgresql")
202-
span.set_data(SPANDATA.DB_DRIVER_NAME, "asyncpg")
201+
def _set_db_data(span: "Union[Span, StreamedSpan]", conn: "Any") -> None:
202+
if isinstance(span, StreamedSpan):
203+
set_on_span = span.set_attribute
204+
else:
205+
set_on_span = span.set_data
206+
207+
set_on_span(SPANDATA.DB_SYSTEM, "postgresql")
208+
set_on_span(SPANDATA.DB_DRIVER_NAME, "asyncpg")
203209

204210
addr = conn._addr
205211
if addr:
206212
try:
207-
span.set_data(SPANDATA.SERVER_ADDRESS, addr[0])
208-
span.set_data(SPANDATA.SERVER_PORT, addr[1])
213+
set_on_span(SPANDATA.SERVER_ADDRESS, addr[0])
214+
set_on_span(SPANDATA.SERVER_PORT, addr[1])
209215
except IndexError:
210216
pass
211217

212218
database = conn._params.database
213219
if database:
214-
span.set_data(SPANDATA.DB_NAME, database)
220+
set_on_span(SPANDATA.DB_NAME, database)
215221

216222
user = conn._params.user
217223
if user:
218-
span.set_data(SPANDATA.DB_USER, user)
224+
set_on_span(SPANDATA.DB_USER, user)

sentry_sdk/integrations/django/__init__.py

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
from sentry_sdk.scope import add_global_event_processor, should_send_default_pii
1010
from sentry_sdk.serializer import add_global_repr_processor, add_repr_sequence_type
1111
from sentry_sdk.tracing import SOURCE_FOR_STYLE, TransactionSource
12+
from sentry_sdk.traces import StreamedSpan
1213
from sentry_sdk.tracing_utils import add_query_source, record_sql_queries
1314
from sentry_sdk.utils import (
1415
AnnotatedValue,
@@ -720,14 +721,21 @@ def _rollback(self: "BaseDatabaseWrapper") -> None:
720721

721722

722723
def _set_db_data(
723-
span: "Span", cursor_or_db: "Any", db_operation: "Optional[str]" = None
724+
span: "Union[Span, StreamedSpan]",
725+
cursor_or_db: "Any",
726+
db_operation: "Optional[str]" = None,
724727
) -> None:
728+
if isinstance(span, StreamedSpan):
729+
set_on_span = span.set_attribute
730+
else:
731+
set_on_span = span.set_data
732+
725733
db = cursor_or_db.db if hasattr(cursor_or_db, "db") else cursor_or_db
726734
vendor = db.vendor
727-
span.set_data(SPANDATA.DB_SYSTEM, vendor)
735+
set_on_span(SPANDATA.DB_SYSTEM, vendor)
728736

729737
if db_operation is not None:
730-
span.set_data(SPANDATA.DB_OPERATION, db_operation)
738+
set_on_span(SPANDATA.DB_OPERATION, db_operation)
731739

732740
# Some custom backends override `__getattr__`, making it look like `cursor_or_db`
733741
# actually has a `connection` and the `connection` has a `get_dsn_parameters`
@@ -760,19 +768,19 @@ def _set_db_data(
760768

761769
db_name = connection_params.get("dbname") or connection_params.get("database")
762770
if db_name is not None:
763-
span.set_data(SPANDATA.DB_NAME, db_name)
771+
set_on_span(SPANDATA.DB_NAME, db_name)
764772

765773
server_address = connection_params.get("host")
766774
if server_address is not None:
767-
span.set_data(SPANDATA.SERVER_ADDRESS, server_address)
775+
set_on_span(SPANDATA.SERVER_ADDRESS, server_address)
768776

769777
server_port = connection_params.get("port")
770778
if server_port is not None:
771-
span.set_data(SPANDATA.SERVER_PORT, str(server_port))
779+
set_on_span(SPANDATA.SERVER_PORT, str(server_port))
772780

773781
server_socket_address = connection_params.get("unix_socket")
774782
if server_socket_address is not None:
775-
span.set_data(SPANDATA.SERVER_SOCKET_ADDRESS, server_socket_address)
783+
set_on_span(SPANDATA.SERVER_SOCKET_ADDRESS, server_socket_address)
776784

777785

778786
def add_template_context_repr_sequence() -> None:

sentry_sdk/integrations/sqlalchemy.py

Lines changed: 21 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -138,52 +138,33 @@ def _get_db_system(name: str) -> "Optional[str]":
138138

139139

140140
def _set_db_data(span: "Union[Span, StreamedSpan]", conn: "Any") -> None:
141-
db_system = _get_db_system(conn.engine.name)
142141
if isinstance(span, StreamedSpan):
143-
if db_system is not None:
144-
span.set_attribute(SPANDATA.DB_SYSTEM, db_system)
145-
146-
try:
147-
driver = conn.dialect.driver
148-
if driver:
149-
span.set_attribute(SPANDATA.DB_DRIVER_NAME, driver)
150-
except Exception:
151-
pass
142+
set_on_span = span.set_attribute
152143
else:
153-
if db_system is not None:
154-
span.set_data(SPANDATA.DB_SYSTEM, db_system)
144+
set_on_span = span.set_data
145+
146+
db_system = _get_db_system(conn.engine.name)
147+
if db_system is not None:
148+
set_on_span(SPANDATA.DB_SYSTEM, db_system)
155149

156-
try:
157-
driver = conn.dialect.driver
158-
if driver:
159-
span.set_data(SPANDATA.DB_DRIVER_NAME, driver)
160-
except Exception:
161-
pass
150+
try:
151+
driver = conn.dialect.driver
152+
if driver:
153+
set_on_span(SPANDATA.DB_DRIVER_NAME, driver)
154+
except Exception:
155+
pass
162156

163157
if conn.engine.url is None:
164158
return
165159

166-
if isinstance(span, StreamedSpan):
167-
db_name = conn.engine.url.database
168-
if db_name is not None:
169-
span.set_attribute(SPANDATA.DB_NAME, db_name)
170-
171-
server_address = conn.engine.url.host
172-
if server_address is not None:
173-
span.set_attribute(SPANDATA.SERVER_ADDRESS, server_address)
174-
175-
server_port = conn.engine.url.port
176-
if server_port is not None:
177-
span.set_attribute(SPANDATA.SERVER_PORT, server_port)
178-
else:
179-
db_name = conn.engine.url.database
180-
if db_name is not None:
181-
span.set_data(SPANDATA.DB_NAME, db_name)
160+
db_name = conn.engine.url.database
161+
if db_name is not None:
162+
set_on_span(SPANDATA.DB_NAME, db_name)
182163

183-
server_address = conn.engine.url.host
184-
if server_address is not None:
185-
span.set_data(SPANDATA.SERVER_ADDRESS, server_address)
164+
server_address = conn.engine.url.host
165+
if server_address is not None:
166+
set_on_span(SPANDATA.SERVER_ADDRESS, server_address)
186167

187-
server_port = conn.engine.url.port
188-
if server_port is not None:
189-
span.set_data(SPANDATA.SERVER_PORT, server_port)
168+
server_port = conn.engine.url.port
169+
if server_port is not None:
170+
set_on_span(SPANDATA.SERVER_PORT, server_port)

0 commit comments

Comments
 (0)