Skip to content

Select database, messaging, and RPC schemas explicitly - #20760

Merged
laurit merged 4 commits into
mainfrom
trask-explicit-signal-schema-selection
Oct 21, 2026
Merged

laurit merged 4 commits into
mainfrom
trask-explicit-signal-schema-selection

Conversation

@trask

@trask trask commented Oct 20, 2026

Copy link
Copy Markdown
Member

Select schemas explicitly for the remaining database, messaging, and RPC signals so enrichment attributes do not choose their schema URL.

builder.setSchemaUrl(DbSchemaUrls.SCHEMA_URL);

Keep the existing domain schema versions and per-instance RPC modes. Preserve more-specific AWS selections, existing custom selections, and suppression behavior. Attribute-based inference stays in place for removal in the final layer.

Layer 3 of 4, based on #20750. Tracks #20755.

@opentelemetry-pr-dashboard

opentelemetry-pr-dashboard Bot commented Oct 20, 2026 •

Copy link
Copy Markdown

Pull request dashboard status

Merged · refreshed 2026-10-21 08:13 UTC

Status above doesn't look right?
  • Anything look wrong? Report it with what you expected; it helps us improve the dashboard.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

The explicit selections preserve domain versions, RPC modes, override precedence, and suppression behavior, with no blocking issues identified.

No open issues 🎉

What changed in this PR

Makes database, messaging, and RPC schema selection explicit, preparing for the later removal of attribute-based inference tracked in #20755.

Changes:

  • Selects domain-owned schemas in instrumentation factories.
  • Preserves instance-specific RPC modes and specialized AWS overrides.
  • Adds focused schema assertions for spans, metrics, and messaging suppression.
