add database name as the Connection attribute#752
Merged
Conversation
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## main #752 +/- ##
==========================================
+ Coverage 88.86% 88.88% +0.02%
==========================================
Files 7 7
Lines 548 549 +1
==========================================
+ Hits 487 488 +1
Misses 61 61 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
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 16, 2026
…base With mysqlclient 2.2.4, conn.host/conn.user/conn.db were not exposed as Python attributes, so OTel's dbapi instrumentation produced skinny spans missing net.peer.name / db.name / db user. The test override worked around those gaps with negated assertions. mysqlclient 2.2.7 (PyMySQL/mysqlclient#752) added Python-level Connection attributes, so spans now carry net.peer.name and db.name. ADOT's _get_db_connection sees an address and emits the full RemoteResourceType="DB::Connection" + RemoteResourceIdentifier set, matching what the base DatabaseContractTestBase already asserts. Drop the override methods entirely and let the base assertions run.
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.
This change will add
self.databaseas the Connection attribute displaying the database name from connection parameters.I've described the reason for this change in #751 . Moreover, I believe that this attribute can be useful for other use-case where the info about the database name can be useful.