Skip to content

Commit da6db01

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 da6db01

1 file changed

Lines changed: 18 additions & 7 deletions

File tree

sentry_sdk/integrations/aiomysql.py

Lines changed: 18 additions & 7 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,9 +241,19 @@ 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")
244+
if isinstance(span, StreamedSpan):
245+
set_value = span.set_attribute
246+
db_system = SPANDATA.DB_SYSTEM_NAME
247+
db_name = SPANDATA.DB_NAMESPACE
248+
else:
249+
# Remove this else block once we've completely migrated to streamed spans
250+
# The use of deprecated attributes here is to ensure backwards compatibility
251+
set_value = span.set_data
252+
db_system = SPANDATA.DB_SYSTEM
253+
db_name = SPANDATA.DB_NAME
254+
255+
set_value(db_system, "mysql")
256+
set_value(SPANDATA.DB_DRIVER_NAME, "aiomysql")
246257

247258
host = getattr(conn, "host", None)
248259
if host is not None:
@@ -254,7 +265,7 @@ def _set_db_data(span: Any, conn: Any) -> None:
254265

255266
database = getattr(conn, "db", None)
256267
if database is not None:
257-
set_value(SPANDATA.DB_NAME, database)
268+
set_value(db_name, database)
258269

259270
user = getattr(conn, "user", None)
260271
if user is not None:

0 commit comments

Comments
 (0)