File Description
instrumentation/​vertx/​vertx-sql-client/​vertx-sql-client-common-4.0/​javaagent/​src/​main/​java/​io/​opentelemetry/​javaagent/​instrumentation/​vertx/​sqlclient/​common/​v4_0/​VertxSqlInstrumenterFactory.java Selects database schema.
instrumentation/​vertx/​vertx-redis-client/​vertx-redis-client-4.0/​javaagent/​src/​main/​java/​io/​opentelemetry/​javaagent/​instrumentation/​vertx/​redisclient/​v4_0/​VertxRedisClientSingletons.java Selects database schema.
instrumentation/​thrift-0.13/​library/​src/​test/​java/​io/​opentelemetry/​instrumentation/​thrift/​v0_13/​internal/​ThriftInstrumenterFactoryTest.java Tests instance-specific RPC schemas and customized names.
instrumentation/​thrift-0.13/​library/​src/​main/​java/​io/​opentelemetry/​instrumentation/​thrift/​v0_13/​internal/​ThriftInstrumenterFactory.java Selects client and server RPC schemas.
instrumentation/​spymemcached-2.12/​javaagent/​src/​main/​java/​io/​opentelemetry/​javaagent/​instrumentation/​spymemcached/​v2_12/​SpymemcachedSingletons.java Selects database schema.
instrumentation/​spring/​spring-rmi-4.0/​javaagent/​src/​main/​java/​io/​opentelemetry/​javaagent/​instrumentation/​spring/​rmi/​v4_0/​SpringRmiSingletons.java Selects client and server RPC schemas.
instrumentation/​spring/​spring-rabbit-1.0/​javaagent/​src/​main/​java/​io/​opentelemetry/​javaagent/​instrumentation/​spring/​rabbit/​v1_0/​SpringRabbitSingletons.java Selects messaging schema.
instrumentation/​spring/​spring-pulsar-1.0/​javaagent/​src/​main/​java/​io/​opentelemetry/​javaagent/​instrumentation/​spring/​pulsar/​v1_0/​SpringPulsarSingletons.java Selects messaging schema.
instrumentation/​spring/​spring-integration-4.1/​library/​src/​main/​java/​io/​opentelemetry/​instrumentation/​spring/​integration/​v4_1/​SpringIntegrationTelemetryBuilder.java Selects producer and consumer messaging schemas.
instrumentation/​sofa-rpc-5.4/​library/​src/​main/​java/​io/​opentelemetry/​instrumentation/​sofarpc/​v5_4/​SofaRpcTelemetryBuilder.java Selects instance-specific RPC schemas.
instrumentation/​rocketmq/​rocketmq-client-5.0/​javaagent/​src/​main/​java/​io/​opentelemetry/​javaagent/​instrumentation/​rocketmqclient/​v5_0/​RocketMqInstrumenterFactory.java Selects send, receive, and processing schemas.
instrumentation/​rocketmq/​rocketmq-client-4.8/​library/​src/​main/​java/​io/​opentelemetry/​instrumentation/​rocketmqclient/​v4_8/​RocketMqInstrumenterFactory.java Selects messaging operation schemas.
instrumentation/​rmi/​javaagent/​src/​main/​java/​io/​opentelemetry/​javaagent/​instrumentation/​rmi/​server/​RmiServerSingletons.java Selects server RPC schema.
instrumentation/​rmi/​javaagent/​src/​main/​java/​io/​opentelemetry/​javaagent/​instrumentation/​rmi/​client/​RmiClientSingletons.java Selects client RPC schema.
instrumentation/​redisson/​redisson-common-3.0/​javaagent/​src/​main/​java/​io/​opentelemetry/​javaagent/​instrumentation/​redisson/​common/​v3_0/​RedissonInstrumenterFactory.java Selects database schema.
instrumentation/​rediscala-1.8/​javaagent/​src/​main/​java/​io/​opentelemetry/​javaagent/​instrumentation/​rediscala/​v1_8/​RediscalaSingletons.java Selects database schema.
instrumentation/​rabbitmq-2.7/​javaagent/​src/​main/​java/​io/​opentelemetry/​javaagent/​instrumentation/​rabbitmq/​v2_7/​RabbitSingletons.java Selects schemas for messaging operations only.
instrumentation/​r2dbc-1.0/​library/​src/​main/​java/​io/​opentelemetry/​instrumentation/​r2dbc/​v1_0/​internal/​R2dbcInstrumenterBuilder.java Selects database schema.
instrumentation/​pulsar/​pulsar-2.8/​javaagent/​src/​main/​java/​io/​opentelemetry/​javaagent/​instrumentation/​pulsar/​v2_8/​telemetry/​PulsarSingletons.java Selects producer and consumer messaging schemas.
instrumentation/​opensearch/​opensearch-rest-common-1.0/​javaagent/​src/​main/​java/​io/​opentelemetry/​javaagent/​instrumentation/​opensearch/​rest/​common/​v1_0/​OpenSearchRestInstrumenterFactory.java Selects database schema.
instrumentation/​opensearch/​opensearch-java-3.0/​javaagent/​src/​main/​java/​io/​opentelemetry/​javaagent/​instrumentation/​opensearch/​v3_0/​OpenSearchSingletons.java Selects database schema.
instrumentation/​nats/​nats-2.17/​library/​src/​main/​java/​io/​opentelemetry/​instrumentation/​nats/​v2_17/​internal/​NatsInstrumenterFactory.java Selects messaging operation schemas.
instrumentation/​mongo/​mongo-3.1/​library/​src/​main/​java/​io/​opentelemetry/​instrumentation/​mongo/​v3_1/​internal/​MongoInstrumenterFactory.java Selects database schema.
instrumentation/​lettuce/​lettuce-5.1/​library/​src/​main/​java/​io/​opentelemetry/​instrumentation/​lettuce/​v5_1/​LettuceTelemetryBuilder.java Selects database schema.
instrumentation/​lettuce/​lettuce-5.0/​javaagent/​src/​main/​java/​io/​opentelemetry/​javaagent/​instrumentation/​lettuce/​v5_0/​LettuceSingletons.java Selects command and batch database schemas.
instrumentation/​lettuce/​lettuce-4.0/​javaagent/​src/​main/​java/​io/​opentelemetry/​javaagent/​instrumentation/​lettuce/​v4_0/​LettuceSingletons.java Selects command and batch database schemas.
instrumentation/​kafka/​kafka-connect-2.6/​javaagent/​src/​main/​java/​io/​opentelemetry/​javaagent/​instrumentation/​kafkaconnect/​v2_6/​KafkaConnectSingletons.java Selects messaging processing schema.
instrumentation/​kafka/​kafka-clients/​kafka-clients-common-0.11/​library/​src/​main/​java/​io/​opentelemetry/​instrumentation/​kafkaclients/​common/​v0_11/​internal/​KafkaInstrumenterFactory.java Selects producer and consumer messaging schemas.
instrumentation/​jms/​jms-common-1.1/​javaagent/​src/​main/​java/​io/​opentelemetry/​javaagent/​instrumentation/​jms/​common/​v1_1/​JmsInstrumenterFactory.java Selects messaging operation schemas.
instrumentation/​jedis/​jedis-4.0/​javaagent/​src/​main/​java/​io/​opentelemetry/​javaagent/​instrumentation/​jedis/​v4_0/​JedisSingletons.java Selects database schema.
instrumentation/​jedis/​jedis-3.0/​javaagent/​src/​main/​java/​io/​opentelemetry/​javaagent/​instrumentation/​jedis/​v3_0/​JedisSingletons.java Selects database schema.
instrumentation/​jedis/​jedis-2.0/​javaagent/​src/​main/​java/​io/​opentelemetry/​javaagent/​instrumentation/​jedis/​v2_0/​JedisSingletons.java Selects database schema.
instrumentation/​jdbc/​library/​src/​test/​java/​io/​opentelemetry/​instrumentation/​jdbc/​datasource/​JdbcTelemetryTest.java Asserts statement and transaction telemetry schemas.
instrumentation/​jdbc/​library/​src/​main/​java/​io/​opentelemetry/​instrumentation/​jdbc/​internal/​JdbcInstrumenterFactory.java Selects statement and transaction database schemas.
instrumentation/​influxdb-2.4/​javaagent/​src/​main/​java/​io/​opentelemetry/​javaagent/​instrumentation/​influxdb/​v2_4/​InfluxDbSingletons.java Selects query and modification database schemas.
instrumentation/​hbase/​hbase-client-common-1.0/​javaagent/​src/​main/​java/​io/​opentelemetry/​javaagent/​instrumentation/​hbase/​client/​common/​HbaseInstrumenterFactory.java Selects database schema.
instrumentation/​gwt-2.0/​javaagent/​src/​main/​java/​io/​opentelemetry/​javaagent/​instrumentation/​gwt/​v2_0/​GwtSingletons.java Selects server RPC schema.
instrumentation/​grpc-1.6/​library/​src/​main/​java/​io/​opentelemetry/​instrumentation/​grpc/​v1_6/​GrpcTelemetryBuilder.java Selects instance-specific RPC schemas.
instrumentation/​geode-1.4/​javaagent/​src/​main/​java/​io/​opentelemetry/​javaagent/​instrumentation/​geode/​v1_4/​GeodeSingletons.java Selects database schema.
instrumentation/​elasticsearch/​elasticsearch-transport-common-5.0/​javaagent/​src/​main/​java/​io/​opentelemetry/​javaagent/​instrumentation/​elasticsearch/​transport/​common/​v5_0/​ElasticsearchTransportInstrumenterFactory.java Selects database schema.
instrumentation/​elasticsearch/​elasticsearch-rest-common-5.0/​javaagent/​src/​main/​java/​io/​opentelemetry/​javaagent/​instrumentation/​elasticsearch/​rest/​common/​v5_0/​ElasticsearchRestInstrumenterFactory.java Selects database schema.
instrumentation/​couchbase/​couchbase-2.0/​javaagent/​src/​main/​java/​io/​opentelemetry/​javaagent/​instrumentation/​couchbase/​v2_0/​CouchbaseSingletons.java Selects database schema.
instrumentation/​clickhouse/​clickhouse-client-common-0.5/​javaagent/​src/​main/​java/​io/​opentelemetry/​javaagent/​instrumentation/​clickhouse/​client/​common/​v0_5/​ClickHouseInstrumenterFactory.java Selects database schema.
instrumentation/​cassandra/​cassandra-4.4/​library/​src/​main/​java/​io/​opentelemetry/​instrumentation/​cassandra/​v4_4/​CassandraTelemetryBuilder.java Selects database schema.
instrumentation/​cassandra/​cassandra-4.0/​javaagent/​src/​main/​java/​io/​opentelemetry/​javaagent/​instrumentation/​cassandra/​v4_0/​CassandraSingletons.java Selects database schema.
instrumentation/​cassandra/​cassandra-3.0/​javaagent/​src/​main/​java/​io/​opentelemetry/​javaagent/​instrumentation/​cassandra/​v3_0/​CassandraSingletons.java Selects database schema.
instrumentation/​aws-sdk/​aws-sdk-2.2/​library/​src/​main/​java/​io/​opentelemetry/​instrumentation/​awssdk/​v2_2/​internal/​AwsSdkInstrumenterFactory.java Sets RPC default before specialized overrides.
instrumentation/​aws-sdk/​aws-sdk-1.11/​library/​src/​main/​java/​io/​opentelemetry/​instrumentation/​awssdk/​v1_11/​internal/​AwsSdkInstrumenterFactory.java Sets RPC default before specialized overrides.
instrumentation/​aws-lambda/​aws-lambda-events-common-2.2/​library/​src/​test/​java/​io/​opentelemetry/​instrumentation/​awslambdaevents/​common/​v2_2/​internal/​AwsLambdaSqsInstrumenterFactoryTest.java Tests messaging schemas and suppression preservation.
instrumentation/​aws-lambda/​aws-lambda-events-common-2.2/​library/​src/​main/​java/​io/​opentelemetry/​instrumentation/​awslambdaevents/​common/​v2_2/​internal/​AwsLambdaSqsInstrumenterFactory.java Selects batch and message processing schemas.
instrumentation/​apache-dubbo-2.7/​library-autoconfigure/​src/​main/​java/​io/​opentelemetry/​instrumentation/​apachedubbo/​v2_7/​DubboTelemetryBuilder.java Selects instance-specific RPC schemas.
instrumentation-api-incubator/​src/​test/​java/​io/​opentelemetry/​instrumentation/​api/​incubator/​semconv/​rpc/​RpcInstanceSemconvTest.java Uses explicit schema selection in RPC mode tests.

