Skip to content

Commit 888059f

Browse files
Rearrange sqlcomment and span attr setup
1 parent 85c39a0 commit 888059f

File tree

1 file changed

+48
-26
lines changed
  • instrumentation/opentelemetry-instrumentation-sqlalchemy/src/opentelemetry/instrumentation/sqlalchemy

1 file changed

+48
-26
lines changed

instrumentation/opentelemetry-instrumentation-sqlalchemy/src/opentelemetry/instrumentation/sqlalchemy/engine.py

Lines changed: 48 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -230,6 +230,25 @@ def _operation_name(self, db_name, statement):
230230
return self.vendor
231231
return " ".join(parts)
232232

233+
def _get_commenter_data(self, conn) -> dict:
234+
"""Calculate sqlcomment contents from conn and configured options"""
235+
commenter_data = {
236+
"db_driver": conn.engine.driver,
237+
# Driver/framework centric information.
238+
"db_framework": f"sqlalchemy:{sqlalchemy.__version__}",
239+
}
240+
241+
if self.commenter_options.get("opentelemetry_values", True):
242+
commenter_data.update(**_get_opentelemetry_values())
243+
244+
# Filter down to just the requested attributes.
245+
commenter_data = {
246+
k: v
247+
for k, v in commenter_data.items()
248+
if self.commenter_options.get(k, True)
249+
}
250+
return commenter_data
251+
233252
def _before_cur_exec(
234253
self, conn, cursor, statement, params, context, _executemany
235254
):
@@ -245,39 +264,42 @@ def _before_cur_exec(
245264
with trace.use_span(span, end_on_exit=False):
246265
if span.is_recording():
247266
if self.enable_commenter:
248-
commenter_data = {
249-
"db_driver": conn.engine.driver,
250-
# Driver/framework centric information.
251-
"db_framework": f"sqlalchemy:{sqlalchemy.__version__}",
252-
}
253-
254-
if self.commenter_options.get(
255-
"opentelemetry_values", True
256-
):
257-
commenter_data.update(**_get_opentelemetry_values())
258-
259-
# Filter down to just the requested attributes.
260-
commenter_data = {
261-
k: v
262-
for k, v in commenter_data.items()
263-
if self.commenter_options.get(k, True)
264-
}
267+
commenter_data = self._get_commenter_data(conn)
265268

266269
if self.enable_attribute_commenter:
270+
# sqlcomment in executed query and span attribute
267271
statement = _add_sql_comment(
268272
statement, **commenter_data
269273
)
274+
span.set_attribute(
275+
SpanAttributes.DB_STATEMENT, statement
276+
)
277+
span.set_attribute(
278+
SpanAttributes.DB_SYSTEM, self.vendor
279+
)
280+
for key, value in attrs.items():
281+
span.set_attribute(key, value)
270282

271-
span.set_attribute(SpanAttributes.DB_STATEMENT, statement)
272-
span.set_attribute(SpanAttributes.DB_SYSTEM, self.vendor)
273-
for key, value in attrs.items():
274-
span.set_attribute(key, value)
283+
else:
284+
# sqlcomment in executed query only
285+
span.set_attribute(
286+
SpanAttributes.DB_STATEMENT, statement
287+
)
288+
span.set_attribute(
289+
SpanAttributes.DB_SYSTEM, self.vendor
290+
)
291+
for key, value in attrs.items():
292+
span.set_attribute(key, value)
293+
statement = _add_sql_comment(
294+
statement, **commenter_data
295+
)
275296

276-
if (
277-
self.enable_commenter
278-
and not self.enable_attribute_commenter
279-
):
280-
statement = _add_sql_comment(statement, **commenter_data)
297+
else:
298+
# no sqlcomment
299+
span.set_attribute(SpanAttributes.DB_STATEMENT, statement)
300+
span.set_attribute(SpanAttributes.DB_SYSTEM, self.vendor)
301+
for key, value in attrs.items():
302+
span.set_attribute(key, value)
281303

282304
context._otel_span = span
283305

0 commit comments

Comments
 (0)