Repository navigation
Select database, messaging, and RPC schemas explicitly - #20760
Conversation
Pull request dashboard statusMerged · refreshed 2026-10-21 08:13 UTC Status above doesn't look right?
|
There was a problem hiding this comment.
🟢 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
63152c4 to
a27eb3b
Compare
| .satisfies( | ||
| spanData -> | ||
| assertThat(spanData.getInstrumentationScopeInfo().getSchemaUrl()) | ||
| .isEqualTo("https://opentelemetry.io/schemas/1.44.0")))); |
There was a problem hiding this comment.
@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.
7664b19 to
976c546
Compare
976c546 to
0079d2b
Compare
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>
0079d2b to
de197cf
Compare
Select schemas explicitly for the remaining database, messaging, and RPC signals so enrichment attributes do not choose their 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.