Review effort: Balanced

@trask
trask marked this pull request as ready for review October 20, 2026 20:48
@trask
trask requested a review from a team as a code owner October 20, 2026 20:48
.satisfies(
spanData ->
assertThat(spanData.getInstrumentationScopeInfo().getSchemaUrl())
.isEqualTo("https://opentelemetry.io/schemas/1.44.0"))));

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@copilot Update this PR directly with a test-only cleanup of the four new JDBC scope-schema assertions. Do not create a follow-up PR as a workaround.

In instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/datasource/JdbcTelemetryTest.java, replace the four hand-written satisfies lambdas that assert getInstrumentationScopeInfo().getSchemaUrl() equals "https://opentelemetry.io/schemas/1.44.0" with satisfies(hasScopeSchemaUrl(SchemaUrls.V1_44_0)). There are two span expectations and two metric expectations. Add a static import of io.opentelemetry.instrumentation.testing.util.InstrumentationScopeAssertions.hasScopeSchemaUrl and import io.opentelemetry.semconv.SchemaUrls as needed.

This consolidates the previously requested JDBC shared-helper cleanup with the matching version-constant cleanup. Use the version-specific SchemaUrls.V1_44_0 constant for the expected value, not the production DbSchemaUrls.SCHEMA_URL alias, so a production schema-version change cannot silently change the expectation too.

