Support db.system.name in JDBC instrumentation#16277
Merged
trask merged 14 commits intoopen-telemetry:mainfrom Apr 8, 2026
Merged
Support db.system.name in JDBC instrumentation#16277trask merged 14 commits intoopen-telemetry:mainfrom
db.system.name in JDBC instrumentation#16277trask merged 14 commits intoopen-telemetry:mainfrom
Conversation
85254c9 to
4a1299c
Compare
Merged
a132596 to
b5f105d
Compare
a141600 to
3c6b8ec
Compare
a9db901 to
4fac3c7
Compare
trask
commented
Apr 2, 2026
Member
Author
There was a problem hiding this comment.
this is probably the key place to start when reviewing
Contributor
There was a problem hiding this comment.
Pull request overview
This PR introduces support for stable db.system.name in JDBC instrumentation while preserving legacy semantic convention behavior for compatibility, and updates downstream tests (Kafka Connect) to validate both modes.
Changes:
- Refactors JDBC URL parsing into driver-specific parsers with shared parsing utilities and a
ParseContext. - Updates
DbInfoand JDBC attribute extraction to carry both stable (db.system.name,db.namespace, etc.) and legacy (db.system,db.name, etc.) values. - Extends Kafka Connect/JDBC tests and Gradle tasks to exercise stable semconv opt-in behavior.
Reviewed changes
Copilot reviewed 33 out of 33 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| instrumentation/kafka/kafka-connect-2.6/testing/src/test/java/io/opentelemetry/instrumentation/kafkaconnect/v2_6/PostgresKafkaConnectSinkTaskTest.java | Adjusts span name assertions for stable vs legacy semconv modes. |
| instrumentation/kafka/kafka-connect-2.6/testing/src/test/java/io/opentelemetry/instrumentation/kafkaconnect/v2_6/KafkaConnectSinkTaskBaseTest.java | Wires semconv stability opt-in into Kafka Connect container env. |
| instrumentation/kafka/kafka-connect-2.6/testing/build.gradle.kts | Adds a stable-semconv test task and hooks it into check. |
| instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/internal/OpenTelemetryConnectionTest.java | Updates test DbInfo construction to new stable/legacy fields. |
| instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcConnectionUrlParserTest.java | Updates expectations for stable vs legacy db system/name/namespace parsing. |
| instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcAttributesGetterTest.java | Adds tests for SQL dialect selection based on stable db.system.name. |
| instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/datasource/OpenTelemetryDataSourceTest.java | Updates assertions to new DbInfo getters/fields. |
| instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/parser/UrlParsingUtils.java | Introduces shared URL parsing helpers (params, host/port, IPv6). |
| instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/parser/SapUrlParser.java | Adds SAP HANA driver-specific URL parsing. |
| instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/parser/PostgresqlUrlParser.java | Adds PostgreSQL-specific parsing (including currentSchema → namespace). |
| instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/parser/PolardbUrlParser.java | Adds PolarDB driver-specific parsing. |
| instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/parser/ParseContext.java | Adds mutable context for staged parsing and building DbInfo. |
| instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/parser/OracleUrlParser.java | Adds Oracle driver-specific parsing (including DESCRIPTION format). |
| instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/parser/OceanbaseUrlParser.java | Adds OceanBase parsing (including Oracle-mode mapping). |
| instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/parser/MysqlUrlParser.java | Adds MySQL/MariaDB parsing including non-standard and subprotocol forms. |
| instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/parser/MssqlUrlParser.java | Adds SQL Server parsing with instance/namespace handling and precedence. |
| instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/parser/LindormUrlParser.java | Adds Lindorm parsing (:url= indirection and subtype extraction). |
| instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/parser/JtdsUrlParser.java | Adds jTDS SQL Server parsing with instance/namespace handling. |
| instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/parser/JdbcUrlParser.java | Defines parser contract and precedence guidance. |
| instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/parser/InformixSqliUrlParser.java | Adds Informix SQLI parsing with db name normalization. |
| instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/parser/InformixDirectUrlParser.java | Adds Informix Direct parsing for db-only URLs. |
| instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/parser/HsqlUrlParser.java | Adds HSQLDB parsing for local/network modes. |
| instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/parser/H2UrlParser.java | Adds H2 parsing for local/network modes with stable/legacy system mapping. |
| instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/parser/GenericUrlParser.java | Provides generic URI-based parsing for standard URL-like JDBC forms. |
| instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/parser/DerbyUrlParser.java | Adds Derby parsing across local/network modes with precedence rules. |
| instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/parser/Db2UrlParser.java | Adds DB2/AS400 parsing including colon-separated params. |
| instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/parser/DataDirectUrlParser.java | Adds DataDirect/TIBCO parsing with subtype→system mapping. |
| instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/parser/ClickhouseUrlParser.java | Adds ClickHouse parsing with protocol subtype. |
| instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcConnectionUrlParser.java | Switches to parser framework and stable/legacy DbInfo output. |
| instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcAttributesGetter.java | Reads stable db.system.name/namespace and preserves legacy getters. |
| instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/dbinfo/DbInfo.java | Refactors DbInfo to carry stable + legacy semconv values. |
| instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/DataSourceDbAttributesExtractor.java | Emits stable vs legacy DB attributes from updated DbInfo. |
| instrumentation-api-incubator/src/test/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/DbClientSpanNameExtractorTest.java | Updates test setup for stable semconv conditional behavior. |
…strumentation/jdbc/internal/parser/ParseContext.java Co-authored-by: Copilot <[email protected]>
…strumentation/jdbc/internal/parser/JtdsUrlParser.java Co-authored-by: Copilot <[email protected]>
laurit
reviewed
Apr 8, 2026
|
|
||
| private static Map<String, String> buildSubtypeToOldSystem() { | ||
| Map<String, String> map = new HashMap<>(3); | ||
| map.put(SUBTYPE_SQLSERVER, MSSQL); |
Contributor
There was a problem hiding this comment.
postgres and mysql are missing from there because they are some in both old and new?
laurit
approved these changes
Apr 8, 2026
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 PR adds support for stable
db.system.namein JDBC instrumentation.It refactors the massive
JdbcConnectionUrlParserinto driver-specific parsers, updatesDbInfoand attribute extraction to carry both stable and legacy semconv values, preserving old semconv behavior for compatibility during the transition.Sorry for the size of this PR. I've split the PR into multiple commits and can send them as individual PRs if that would help