Skip to content

Commit f59e01c

Browse files
committed
fix(aiomysql): Separate breadcrumb data from span attributes
- Update _get_connect_data to accept use_streaming_keys flag - Use DB_SYSTEM_NAME and DB_NAMESPACE for streaming breadcrumbs - Create span_attributes by merging internal keys with breadcrumb_data - Breadcrumbs no longer contain internal Sentry keys (sentry.op, sentry.origin)
1 parent da6db01 commit f59e01c

1 file changed

Lines changed: 22 additions & 19 deletions

File tree

sentry_sdk/integrations/aiomysql.py

Lines changed: 22 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -172,31 +172,19 @@ async def _inner(self: "Connection") -> T:
172172
return await f(self)
173173

174174
if has_span_streaming_enabled(client.options):
175+
breadcrumb_data = _get_connect_data(self, use_streaming_keys=True)
176+
175177
span_attributes: dict[str, Any] = {
176178
"sentry.op": OP.DB,
177179
"sentry.origin": AioMySQLIntegration.origin,
178-
SPANDATA.DB_SYSTEM_NAME: "mysql",
179-
SPANDATA.DB_DRIVER_NAME: "aiomysql",
180-
}
181-
host = getattr(self, "host", None)
182-
if host is not None:
183-
span_attributes[SPANDATA.SERVER_ADDRESS] = host
184-
port = getattr(self, "port", None)
185-
if port is not None:
186-
span_attributes[SPANDATA.SERVER_PORT] = port
187-
database = getattr(self, "db", None)
188-
if database is not None:
189-
span_attributes[SPANDATA.DB_NAMESPACE] = database
190-
user = getattr(self, "user", None)
191-
if user is not None:
192-
span_attributes[SPANDATA.DB_USER] = user
180+
} | breadcrumb_data
193181

194182
with sentry_sdk.traces.start_span(
195183
name="connect", attributes=span_attributes
196184
) as span:
197185
with capture_internal_exceptions():
198186
sentry_sdk.add_breadcrumb(
199-
message="connect", category="query", data=span_attributes
187+
message="connect", category="query", data=breadcrumb_data
200188
)
201189
res = await f(self)
202190
else:
@@ -222,20 +210,35 @@ async def _inner(self: "Connection") -> T:
222210
return _inner
223211

224212

225-
def _get_connect_data(conn: Any) -> dict[str, Any]:
226-
data: dict[str, Any] = {SPANDATA.DB_SYSTEM: "mysql", SPANDATA.DB_DRIVER_NAME: "aiomysql"}
213+
def _get_connect_data(conn: Any, *, use_streaming_keys: bool = False) -> dict[str, Any]:
214+
if use_streaming_keys:
215+
db_system = SPANDATA.DB_SYSTEM_NAME
216+
db_name = SPANDATA.DB_NAMESPACE
217+
else:
218+
db_system = SPANDATA.DB_SYSTEM
219+
db_name = SPANDATA.DB_NAME
220+
221+
data: dict[str, Any] = {
222+
db_system: "mysql",
223+
SPANDATA.DB_DRIVER_NAME: "aiomysql",
224+
}
225+
227226
host = getattr(conn, "host", None)
228227
if host is not None:
229228
data[SPANDATA.SERVER_ADDRESS] = host
229+
230230
port = getattr(conn, "port", None)
231231
if port is not None:
232232
data[SPANDATA.SERVER_PORT] = port
233+
233234
database = getattr(conn, "db", None)
234235
if database is not None:
235-
data[SPANDATA.DB_NAME] = database
236+
data[db_name] = database
237+
236238
user = getattr(conn, "user", None)
237239
if user is not None:
238240
data[SPANDATA.DB_USER] = user
241+
239242
return data
240243

241244

0 commit comments

Comments
 (0)