Acceptance criteria: all four JDBC schema assertions use the shared helper and the version-specific constant, with unchanged expected values and all other assertions and coverage preserved. Keep changes scoped to JdbcTelemetryTest.java. Preserve all production changes, the existing Thrift and SQS cleanup, the current base branch and draft/ready state, and do not update other PR branches, restack, merge, post replies, or resolve threads. Follow repository formatting and targeted validation instructions.

@trask
trask force-pushed the trask-explicit-signal-schema-selection branch from 7664b19 to 976c546 Compare October 20, 2026 22:15
@laurit
laurit force-pushed the trask-explicit-signal-schema-selection branch from 976c546 to 0079d2b Compare October 21, 2026 06:25
Base automatically changed from copilot/implement-schema-url-audit-findings to main October 21, 2026 07:27
trask and others added 4 commits October 21, 2026 10:27
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 76340ed7-52ba-4273-a124-977ea128787c
Co-authored-by: trask <218610+trask@users.noreply.github.com>
Co-authored-by: trask <218610+trask@users.noreply.github.com>
Co-authored-by: trask <218610+trask@users.noreply.github.com>
@laurit
laurit force-pushed the trask-explicit-signal-schema-selection branch from 0079d2b to de197cf Compare October 21, 2026 07:27
@opentelemetry-pr-dashboard
opentelemetry-pr-dashboard Bot requested a balanced review from Copilot October 21, 2026 07:28

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

The explicit selections preserve existing domain versions, RPC modes, and override precedence, with focused schema coverage and no identified blocking defects.

No open issues 🎉

Review effort: Balanced

@laurit
laurit merged commit 11d24d2 into main Oct 21, 2026
70 checks passed
@laurit
laurit deleted the trask-explicit-signal-schema-selection branch October 21, 2026 08:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants