Skip to content

Commit 7c81fd6

Browse files
committed
fix(aiomysql): Use correct span attributes for StreamedSpan
- Use DB_SYSTEM_NAME instead of DB_SYSTEM for StreamedSpan - Use DB_NAMESPACE instead of DB_NAME for StreamedSpan - Add DB_DRIVER_NAME attribute for both StreamedSpan and regular Span - Follow asyncpg/sqlalchemy integration patterns
1 parent 7c952eb commit 7c81fd6

1 file changed

Lines changed: 44 additions & 22 deletions

File tree

‎sentry_sdk/integrations/aiomysql.py‎

Lines changed: 44 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,8 @@ async def _inner(self: "Connection") -> T:
175175
span_attributes: dict[str, Any] = {
176176
"sentry.op": OP.DB,
177177
"sentry.origin": AioMySQLIntegration.origin,
178-
SPANDATA.DB_SYSTEM: "mysql",
178+
SPANDATA.DB_SYSTEM_NAME: "mysql",
179+
SPANDATA.DB_DRIVER_NAME: "aiomysql",
179180
}
180181
host = getattr(self, "host", None)
181182
if host is not None:
@@ -185,7 +186,7 @@ async def _inner(self: "Connection") -> T:
185186
span_attributes[SPANDATA.SERVER_PORT] = port
186187
database = getattr(self, "db", None)
187188
if database is not None:
188-
span_attributes[SPANDATA.DB_NAME] = database
189+
span_attributes[SPANDATA.DB_NAMESPACE] = database
189190
user = getattr(self, "user", None)
190191
if user is not None:
191192
span_attributes[SPANDATA.DB_USER] = user
@@ -222,7 +223,7 @@ async def _inner(self: "Connection") -> T:
222223

223224

224225
def _get_connect_data(conn: Any) -> dict[str, Any]:
225-
data: dict[str, Any] = {SPANDATA.DB_SYSTEM: "mysql"}
226+
data: dict[str, Any] = {SPANDATA.DB_SYSTEM: "mysql", SPANDATA.DB_DRIVER_NAME: "aiomysql"}
226227
host = getattr(conn, "host", None)
227228
if host is not None:
228229
data[SPANDATA.SERVER_ADDRESS] = host
@@ -240,22 +241,43 @@ def _get_connect_data(conn: Any) -> dict[str, Any]:
240241

241242
def _set_db_data(span: Any, conn: Any) -> None:
242243
"""Set database-related span data from connection object."""
243-
set_value = span.set_attribute if isinstance(span, StreamedSpan) else span.set_data
244-
245-
set_value(SPANDATA.DB_SYSTEM, "mysql")
246-
247-
host = getattr(conn, "host", None)
248-
if host is not None:
249-
set_value(SPANDATA.SERVER_ADDRESS, host)
250-
251-
port = getattr(conn, "port", None)
252-
if port is not None:
253-
set_value(SPANDATA.SERVER_PORT, port)
254-
255-
database = getattr(conn, "db", None)
256-
if database is not None:
257-
set_value(SPANDATA.DB_NAME, database)
258-
259-
user = getattr(conn, "user", None)
260-
if user is not None:
261-
set_value(SPANDATA.DB_USER, user)
244+
if isinstance(span, StreamedSpan):
245+
span.set_attribute(SPANDATA.DB_SYSTEM_NAME, "mysql")
246+
span.set_attribute(SPANDATA.DB_DRIVER_NAME, "aiomysql")
247+
248+
host = getattr(conn, "host", None)
249+
if host is not None:
250+
span.set_attribute(SPANDATA.SERVER_ADDRESS, host)
251+
252+
port = getattr(conn, "port", None)
253+
if port is not None:
254+
span.set_attribute(SPANDATA.SERVER_PORT, port)
255+
256+
database = getattr(conn, "db", None)
257+
if database is not None:
258+
span.set_attribute(SPANDATA.DB_NAMESPACE, database)
259+
260+
user = getattr(conn, "user", None)
261+
if user is not None:
262+
span.set_attribute(SPANDATA.DB_USER, user)
263+
else:
264+
# Remove this else block once we've completely migrated to streamed spans
265+
# The use of deprecated attributes here is to ensure backwards compatibility
266+
span.set_data(SPANDATA.DB_SYSTEM, "mysql")
267+
span.set_data(SPANDATA.DB_DRIVER_NAME, "aiomysql")
268+
269+
host = getattr(conn, "host", None)
270+
if host is not None:
271+
span.set_data(SPANDATA.SERVER_ADDRESS, host)
272+
273+
port = getattr(conn, "port", None)
274+
if port is not None:
275+
span.set_data(SPANDATA.SERVER_PORT, port)
276+
277+
database = getattr(conn, "db", None)
278+
if database is not None:
279+
span.set_data(SPANDATA.DB_NAME, database)
280+
281+
user = getattr(conn, "user", None)
282+
if user is not None:
283+
span.set_data(SPANDATA.DB_USER, user)

0 commit comments

Comments
 (0)