DB semantic convention stability migration for DB-API and 7 inheriting db client instrumentors#4109
Merged
lzchen merged 42 commits intoMay 12, 2026
Merged
Conversation
lzchen
reviewed
May 11, 2026
lzchen
reviewed
May 11, 2026
lzchen
approved these changes
May 12, 2026
emdneto
approved these changes
May 12, 2026
This was referenced May 12, 2026
bmwalters
added a commit
to bmwalters/opentelemetry-python-contrib
that referenced
this pull request
May 13, 2026
Migrates the new transaction-span code to the semconv stability pattern introduced on main in open-telemetry#4109: - Replace direct DB_OPERATION / DB_SYSTEM / DB_NAME imports with the _set_db_operation / _set_db_system / _set_db_name helpers from opentelemetry.instrumentation._semconv, so transaction spans emit db.operation or db.operation.name (and equivalents) based on OTEL_SEMCONV_STABILITY_OPT_IN. - Gate error.type on _report_new(sem_conv_mode), matching requests/urllib. - Add new_semconv / both_semconv variants for the transaction tests in test_dbapi_integration.py to cover the migration matrix. - Drop the pre-semconv ERROR_TYPE failure-test assertions in psycopg, since ERROR_TYPE is now gated to new semconv mode and the dbapi-level new_semconv tests cover the gating behavior. Assisted-by: Claude Opus 4.7
10 tasks
xrmx
added a commit
that referenced
this pull request
May 18, 2026
… in wrapped_connection (#4592) * fix(pymssql): use semconv helpers for host/port/user attributes The pymssql instrumentation's wrapped_connection() was setting net.peer.name, net.peer.port, and db.user using hardcoded legacy attribute keys, bypassing the semconv stability helpers introduced in #4109. Replace hardcoded keys with _set_db_user, _set_http_net_peer_name_client, and _set_http_peer_port_client so that OTEL_SEMCONV_STABILITY_OPT_IN correctly emits stable attributes (server.address, server.port, etc.). Also updates existing test assertions for net.peer.port from string to int, matching the behavior of set_int_attribute used by the helper. * Update instrumentation/opentelemetry-instrumentation-pymssql/tests/test_pymssql_integration.py Co-authored-by: Riccardo Magliocchetti <riccardo.magliocchetti@gmail.com> * Update instrumentation/opentelemetry-instrumentation-pymssql/tests/test_pymssql_integration.py Co-authored-by: Riccardo Magliocchetti <riccardo.magliocchetti@gmail.com> * Add changelog fragment for #4592 * Fix linting and add changelog fragment --------- Co-authored-by: Riccardo Magliocchetti <riccardo.magliocchetti@gmail.com> Co-authored-by: Emídio Neto <9735060+emdneto@users.noreply.github.com>
liustve
added a commit
to aws-observability/aws-otel-python-instrumentation
that referenced
this pull request
Jun 16, 2026
mysqlclient 2.2.7 (PyMySQL/mysqlclient#752, 2025-01) added Python-level self.db / self.database attributes in Connection.__init__ for OTel instrumentation to read. The contract test was pinned at 2.2.4 where those attributes didn't exist, so dbapi's getattr(conn, "db") returned None and the upstream dbapi instrumentation's empty-string default landed on the span. The 0.62b0 dbapi semantic-convention migration (open-telemetry/opentelemetry-python-contrib#4109) added an `if value:` filter in _set_db_name, so the empty string is now dropped entirely and the test's `db.name == ""` assertion fails with "key not found". Bump the contract-test pin to 2.2.8 (current latest) so conn.db returns the actual database name, and update the assertion to expect DATABASE_NAME instead of the empty placeholder. Verified locally against MySQL 8: mysqlclient 2.2.4 -> conn.db is None, mysqlclient 2.2.7+ -> conn.db == "testdb".
liustve
added a commit
to aws-observability/aws-otel-python-instrumentation
that referenced
this pull request
Jun 17, 2026
Automated update of OpenTelemetry dependencies. **Build Status:** ❌ [failure](https://github.com/aws-observability/aws-otel-python-instrumentation/actions/runs/27184408784) **Updated versions:** - [OpenTelemetry Python](https://github.com/open-telemetry/opentelemetry-python/releases/tag/v1.42.1): 1.42.1 - [OpenTelemetry Contrib](https://github.com/open-telemetry/opentelemetry-python-contrib/releases/tag/v0.63b1): 0.63b1 - [opentelemetry-sdk-extension-aws](https://pypi.org/project/opentelemetry-sdk-extension-aws/2.1.0/): 2.1.0 - [opentelemetry-propagator-aws-xray](https://pypi.org/project/opentelemetry-propagator-aws-xray/1.0.2/): 1.0.2 **Upstream releases with breaking changes:** Note: the mechanism to detect upstream breaking changes is not perfect. Be sure to check all new releases and understand if any additional changes need to be addressed. **opentelemetry-python-contrib:** - [Version 1.41.0/0.62b0](https://github.com/open-telemetry/opentelemetry-python-contrib/releases/tag/v0.62b0) *Description of changes:* - Drops the `opentelemetry-instrumentation-boto` runtime dependency (legacy boto2 instrumentation), removed entirely upstream in: open-telemetry/opentelemetry-python-contrib#4303 - Drops Python 3.9 support to match upstream's new minimum (Python ≥3.10): open-telemetry/opentelemetry-python#5076 (core) and open-telemetry/opentelemetry-python-contrib#4412 (contrib) - Switches `from importlib_metadata import version` to stdlib `from importlib.metadata import version` after upstream dropped the third-party `importlib-metadata` package from `opentelemetry-api`: open-telemetry/opentelemetry-python#3234 - Refactors the botocore patches (`_botocore_patches.py`) to use the new `ExtensionRegistry` API. Upstream split `_KNOWN_EXTENSIONS` into `_BOTOCORE_EXTENSIONS` + `_AIOBOTOCORE_EXTENSIONS`, removed `_find_extension`, and moved `_safe_invoke` to `opentelemetry.instrumentation.botocore.utils` as part of adding aiobotocore instrumentation: open-telemetry/opentelemetry-python-contrib#4049 - Removes the Starlette ASGI `suppress_http_instrumentation` patch (which the existing ADOT TODO already flagged) since the ASGI middleware now natively honors `suppress_http_instrumentation` upstream: open-telemetry/opentelemetry-python-contrib#4375 - Adapts the configurator tests to upstream's renamed `BaggageSpanProcessor._baggage_key_predicate` → `_predicates` (now a list of callables, after the constructor was reworked to accept either a single predicate or a sequence): open-telemetry/opentelemetry-python-contrib#4371 - Adapts `test_otlp_attribute_vs_body_types` to upstream's `_VALID_ANY_VALUE_TYPES` switching `typing.Mapping`/`typing.Sequence` to `collections.abc.Mapping`/`collections.abc.Sequence`: open-telemetry/opentelemetry-python#5133 - Bumps the mysqlclient contract-test pin from `2.2.4` to `2.2.8` and updates the matching `db.name` assertion. The 0.62b0 dbapi semantic-convention migration (open-telemetry/opentelemetry-python-contrib#4109) added an empty-string filter inside `_set_db_name`, which exposed a latent gap: mysqlclient < 2.2.7 didn't expose a Python-level `conn.db` attribute (added upstream in PyMySQL/mysqlclient#752, shipped in mysqlclient 2.2.7), so OTel's dbapi instrumentation defaulted `database` to `""` and the empty value used to land on the span unconditionally. After 0.62b0 the empty value is dropped, so the assertion `db.name == ""` now fails with "key not found". Bumping mysqlclient lets `conn.db` flow through as the actual database name (`testdb`) so the assertion becomes meaningful. By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice. --------- Co-authored-by: github-actions <github-actions@github.com> Co-authored-by: Steve Liu <liustve@amazon.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Add DB-API instrumentor support for when
OTEL_SEMCONV_STABILITY_OPT_INincludesThis changes the
SQLComment in span attributefeature if opted in. Inclusion of sqlcomment on query span would be ondb.statementand/ordb.query.textattribute if default, "database", or "database/dup".These instrumentors inherit DB-API's
wrap_connectand/orinstrument_connection, and therefore also gain support for semconv migration automatically:Fixes #2929 #2678 #2928 #2931 #2932 #2933 #2934
Type of change
Please delete options that are not relevant.
How Has This Been Tested?
Does This PR Require a Core Repo Change?
Checklist:
See contributing.md for styleguide, changelog guidelines, and more.