From 86053d02bb6a69701e6b3d9c8edde689cc21c3bd Mon Sep 17 00:00:00 2001 From: Jay DeLuca Date: Mon, 1 Dec 2025 09:57:21 -0500 Subject: [PATCH 1/9] starting mongo metadata --- instrumentation-docs/collect.sh | 40 +- instrumentation-docs/instrumentations.sh | 446 +++++++++--------- .../mongo-3.1/javaagent/build.gradle.kts | 2 + .../v3_1/MongoInstrumentationSingletons.java | 2 +- .../mongo/v3_1/MongoClientTest.java | 5 + .../mongo/v3_1/MongoInstrumenterFactory.java | 3 +- .../mongo/v3_1/MongoTelemetry.java | 21 +- .../mongo/v3_1/MongoTelemetryBuilder.java | 6 +- .../mongo/v3_1/MongoClientTest.java | 5 + .../mongo-3.7/javaagent/build.gradle.kts | 2 + .../v3_7/MongoInstrumentationSingletons.java | 2 +- .../mongo/v3_7/MongoClientTest.java | 5 + .../mongo-4.0/javaagent/build.gradle.kts | 2 + .../v4_0/MongoInstrumentationSingletons.java | 2 +- .../mongo/v4_0/Mongo4ReactiveClientTest.java | 4 + .../mongo/v4_0/MongoClientTest.java | 5 + .../javaagent/build.gradle.kts | 2 + .../v3_3/MongoInstrumentationSingletons.java | 2 +- .../mongoasync/v3_3/MongoAsyncClientTest.java | 5 + .../testing/AbstractMongoClientTest.java | 17 + 20 files changed, 330 insertions(+), 248 deletions(-) diff --git a/instrumentation-docs/collect.sh b/instrumentation-docs/collect.sh index bb2207ace2ae..bd591f243327 100755 --- a/instrumentation-docs/collect.sh +++ b/instrumentation-docs/collect.sh @@ -171,26 +171,26 @@ main() { done < <(process_descriptors "${INSTRUMENTATIONS[@]}") run_gradle_tasks "${gradle_tasks[@]}" - # Process instrumentations requiring testLatestDeps - echo "Processing instrumentations with -PtestLatestDeps=true..." - gradle_tasks=() - while IFS= read -r line; do - gradle_tasks+=("$line") - done < <(process_descriptors "${TEST_LATEST_DEPS_INSTRUMENTATIONS[@]}") - run_gradle_tasks_with_latest_deps "${gradle_tasks[@]}" - - # Setup colima if needed - setup_colima - - # Process colima-specific instrumentations - echo "Processing colima instrumentations..." - gradle_tasks=() - while IFS= read -r line; do - gradle_tasks+=("$line") - done < <(process_descriptors "${COLIMA_INSTRUMENTATIONS[@]}") - run_gradle_tasks "${gradle_tasks[@]}" - - colima stop +# # Process instrumentations requiring testLatestDeps +# echo "Processing instrumentations with -PtestLatestDeps=true..." +# gradle_tasks=() +# while IFS= read -r line; do +# gradle_tasks+=("$line") +# done < <(process_descriptors "${TEST_LATEST_DEPS_INSTRUMENTATIONS[@]}") +# run_gradle_tasks_with_latest_deps "${gradle_tasks[@]}" +# +# # Setup colima if needed +# setup_colima +# +# # Process colima-specific instrumentations +# echo "Processing colima instrumentations..." +# gradle_tasks=() +# while IFS= read -r line; do +# gradle_tasks+=("$line") +# done < <(process_descriptors "${COLIMA_INSTRUMENTATIONS[@]}") +# run_gradle_tasks "${gradle_tasks[@]}" +# +# colima stop # uncomment the next line to remove all .telemetry directories #find_and_remove_all_telemetry diff --git a/instrumentation-docs/instrumentations.sh b/instrumentation-docs/instrumentations.sh index 902886b91ca2..e99e200d7df5 100755 --- a/instrumentation-docs/instrumentations.sh +++ b/instrumentation-docs/instrumentations.sh @@ -6,225 +6,233 @@ set -euo pipefail readonly INSTRUMENTATIONS=( # : : [ gradle-task-suffix ] - "activej-http-6.0:javaagent:test" - "akka:akka-http-10.0:javaagent:test" - "alibaba-druid-1.0:javaagent:test" - "alibaba-druid-1.0:javaagent:testStableSemconv" - "apache-dbcp-2.0:javaagent:test" - "apache-dbcp-2.0:javaagent:testStableSemconv" - "apache-dubbo-2.7:javaagent:testDubbo" - "apache-elasticjob-3.0:javaagent:test" - "apache-elasticjob-3.0:javaagent:testExperimental" - "apache-httpasyncclient-4.1:javaagent:test" - "apache-httpclient:apache-httpclient-2.0:javaagent:test" - "apache-httpclient:apache-httpclient-4.0:javaagent:test" - "apache-httpclient:apache-httpclient-4.3:library:test" - "apache-httpclient:apache-httpclient-5.0:javaagent:test" - "apache-httpclient:apache-httpclient-5.2:library:test" - "armeria:armeria-1.3:javaagent:test" - "armeria:armeria-grpc-1.14:javaagent:test" - "async-http-client:async-http-client-1.8:javaagent:test" - "async-http-client:async-http-client-1.9:javaagent:test" - "async-http-client:async-http-client-2.0:javaagent:test" - "aws-lambda:aws-lambda-core-1.0:javaagent:test" - "aws-lambda:aws-lambda-events-2.2:javaagent:test" - "aws-lambda:aws-lambda-events-3.11:library:test" - "aws-sdk:aws-sdk-1.11:javaagent:test" - "aws-sdk:aws-sdk-1.11:javaagent:testStableSemconv" - "aws-sdk:aws-sdk-2.2:javaagent:test" - "aws-sdk:aws-sdk-2.2:javaagent:testBedrockRuntime" - "aws-sdk:aws-sdk-2.2:javaagent:testStableSemconv" - "c3p0-0.9:javaagent:test" - "c3p0-0.9:javaagent:testStableSemconv" - "camel-2.20:javaagent:test" - "camel-2.20:javaagent:testExperimental" - "camel-2.20:javaagent:testStableSemconv" - "cassandra:cassandra-3.0:javaagent:test" - "cassandra:cassandra-3.0:javaagent:testStableSemconv" - "cassandra:cassandra-4.0:javaagent:test" - "cassandra:cassandra-4.0:javaagent:testStableSemconv" - "cassandra:cassandra-4.4:javaagent:test" - "cassandra:cassandra-4.4:javaagent:testStableSemconv" - "clickhouse:clickhouse-client-v1-0.5:javaagent:test" - "clickhouse:clickhouse-client-v1-0.5:javaagent:testStableSemconv" - "clickhouse:clickhouse-client-v2-0.8:javaagent:test" - "clickhouse:clickhouse-client-v2-0.8:javaagent:testStableSemconv" - "couchbase:couchbase-2.0:javaagent:test" - "couchbase:couchbase-2.0:javaagent:testStableSemconv" - "couchbase:couchbase-2.6:javaagent:test" - "couchbase:couchbase-2.6:javaagent:testExperimental" - "couchbase:couchbase-2.6:javaagent:testStableSemconv" - "couchbase:couchbase-3.1:javaagent:test" - "couchbase:couchbase-3.1.6:javaagent:test" - "couchbase:couchbase-3.2:javaagent:test" - "couchbase:couchbase-3.4:javaagent:test" - "dropwizard:dropwizard-views-0.7:javaagent:test" - "elasticsearch:elasticsearch-api-client-7.16:javaagent:test" - "elasticsearch:elasticsearch-api-client-7.16:javaagent:testStableSemconv" - "elasticsearch:elasticsearch-rest-7.0:javaagent:test" - "elasticsearch:elasticsearch-rest-7.0:javaagent:testStableSemconv" - "elasticsearch:elasticsearch-transport-5.0:javaagent:test" - "elasticsearch:elasticsearch-transport-5.0:javaagent:testExperimental" - "elasticsearch:elasticsearch-transport-5.0:javaagent:testStableSemconv" - "elasticsearch:elasticsearch-transport-5.3:javaagent:test" - "elasticsearch:elasticsearch-transport-5.3:javaagent:testExperimental" - "elasticsearch:elasticsearch-transport-5.3:javaagent:testStableSemconv" - "elasticsearch:elasticsearch-transport-6.0:javaagent:elasticsearch65Test" - "elasticsearch:elasticsearch-transport-6.0:javaagent:elasticsearch65TestExperimental" - "elasticsearch:elasticsearch-transport-6.0:javaagent:elasticsearch65TestStableSemconv" - "elasticsearch:elasticsearch-transport-6.0:javaagent:elasticsearch6Test" - "elasticsearch:elasticsearch-transport-6.0:javaagent:elasticsearch6TestExperimental" - "elasticsearch:elasticsearch-transport-6.0:javaagent:elasticsearch6TestStableSemconv" - "elasticsearch:elasticsearch-transport-6.0:javaagent:elasticsearch7Test" - "elasticsearch:elasticsearch-transport-6.0:javaagent:elasticsearch7TestExperimental" - "elasticsearch:elasticsearch-transport-6.0:javaagent:elasticsearch7TestStableSemconv" - "failsafe-3.0:library:test" - "finagle-http-23.11:javaagent:test" - "finatra-2.9:javaagent:test" - "geode-1.4:javaagent:test" - "geode-1.4:javaagent:testStableSemconv" - "google-http-client-1.19:javaagent:test" - "grails-3.0:javaagent:test" - "graphql-java:graphql-java-12.0:javaagent:test" - "graphql-java:graphql-java-20.0:javaagent:test" - "graphql-java:graphql-java-20.0:javaagent:testDataFetcher" - "grizzly-2.3:javaagent:test" - "grpc-1.6:javaagent:test" - "grpc-1.6:javaagent:testExperimental" - "gwt-2.0:javaagent:test" - "helidon-4.3:javaagent:test" - "hibernate:hibernate-3.3:javaagent:test" - "hibernate:hibernate-3.3:javaagent:testExperimental" - "hibernate:hibernate-4.0:javaagent:test" - "hibernate:hibernate-4.0:javaagent:testExperimental" - "hibernate:hibernate-6.0:javaagent:test" - "hibernate:hibernate-6.0:javaagent:testExperimental" - "hibernate:hibernate-procedure-call-4.3:javaagent:test" - "hibernate:hibernate-procedure-call-4.3:javaagent:testExperimental" - "hikaricp-3.0:javaagent:test" - "hikaricp-3.0:javaagent:testStableSemconv" - "http-url-connection:javaagent:test" - "hystrix-1.4:javaagent:test" - "hystrix-1.4:javaagent:testExperimental" - "influxdb-2.4:javaagent:test" - "influxdb-2.4:javaagent:testStableSemconv" - "java-http-client:javaagent:test" - "java-http-server:javaagent:test" - "jaxrs:jaxrs-1.0:javaagent:test" - "jaxrs:jaxrs-2.0:jaxrs-2.0-annotations:javaagent:test" - "jaxrs:jaxrs-2.0:jaxrs-2.0-cxf-3.2:javaagent:test" - "jaxrs:jaxrs-2.0:jaxrs-2.0-cxf-3.2:javaagent:testExperimental" - "jaxrs:jaxrs-2.0:jaxrs-2.0-jersey-2.0:javaagent:test" - "jaxrs:jaxrs-2.0:jaxrs-2.0-jersey-2.0:javaagent:testExperimental" - "jaxrs:jaxrs-2.0:jaxrs-2.0-resteasy-3.0:javaagent:test" - "jaxrs:jaxrs-2.0:jaxrs-2.0-resteasy-3.0:javaagent:testExperimental" - "jaxrs:jaxrs-2.0:jaxrs-2.0-resteasy-3.1:javaagent:test" - "jaxrs:jaxrs-2.0:jaxrs-2.0-resteasy-3.1:javaagent:testExperimental" - "jaxrs:jaxrs-3.0:jaxrs-3.0-annotations:javaagent:test" - "jaxrs:jaxrs-3.0:jaxrs-3.0-jersey-3.0:javaagent:test" - "jaxrs:jaxrs-3.0:jaxrs-3.0-jersey-3.0:javaagent:testExperimental" - "jaxrs:jaxrs-3.0:jaxrs-3.0-resteasy-6.0:javaagent:test" - "jaxrs:jaxrs-3.0:jaxrs-3.0-resteasy-6.0:javaagent:testExperimental" - "jaxws:jaxws-2.0:javaagent:test" - "jaxws:jaxws-2.0-axis2-1.6:javaagent:test" - "jaxws:jaxws-cxf-3.0:javaagent:test" - "jaxws:jaxws-jws-api-1.1:javaagent:test" - "jaxws:jaxws-metro-2.2:javaagent:test" - "jedis:jedis-1.4:javaagent:test" - "jedis:jedis-1.4:javaagent:testStableSemconv" - "jedis:jedis-3.0:javaagent:test" - "jedis:jedis-3.0:javaagent:testStableSemconv" - "jedis:jedis-4.0:javaagent:test" - "jedis:jedis-4.0:javaagent:testStableSemconv" - "jetty:jetty-8.0:javaagent:test" - "jetty:jetty-11.0:javaagent:test" - "jetty:jetty-12.0:javaagent:test" - "jetty-httpclient:jetty-httpclient-12.0:javaagent:test" - "jetty-httpclient:jetty-httpclient-9.2:javaagent:test" - "jms:jms-1.1:javaagent:test" - "jodd-http-4.2:javaagent:test" - "jsf:jsf-mojarra-1.2:javaagent:mojarra2Test" - "jsf:jsf-mojarra-3.0:javaagent:test" - "jsf:jsf-myfaces-1.2:javaagent:myfaces2Test" - "jsf:jsf-myfaces-3.0:javaagent:test" - "jsp-2.3:javaagent:test" - "jsp-2.3:javaagent:testExperimental" - "jfinal-3.2:javaagent:test" - "kafka:kafka-clients:kafka-clients-2.6:library:test" - "kafka:kafka-connect-2.6:testing:test" - "ktor:ktor-1.0:library:test" - "ktor:ktor-2.0:library:test" - "ktor:ktor-3.0:library:test" - "kubernetes-client-7.0:javaagent:test" - "kubernetes-client-7.0:javaagent:testExperimental" - "lettuce:lettuce-4.0:javaagent:test" - "lettuce:lettuce-4.0:javaagent:testExperimental" - "lettuce:lettuce-4.0:javaagent:testStableSemconv" - "lettuce:lettuce-5.0:javaagent:test" - "lettuce:lettuce-5.0:javaagent:testExperimental" - "lettuce:lettuce-5.0:javaagent:testStableSemconv" - "lettuce:lettuce-5.1:javaagent:test" - "lettuce:lettuce-5.1:javaagent:testStableSemconv" - "nats:nats-2.17:javaagent:test" - "nats:nats-2.17:javaagent:testExperimental" - "netty:netty-3.8:javaagent:test" - "netty:netty-4.0:javaagent:test" - "netty:netty-4.1:javaagent:test" - "okhttp:okhttp-2.2:javaagent:test" - "okhttp:okhttp-3.0:javaagent:test" - "openai:openai-java-1.1:javaagent:test" - "opensearch:opensearch-java-3.0:javaagent:test" - "opensearch:opensearch-java-3.0:javaagent:testStableSemconv" - "opensearch:opensearch-rest-1.0:javaagent:test" - "opensearch:opensearch-rest-1.0:javaagent:testStableSemconv" - "opensearch:opensearch-rest-3.0:javaagent:test" - "opensearch:opensearch-rest-3.0:javaagent:testStableSemconv" - "oshi:javaagent:test" - "oshi:javaagent:testExperimental" - "pekko:pekko-http-1.0:javaagent:test" - "play:play-ws:play-ws-1.0:javaagent:test" - "play:play-ws:play-ws-2.0:javaagent:test" - "play:play-ws:play-ws-2.1:javaagent:test" - "reactor:reactor-netty:reactor-netty-0.9:javaagent:test" - "reactor:reactor-netty:reactor-netty-1.0:javaagent:test" - "spring:spring-batch-3.0:javaagent:test" - "spring:spring-data:spring-data-1.8:javaagent:test" - "spring:spring-integration-4.1:javaagent:test" - "spring:spring-integration-4.1:javaagent:testWithProducerInstrumentation" - "spring:spring-integration-4.1:javaagent:testWithRabbitInstrumentation" - "spring:spring-jms:spring-jms-2.0:javaagent:test" - "spring:spring-kafka-2.7:javaagent:test" - "spring:spring-kafka-2.7:javaagent:testNoReceiveTelemetry" - "spring:spring-pulsar-1.0:javaagent:test" - "spring:spring-rabbit-1.0:javaagent:test" - "spring:spring-rmi-4.0:javaagent:test" - "spring:spring-scheduling-3.1:javaagent:test" - "spring:spring-scheduling-3.1:javaagent:testExperimental" - "spring:spring-web:spring-web-3.1:library:test" - "spring:spring-web:spring-web-6.0:javaagent:test" - "spring:spring-webflux:spring-webflux-5.0:javaagent:test" - "spring:spring-webflux:spring-webflux-5.0:javaagent:test" - "spring:spring-webflux:spring-webflux-5.3:library:test" - "spring:spring-webmvc:spring-webmvc-3.1:javaagent:test" - "spring:spring-webmvc:spring-webmvc-3.1:javaagent:testExperimental" - "spring:spring-webmvc:spring-webmvc-3.1:javaagent:testExperimental" - "spring:spring-webmvc:spring-webmvc-5.3:library:test" - "spring:spring-webmvc:spring-webmvc-6.0:javaagent:test" - "spring:spring-webmvc:spring-webmvc-6.0:javaagent:test" - "spring:spring-webmvc:spring-webmvc-6.0:javaagent:testExperimental" - "tomcat:tomcat-jdbc:javaagent:test" - "tomcat:tomcat-jdbc:javaagent:testStableSemconv" - "vertx:vertx-http-client:vertx-http-client-3.0:javaagent:test" - "vertx:vertx-http-client:vertx-http-client-4.0:javaagent:test" - "vertx:vertx-http-client:vertx-http-client-5.0:javaagent:test" - "vertx:vertx-redis-client-4.0:javaagent:test" - "vertx:vertx-redis-client-4.0:javaagent:testStableSemconv" - "vertx:vertx-sql-client:vertx-sql-client-4.0:javaagent:test" - "vertx:vertx-sql-client:vertx-sql-client-4.0:javaagent:testStableSemconv" - "vertx:vertx-sql-client:vertx-sql-client-5.0:javaagent:test" - "vertx:vertx-sql-client:vertx-sql-client-5.0:javaagent:testStableSemconv" - "vibur-dbcp-11.0:javaagent:test" - "vibur-dbcp-11.0:javaagent:testStableSemconv" +# "activej-http-6.0:javaagent:test" +# "akka:akka-http-10.0:javaagent:test" +# "alibaba-druid-1.0:javaagent:test" +# "alibaba-druid-1.0:javaagent:testStableSemconv" +# "apache-dbcp-2.0:javaagent:test" +# "apache-dbcp-2.0:javaagent:testStableSemconv" +# "apache-dubbo-2.7:javaagent:testDubbo" +# "apache-elasticjob-3.0:javaagent:test" +# "apache-elasticjob-3.0:javaagent:testExperimental" +# "apache-httpasyncclient-4.1:javaagent:test" +# "apache-httpclient:apache-httpclient-2.0:javaagent:test" +# "apache-httpclient:apache-httpclient-4.0:javaagent:test" +# "apache-httpclient:apache-httpclient-4.3:library:test" +# "apache-httpclient:apache-httpclient-5.0:javaagent:test" +# "apache-httpclient:apache-httpclient-5.2:library:test" +# "armeria:armeria-1.3:javaagent:test" +# "armeria:armeria-grpc-1.14:javaagent:test" +# "async-http-client:async-http-client-1.8:javaagent:test" +# "async-http-client:async-http-client-1.9:javaagent:test" +# "async-http-client:async-http-client-2.0:javaagent:test" +# "aws-lambda:aws-lambda-core-1.0:javaagent:test" +# "aws-lambda:aws-lambda-events-2.2:javaagent:test" +# "aws-lambda:aws-lambda-events-3.11:library:test" +# "aws-sdk:aws-sdk-1.11:javaagent:test" +# "aws-sdk:aws-sdk-1.11:javaagent:testStableSemconv" +# "aws-sdk:aws-sdk-2.2:javaagent:test" +# "aws-sdk:aws-sdk-2.2:javaagent:testBedrockRuntime" +# "aws-sdk:aws-sdk-2.2:javaagent:testStableSemconv" +# "c3p0-0.9:javaagent:test" +# "c3p0-0.9:javaagent:testStableSemconv" +# "camel-2.20:javaagent:test" +# "camel-2.20:javaagent:testExperimental" +# "camel-2.20:javaagent:testStableSemconv" +# "cassandra:cassandra-3.0:javaagent:test" +# "cassandra:cassandra-3.0:javaagent:testStableSemconv" +# "cassandra:cassandra-4.0:javaagent:test" +# "cassandra:cassandra-4.0:javaagent:testStableSemconv" +# "cassandra:cassandra-4.4:javaagent:test" +# "cassandra:cassandra-4.4:javaagent:testStableSemconv" +# "clickhouse:clickhouse-client-v1-0.5:javaagent:test" +# "clickhouse:clickhouse-client-v1-0.5:javaagent:testStableSemconv" +# "clickhouse:clickhouse-client-v2-0.8:javaagent:test" +# "clickhouse:clickhouse-client-v2-0.8:javaagent:testStableSemconv" +# "couchbase:couchbase-2.0:javaagent:test" +# "couchbase:couchbase-2.0:javaagent:testStableSemconv" +# "couchbase:couchbase-2.6:javaagent:test" +# "couchbase:couchbase-2.6:javaagent:testExperimental" +# "couchbase:couchbase-2.6:javaagent:testStableSemconv" +# "couchbase:couchbase-3.1:javaagent:test" +# "couchbase:couchbase-3.1.6:javaagent:test" +# "couchbase:couchbase-3.2:javaagent:test" +# "couchbase:couchbase-3.4:javaagent:test" +# "dropwizard:dropwizard-views-0.7:javaagent:test" +# "elasticsearch:elasticsearch-api-client-7.16:javaagent:test" +# "elasticsearch:elasticsearch-api-client-7.16:javaagent:testStableSemconv" +# "elasticsearch:elasticsearch-rest-7.0:javaagent:test" +# "elasticsearch:elasticsearch-rest-7.0:javaagent:testStableSemconv" +# "elasticsearch:elasticsearch-transport-5.0:javaagent:test" +# "elasticsearch:elasticsearch-transport-5.0:javaagent:testExperimental" +# "elasticsearch:elasticsearch-transport-5.0:javaagent:testStableSemconv" +# "elasticsearch:elasticsearch-transport-5.3:javaagent:test" +# "elasticsearch:elasticsearch-transport-5.3:javaagent:testExperimental" +# "elasticsearch:elasticsearch-transport-5.3:javaagent:testStableSemconv" +# "elasticsearch:elasticsearch-transport-6.0:javaagent:elasticsearch65Test" +# "elasticsearch:elasticsearch-transport-6.0:javaagent:elasticsearch65TestExperimental" +# "elasticsearch:elasticsearch-transport-6.0:javaagent:elasticsearch65TestStableSemconv" +# "elasticsearch:elasticsearch-transport-6.0:javaagent:elasticsearch6Test" +# "elasticsearch:elasticsearch-transport-6.0:javaagent:elasticsearch6TestExperimental" +# "elasticsearch:elasticsearch-transport-6.0:javaagent:elasticsearch6TestStableSemconv" +# "elasticsearch:elasticsearch-transport-6.0:javaagent:elasticsearch7Test" +# "elasticsearch:elasticsearch-transport-6.0:javaagent:elasticsearch7TestExperimental" +# "elasticsearch:elasticsearch-transport-6.0:javaagent:elasticsearch7TestStableSemconv" +# "failsafe-3.0:library:test" +# "finagle-http-23.11:javaagent:test" +# "finatra-2.9:javaagent:test" +# "geode-1.4:javaagent:test" +# "geode-1.4:javaagent:testStableSemconv" +# "google-http-client-1.19:javaagent:test" +# "grails-3.0:javaagent:test" +# "graphql-java:graphql-java-12.0:javaagent:test" +# "graphql-java:graphql-java-20.0:javaagent:test" +# "graphql-java:graphql-java-20.0:javaagent:testDataFetcher" +# "grizzly-2.3:javaagent:test" +# "grpc-1.6:javaagent:test" +# "grpc-1.6:javaagent:testExperimental" +# "gwt-2.0:javaagent:test" +# "helidon-4.3:javaagent:test" +# "hibernate:hibernate-3.3:javaagent:test" +# "hibernate:hibernate-3.3:javaagent:testExperimental" +# "hibernate:hibernate-4.0:javaagent:test" +# "hibernate:hibernate-4.0:javaagent:testExperimental" +# "hibernate:hibernate-6.0:javaagent:test" +# "hibernate:hibernate-6.0:javaagent:testExperimental" +# "hibernate:hibernate-procedure-call-4.3:javaagent:test" +# "hibernate:hibernate-procedure-call-4.3:javaagent:testExperimental" +# "hikaricp-3.0:javaagent:test" +# "hikaricp-3.0:javaagent:testStableSemconv" +# "http-url-connection:javaagent:test" +# "hystrix-1.4:javaagent:test" +# "hystrix-1.4:javaagent:testExperimental" +# "influxdb-2.4:javaagent:test" +# "influxdb-2.4:javaagent:testStableSemconv" +# "java-http-client:javaagent:test" +# "java-http-server:javaagent:test" +# "jaxrs:jaxrs-1.0:javaagent:test" +# "jaxrs:jaxrs-2.0:jaxrs-2.0-annotations:javaagent:test" +# "jaxrs:jaxrs-2.0:jaxrs-2.0-cxf-3.2:javaagent:test" +# "jaxrs:jaxrs-2.0:jaxrs-2.0-cxf-3.2:javaagent:testExperimental" +# "jaxrs:jaxrs-2.0:jaxrs-2.0-jersey-2.0:javaagent:test" +# "jaxrs:jaxrs-2.0:jaxrs-2.0-jersey-2.0:javaagent:testExperimental" +# "jaxrs:jaxrs-2.0:jaxrs-2.0-resteasy-3.0:javaagent:test" +# "jaxrs:jaxrs-2.0:jaxrs-2.0-resteasy-3.0:javaagent:testExperimental" +# "jaxrs:jaxrs-2.0:jaxrs-2.0-resteasy-3.1:javaagent:test" +# "jaxrs:jaxrs-2.0:jaxrs-2.0-resteasy-3.1:javaagent:testExperimental" +# "jaxrs:jaxrs-3.0:jaxrs-3.0-annotations:javaagent:test" +# "jaxrs:jaxrs-3.0:jaxrs-3.0-jersey-3.0:javaagent:test" +# "jaxrs:jaxrs-3.0:jaxrs-3.0-jersey-3.0:javaagent:testExperimental" +# "jaxrs:jaxrs-3.0:jaxrs-3.0-resteasy-6.0:javaagent:test" +# "jaxrs:jaxrs-3.0:jaxrs-3.0-resteasy-6.0:javaagent:testExperimental" +# "jaxws:jaxws-2.0:javaagent:test" +# "jaxws:jaxws-2.0-axis2-1.6:javaagent:test" +# "jaxws:jaxws-cxf-3.0:javaagent:test" +# "jaxws:jaxws-jws-api-1.1:javaagent:test" +# "jaxws:jaxws-metro-2.2:javaagent:test" +# "jedis:jedis-1.4:javaagent:test" +# "jedis:jedis-1.4:javaagent:testStableSemconv" +# "jedis:jedis-3.0:javaagent:test" +# "jedis:jedis-3.0:javaagent:testStableSemconv" +# "jedis:jedis-4.0:javaagent:test" +# "jedis:jedis-4.0:javaagent:testStableSemconv" +# "jetty:jetty-8.0:javaagent:test" +# "jetty:jetty-11.0:javaagent:test" +# "jetty:jetty-12.0:javaagent:test" +# "jetty-httpclient:jetty-httpclient-12.0:javaagent:test" +# "jetty-httpclient:jetty-httpclient-9.2:javaagent:test" +# "jms:jms-1.1:javaagent:test" +# "jodd-http-4.2:javaagent:test" +# "jsf:jsf-mojarra-1.2:javaagent:mojarra2Test" +# "jsf:jsf-mojarra-3.0:javaagent:test" +# "jsf:jsf-myfaces-1.2:javaagent:myfaces2Test" +# "jsf:jsf-myfaces-3.0:javaagent:test" +# "jsp-2.3:javaagent:test" +# "jsp-2.3:javaagent:testExperimental" +# "jfinal-3.2:javaagent:test" +# "kafka:kafka-clients:kafka-clients-2.6:library:test" +# "kafka:kafka-connect-2.6:testing:test" +# "ktor:ktor-1.0:library:test" +# "ktor:ktor-2.0:library:test" +# "ktor:ktor-3.0:library:test" +# "kubernetes-client-7.0:javaagent:test" +# "kubernetes-client-7.0:javaagent:testExperimental" +# "lettuce:lettuce-4.0:javaagent:test" +# "lettuce:lettuce-4.0:javaagent:testExperimental" +# "lettuce:lettuce-4.0:javaagent:testStableSemconv" +# "lettuce:lettuce-5.0:javaagent:test" +# "lettuce:lettuce-5.0:javaagent:testExperimental" +# "lettuce:lettuce-5.0:javaagent:testStableSemconv" +# "lettuce:lettuce-5.1:javaagent:test" +# "lettuce:lettuce-5.1:javaagent:testStableSemconv" + "mongo:mongo-3.1:javaagent:test" + "mongo:mongo-3.1:javaagent:testStableSemconv" + "mongo:mongo-3.7:javaagent:test" + "mongo:mongo-3.7:javaagent:testStableSemconv" + "mongo:mongo-4.0:javaagent:test" + "mongo:mongo-4.0:javaagent:testStableSemconv" + "mongo:mongo-async-3.3:javaagent:test" + "mongo:mongo-async-3.3:javaagent:testStableSemconv" +# "nats:nats-2.17:javaagent:test" +# "nats:nats-2.17:javaagent:testExperimental" +# "netty:netty-3.8:javaagent:test" +# "netty:netty-4.0:javaagent:test" +# "netty:netty-4.1:javaagent:test" +# "okhttp:okhttp-2.2:javaagent:test" +# "okhttp:okhttp-3.0:javaagent:test" +# "openai:openai-java-1.1:javaagent:test" +# "opensearch:opensearch-java-3.0:javaagent:test" +# "opensearch:opensearch-java-3.0:javaagent:testStableSemconv" +# "opensearch:opensearch-rest-1.0:javaagent:test" +# "opensearch:opensearch-rest-1.0:javaagent:testStableSemconv" +# "opensearch:opensearch-rest-3.0:javaagent:test" +# "opensearch:opensearch-rest-3.0:javaagent:testStableSemconv" +# "oshi:javaagent:test" +# "oshi:javaagent:testExperimental" +# "pekko:pekko-http-1.0:javaagent:test" +# "play:play-ws:play-ws-1.0:javaagent:test" +# "play:play-ws:play-ws-2.0:javaagent:test" +# "play:play-ws:play-ws-2.1:javaagent:test" +# "reactor:reactor-netty:reactor-netty-0.9:javaagent:test" +# "reactor:reactor-netty:reactor-netty-1.0:javaagent:test" +# "spring:spring-batch-3.0:javaagent:test" +# "spring:spring-data:spring-data-1.8:javaagent:test" +# "spring:spring-integration-4.1:javaagent:test" +# "spring:spring-integration-4.1:javaagent:testWithProducerInstrumentation" +# "spring:spring-integration-4.1:javaagent:testWithRabbitInstrumentation" +# "spring:spring-jms:spring-jms-2.0:javaagent:test" +# "spring:spring-kafka-2.7:javaagent:test" +# "spring:spring-kafka-2.7:javaagent:testNoReceiveTelemetry" +# "spring:spring-pulsar-1.0:javaagent:test" +# "spring:spring-rabbit-1.0:javaagent:test" +# "spring:spring-rmi-4.0:javaagent:test" +# "spring:spring-scheduling-3.1:javaagent:test" +# "spring:spring-scheduling-3.1:javaagent:testExperimental" +# "spring:spring-web:spring-web-3.1:library:test" +# "spring:spring-web:spring-web-6.0:javaagent:test" +# "spring:spring-webflux:spring-webflux-5.0:javaagent:test" +# "spring:spring-webflux:spring-webflux-5.0:javaagent:test" +# "spring:spring-webflux:spring-webflux-5.3:library:test" +# "spring:spring-webmvc:spring-webmvc-3.1:javaagent:test" +# "spring:spring-webmvc:spring-webmvc-3.1:javaagent:testExperimental" +# "spring:spring-webmvc:spring-webmvc-3.1:javaagent:testExperimental" +# "spring:spring-webmvc:spring-webmvc-5.3:library:test" +# "spring:spring-webmvc:spring-webmvc-6.0:javaagent:test" +# "spring:spring-webmvc:spring-webmvc-6.0:javaagent:test" +# "spring:spring-webmvc:spring-webmvc-6.0:javaagent:testExperimental" +# "tomcat:tomcat-jdbc:javaagent:test" +# "tomcat:tomcat-jdbc:javaagent:testStableSemconv" +# "vertx:vertx-http-client:vertx-http-client-3.0:javaagent:test" +# "vertx:vertx-http-client:vertx-http-client-4.0:javaagent:test" +# "vertx:vertx-http-client:vertx-http-client-5.0:javaagent:test" +# "vertx:vertx-redis-client-4.0:javaagent:test" +# "vertx:vertx-redis-client-4.0:javaagent:testStableSemconv" +# "vertx:vertx-sql-client:vertx-sql-client-4.0:javaagent:test" +# "vertx:vertx-sql-client:vertx-sql-client-4.0:javaagent:testStableSemconv" +# "vertx:vertx-sql-client:vertx-sql-client-5.0:javaagent:test" +# "vertx:vertx-sql-client:vertx-sql-client-5.0:javaagent:testStableSemconv" +# "vibur-dbcp-11.0:javaagent:test" +# "vibur-dbcp-11.0:javaagent:testStableSemconv" ) # Some instrumentation test suites don't run ARM, so we use colima to run them in an x86_64 diff --git a/instrumentation/mongo/mongo-3.1/javaagent/build.gradle.kts b/instrumentation/mongo/mongo-3.1/javaagent/build.gradle.kts index 6aae40ef6776..b6d8895627d1 100644 --- a/instrumentation/mongo/mongo-3.1/javaagent/build.gradle.kts +++ b/instrumentation/mongo/mongo-3.1/javaagent/build.gradle.kts @@ -26,12 +26,14 @@ dependencies { tasks { withType().configureEach { usesService(gradle.sharedServices.registrations["testcontainersBuildService"].service) + systemProperty("collectMetadata", findProperty("collectMetadata")?.toString() ?: "false") } val testStableSemconv by registering(Test::class) { testClassesDirs = sourceSets.test.get().output.classesDirs classpath = sourceSets.test.get().runtimeClasspath jvmArgs("-Dotel.semconv-stability.opt-in=database") + systemProperty("metadataConfig", "otel.semconv-stability.opt-in=database") } check { diff --git a/instrumentation/mongo/mongo-3.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v3_1/MongoInstrumentationSingletons.java b/instrumentation/mongo/mongo-3.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v3_1/MongoInstrumentationSingletons.java index e943f6fbc78c..72e0879a6bab 100644 --- a/instrumentation/mongo/mongo-3.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v3_1/MongoInstrumentationSingletons.java +++ b/instrumentation/mongo/mongo-3.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v3_1/MongoInstrumentationSingletons.java @@ -14,7 +14,7 @@ public final class MongoInstrumentationSingletons { public static final CommandListener LISTENER = - MongoTelemetry.builder(GlobalOpenTelemetry.get()) + MongoTelemetry.builder(GlobalOpenTelemetry.get(), "io.opentelemetry.mongo-3.1") .setStatementSanitizationEnabled( AgentInstrumentationConfig.get() .getBoolean( diff --git a/instrumentation/mongo/mongo-3.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/mongo/v3_1/MongoClientTest.java b/instrumentation/mongo/mongo-3.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/mongo/v3_1/MongoClientTest.java index b3cacf89ac32..9e94890764d2 100644 --- a/instrumentation/mongo/mongo-3.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/mongo/v3_1/MongoClientTest.java +++ b/instrumentation/mongo/mongo-3.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/mongo/v3_1/MongoClientTest.java @@ -19,6 +19,11 @@ class MongoClientTest extends AbstractMongo31ClientTest { @Override protected void configureMongoClientOptions(MongoClientOptions.Builder options) {} + @Override + protected String instrumentationName() { + return "io.opentelemetry.mongo-3.1"; + } + @Override protected InstrumentationExtension testing() { return testing; diff --git a/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoInstrumenterFactory.java b/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoInstrumenterFactory.java index 41cfc6c92bfc..e50cc972c77e 100644 --- a/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoInstrumenterFactory.java +++ b/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoInstrumenterFactory.java @@ -21,6 +21,7 @@ class MongoInstrumenterFactory { static Instrumenter createInstrumenter( OpenTelemetry openTelemetry, + String instrumentationName, boolean statementSanitizationEnabled, int maxNormalizedQueryLength) { @@ -30,7 +31,7 @@ static Instrumenter createInstrumenter( new MongoSpanNameExtractor(dbAttributesGetter, attributesExtractor); return Instrumenter.builder( - openTelemetry, "io.opentelemetry.mongo-3.1", spanNameExtractor) + openTelemetry, instrumentationName, spanNameExtractor) .addAttributesExtractor(DbClientAttributesExtractor.create(dbAttributesGetter)) .addAttributesExtractor( ServerAttributesExtractor.create(new MongoNetworkAttributesGetter())) diff --git a/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoTelemetry.java b/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoTelemetry.java index d1c27ef1c6a4..2ae70dcb17b4 100644 --- a/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoTelemetry.java +++ b/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoTelemetry.java @@ -19,22 +19,39 @@ public static MongoTelemetry create(OpenTelemetry openTelemetry) { return builder(openTelemetry).build(); } + /** Returns a new {@link MongoTelemetry} configured with the given {@link OpenTelemetry}. */ + public static MongoTelemetry create(OpenTelemetry openTelemetry, String instrumentationName) { + return builder(openTelemetry, instrumentationName).build(); + } + + /** + * Returns a new {@link MongoTelemetryBuilder} configured with the given {@link OpenTelemetry}. + */ + public static MongoTelemetryBuilder builder( + OpenTelemetry openTelemetry, String instrumentationName) { + return new MongoTelemetryBuilder(openTelemetry, instrumentationName); + } + /** * Returns a new {@link MongoTelemetryBuilder} configured with the given {@link OpenTelemetry}. */ public static MongoTelemetryBuilder builder(OpenTelemetry openTelemetry) { - return new MongoTelemetryBuilder(openTelemetry); + return new MongoTelemetryBuilder(openTelemetry, "io.opentelemetry.mongo-3.1"); } private final Instrumenter instrumenter; MongoTelemetry( OpenTelemetry openTelemetry, + String instrumentationName, boolean statementSanitizationEnabled, int maxNormalizedQueryLength) { this.instrumenter = MongoInstrumenterFactory.createInstrumenter( - openTelemetry, statementSanitizationEnabled, maxNormalizedQueryLength); + openTelemetry, + instrumentationName, + statementSanitizationEnabled, + maxNormalizedQueryLength); } /** diff --git a/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoTelemetryBuilder.java b/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoTelemetryBuilder.java index e7fa6d715dc5..ad31ab6b07ce 100644 --- a/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoTelemetryBuilder.java +++ b/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoTelemetryBuilder.java @@ -15,12 +15,14 @@ public final class MongoTelemetryBuilder { static final int DEFAULT_MAX_NORMALIZED_QUERY_LENGTH = 32 * 1024; private final OpenTelemetry openTelemetry; + private final String instrumentationName; private boolean statementSanitizationEnabled = true; private int maxNormalizedQueryLength = DEFAULT_MAX_NORMALIZED_QUERY_LENGTH; - MongoTelemetryBuilder(OpenTelemetry openTelemetry) { + MongoTelemetryBuilder(OpenTelemetry openTelemetry, String instrumentationName) { this.openTelemetry = openTelemetry; + this.instrumentationName = instrumentationName; } /** @@ -50,6 +52,6 @@ public MongoTelemetryBuilder setMaxNormalizedQueryLength(int maxNormalizedQueryL */ public MongoTelemetry build() { return new MongoTelemetry( - openTelemetry, statementSanitizationEnabled, maxNormalizedQueryLength); + openTelemetry, instrumentationName, statementSanitizationEnabled, maxNormalizedQueryLength); } } diff --git a/instrumentation/mongo/mongo-3.1/library/src/test/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoClientTest.java b/instrumentation/mongo/mongo-3.1/library/src/test/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoClientTest.java index 7124b410a2f6..e540f46323c7 100644 --- a/instrumentation/mongo/mongo-3.1/library/src/test/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoClientTest.java +++ b/instrumentation/mongo/mongo-3.1/library/src/test/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoClientTest.java @@ -15,6 +15,11 @@ class MongoClientTest extends AbstractMongo31ClientTest { @RegisterExtension private static final InstrumentationExtension testing = LibraryInstrumentationExtension.create(); + @Override + protected String instrumentationName() { + return "io.opentelemetry.mongo-3.1"; + } + @Override protected void configureMongoClientOptions(MongoClientOptions.Builder options) { options.addCommandListener( diff --git a/instrumentation/mongo/mongo-3.7/javaagent/build.gradle.kts b/instrumentation/mongo/mongo-3.7/javaagent/build.gradle.kts index 705fb69ff07a..1604169e258b 100644 --- a/instrumentation/mongo/mongo-3.7/javaagent/build.gradle.kts +++ b/instrumentation/mongo/mongo-3.7/javaagent/build.gradle.kts @@ -36,12 +36,14 @@ dependencies { tasks { withType().configureEach { usesService(gradle.sharedServices.registrations["testcontainersBuildService"].service) + systemProperty("collectMetadata", findProperty("collectMetadata")?.toString() ?: "false") } val testStableSemconv by registering(Test::class) { testClassesDirs = sourceSets.test.get().output.classesDirs classpath = sourceSets.test.get().runtimeClasspath jvmArgs("-Dotel.semconv-stability.opt-in=database") + systemProperty("metadataConfig", "otel.semconv-stability.opt-in=database") } check { diff --git a/instrumentation/mongo/mongo-3.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v3_7/MongoInstrumentationSingletons.java b/instrumentation/mongo/mongo-3.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v3_7/MongoInstrumentationSingletons.java index 9657ac335cbd..d9a2a91ec3af 100644 --- a/instrumentation/mongo/mongo-3.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v3_7/MongoInstrumentationSingletons.java +++ b/instrumentation/mongo/mongo-3.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v3_7/MongoInstrumentationSingletons.java @@ -14,7 +14,7 @@ public final class MongoInstrumentationSingletons { public static final CommandListener LISTENER = - MongoTelemetry.builder(GlobalOpenTelemetry.get()) + MongoTelemetry.builder(GlobalOpenTelemetry.get(), "io.opentelemetry.mongo-3.7") .setStatementSanitizationEnabled( AgentInstrumentationConfig.get() .getBoolean( diff --git a/instrumentation/mongo/mongo-3.7/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/mongo/v3_7/MongoClientTest.java b/instrumentation/mongo/mongo-3.7/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/mongo/v3_7/MongoClientTest.java index a8614bce27ef..969f1ec3ddff 100644 --- a/instrumentation/mongo/mongo-3.7/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/mongo/v3_7/MongoClientTest.java +++ b/instrumentation/mongo/mongo-3.7/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/mongo/v3_7/MongoClientTest.java @@ -34,6 +34,11 @@ class MongoClientTest extends AbstractMongoClientTest> { + @Override + protected String instrumentationName() { + return "io.opentelemetry.mongo-3.7"; + } + @RegisterExtension static final InstrumentationExtension testing = AgentInstrumentationExtension.create(); diff --git a/instrumentation/mongo/mongo-4.0/javaagent/build.gradle.kts b/instrumentation/mongo/mongo-4.0/javaagent/build.gradle.kts index db3481d9a7fa..ec81bd1d5a26 100644 --- a/instrumentation/mongo/mongo-4.0/javaagent/build.gradle.kts +++ b/instrumentation/mongo/mongo-4.0/javaagent/build.gradle.kts @@ -32,12 +32,14 @@ dependencies { tasks { withType().configureEach { usesService(gradle.sharedServices.registrations["testcontainersBuildService"].service) + systemProperty("collectMetadata", findProperty("collectMetadata")?.toString() ?: "false") } val testStableSemconv by registering(Test::class) { testClassesDirs = sourceSets.test.get().output.classesDirs classpath = sourceSets.test.get().runtimeClasspath jvmArgs("-Dotel.semconv-stability.opt-in=database") + systemProperty("metadataConfig", "otel.semconv-stability.opt-in=database") } check { diff --git a/instrumentation/mongo/mongo-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v4_0/MongoInstrumentationSingletons.java b/instrumentation/mongo/mongo-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v4_0/MongoInstrumentationSingletons.java index 3389cc5bb6a3..881be21a4d50 100644 --- a/instrumentation/mongo/mongo-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v4_0/MongoInstrumentationSingletons.java +++ b/instrumentation/mongo/mongo-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v4_0/MongoInstrumentationSingletons.java @@ -14,7 +14,7 @@ public final class MongoInstrumentationSingletons { public static final CommandListener LISTENER = - MongoTelemetry.builder(GlobalOpenTelemetry.get()) + MongoTelemetry.builder(GlobalOpenTelemetry.get(), "io.opentelemetry.mongo-4.0") .setStatementSanitizationEnabled( AgentInstrumentationConfig.get() .getBoolean( diff --git a/instrumentation/mongo/mongo-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/mongo/v4_0/Mongo4ReactiveClientTest.java b/instrumentation/mongo/mongo-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/mongo/v4_0/Mongo4ReactiveClientTest.java index f5fb03e54294..41954f16ab6a 100644 --- a/instrumentation/mongo/mongo-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/mongo/v4_0/Mongo4ReactiveClientTest.java +++ b/instrumentation/mongo/mongo-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/mongo/v4_0/Mongo4ReactiveClientTest.java @@ -36,6 +36,10 @@ import org.reactivestreams.Subscription; class Mongo4ReactiveClientTest extends AbstractMongoClientTest> { + @Override + protected String instrumentationName() { + return "io.opentelemetry.mongo-4.0"; + } @RegisterExtension static final InstrumentationExtension testing = AgentInstrumentationExtension.create(); diff --git a/instrumentation/mongo/mongo-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/mongo/v4_0/MongoClientTest.java b/instrumentation/mongo/mongo-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/mongo/v4_0/MongoClientTest.java index 864288e9ec6b..38c800152659 100644 --- a/instrumentation/mongo/mongo-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/mongo/v4_0/MongoClientTest.java +++ b/instrumentation/mongo/mongo-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/mongo/v4_0/MongoClientTest.java @@ -30,6 +30,11 @@ class MongoClientTest extends AbstractMongoClientTest> { + @Override + protected String instrumentationName() { + return "io.opentelemetry.mongo-4.0"; + } + @RegisterExtension static final InstrumentationExtension testing = AgentInstrumentationExtension.create(); diff --git a/instrumentation/mongo/mongo-async-3.3/javaagent/build.gradle.kts b/instrumentation/mongo/mongo-async-3.3/javaagent/build.gradle.kts index 682a47f552e4..064032497ecd 100644 --- a/instrumentation/mongo/mongo-async-3.3/javaagent/build.gradle.kts +++ b/instrumentation/mongo/mongo-async-3.3/javaagent/build.gradle.kts @@ -27,12 +27,14 @@ dependencies { tasks { withType().configureEach { usesService(gradle.sharedServices.registrations["testcontainersBuildService"].service) + systemProperty("collectMetadata", findProperty("collectMetadata")?.toString() ?: "false") } val testStableSemconv by registering(Test::class) { testClassesDirs = sourceSets.test.get().output.classesDirs classpath = sourceSets.test.get().runtimeClasspath jvmArgs("-Dotel.semconv-stability.opt-in=database") + systemProperty("metadataConfig", "otel.semconv-stability.opt-in=database") } check { diff --git a/instrumentation/mongo/mongo-async-3.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongoasync/v3_3/MongoInstrumentationSingletons.java b/instrumentation/mongo/mongo-async-3.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongoasync/v3_3/MongoInstrumentationSingletons.java index 2280ce533637..f5ef51e7a6e6 100644 --- a/instrumentation/mongo/mongo-async-3.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongoasync/v3_3/MongoInstrumentationSingletons.java +++ b/instrumentation/mongo/mongo-async-3.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongoasync/v3_3/MongoInstrumentationSingletons.java @@ -14,7 +14,7 @@ public final class MongoInstrumentationSingletons { public static final CommandListener LISTENER = - MongoTelemetry.builder(GlobalOpenTelemetry.get()) + MongoTelemetry.builder(GlobalOpenTelemetry.get(), "io.opentelemetry.mongo-async-3.3") .setStatementSanitizationEnabled( AgentInstrumentationConfig.get() .getBoolean( diff --git a/instrumentation/mongo/mongo-async-3.3/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/mongoasync/v3_3/MongoAsyncClientTest.java b/instrumentation/mongo/mongo-async-3.3/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/mongoasync/v3_3/MongoAsyncClientTest.java index 80b0807f9402..114fa9555937 100644 --- a/instrumentation/mongo/mongo-async-3.3/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/mongoasync/v3_3/MongoAsyncClientTest.java +++ b/instrumentation/mongo/mongo-async-3.3/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/mongoasync/v3_3/MongoAsyncClientTest.java @@ -32,6 +32,11 @@ class MongoAsyncClientTest extends AbstractMongoClientTest> { + @Override + protected String instrumentationName() { + return "io.opentelemetry.mongo-4.0"; + } + @RegisterExtension static final InstrumentationExtension testing = AgentInstrumentationExtension.create(); diff --git a/instrumentation/mongo/mongo-common/testing/src/main/java/io/opentelemetry/instrumentation/mongo/testing/AbstractMongoClientTest.java b/instrumentation/mongo/mongo-common/testing/src/main/java/io/opentelemetry/instrumentation/mongo/testing/AbstractMongoClientTest.java index e1fc1449595d..b54a8caef2d6 100644 --- a/instrumentation/mongo/mongo-common/testing/src/main/java/io/opentelemetry/instrumentation/mongo/testing/AbstractMongoClientTest.java +++ b/instrumentation/mongo/mongo-common/testing/src/main/java/io/opentelemetry/instrumentation/mongo/testing/AbstractMongoClientTest.java @@ -7,9 +7,14 @@ import static io.opentelemetry.api.trace.SpanKind.CLIENT; import static io.opentelemetry.instrumentation.api.internal.SemconvStability.emitStableDatabaseSemconv; +import static io.opentelemetry.instrumentation.testing.junit.db.DbClientMetricsTestUtil.assertDurationMetric; import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static io.opentelemetry.semconv.DbAttributes.DB_COLLECTION_NAME; +import static io.opentelemetry.semconv.DbAttributes.DB_NAMESPACE; +import static io.opentelemetry.semconv.DbAttributes.DB_OPERATION_NAME; +import static io.opentelemetry.semconv.DbAttributes.DB_SYSTEM_NAME; import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_CONNECTION_STRING; @@ -49,6 +54,8 @@ public abstract class AbstractMongoClientTest { protected String host; protected int port; + protected abstract String instrumentationName(); + @BeforeAll void setup() { mongodb = @@ -254,6 +261,16 @@ void testGetCollection() throws Exception { "{\"count\":\"" + collectionName + "\",\"$db\":\"?\",\"lsid\":{\"id\":\"?\"}}")))); + + assertDurationMetric( + testing(), + instrumentationName(), + DB_SYSTEM_NAME, + DB_OPERATION_NAME, + DB_NAMESPACE, + DB_COLLECTION_NAME, + SERVER_ADDRESS, + SERVER_PORT); } @Test From 063cb80a03c348eec82b9fe1e713e006d67e5bac Mon Sep 17 00:00:00 2001 From: Jay DeLuca Date: Mon, 1 Dec 2025 10:25:39 -0500 Subject: [PATCH 2/9] update --- docs/instrumentation-list.yaml | 296 ++++++++++++ instrumentation-docs/collect.sh | 40 +- instrumentation-docs/instrumentations.sh | 438 +++++++++--------- instrumentation/mongo/mongo-3.1/metadata.yaml | 19 + instrumentation/mongo/mongo-3.7/metadata.yaml | 19 + instrumentation/mongo/mongo-4.0/metadata.yaml | 19 + .../mongoasync/v3_3/MongoAsyncClientTest.java | 2 +- .../mongo/mongo-async-3.3/metadata.yaml | 19 + 8 files changed, 612 insertions(+), 240 deletions(-) create mode 100644 instrumentation/mongo/mongo-3.1/metadata.yaml create mode 100644 instrumentation/mongo/mongo-3.7/metadata.yaml create mode 100644 instrumentation/mongo/mongo-4.0/metadata.yaml create mode 100644 instrumentation/mongo/mongo-async-3.3/metadata.yaml diff --git a/docs/instrumentation-list.yaml b/docs/instrumentation-list.yaml index 8af5fd88109e..e54e0a0f82c6 100644 --- a/docs/instrumentation-list.yaml +++ b/docs/instrumentation-list.yaml @@ -8145,6 +8145,13 @@ libraries: - io.micrometer:micrometer-core:1.5.0 mongo: - name: mongo-3.1 + display_name: MongoDB Driver + description: | + This instrumentation enables database client spans and database client metrics for the MongoDB Java driver. + semantic_conventions: + - DATABASE_CLIENT_SPANS + - DATABASE_CLIENT_METRICS + library_link: https://www.mongodb.com/docs/drivers/java-drivers/ source_path: instrumentation/mongo/mongo-3.1 scope: name: io.opentelemetry.mongo-3.1 @@ -8153,7 +8160,81 @@ libraries: - org.mongodb:mongo-java-driver:[3.1,) library: - org.mongodb:mongo-java-driver:3.1.0 + configurations: + - name: otel.instrumentation.mongo.statement-sanitizer.enabled + description: | + Enables statement sanitization for MongoDB queries. Takes precedence over otel.instrumentation.common.db-statement-sanitizer.enabled. + type: boolean + default: true + - name: otel.instrumentation.common.db-statement-sanitizer.enabled + description: Enables statement sanitization for database queries. + type: boolean + default: true + telemetry: + - when: default + spans: + - span_kind: CLIENT + attributes: + - name: db.connection_string + type: STRING + - name: db.mongodb.collection + type: STRING + - name: db.name + type: STRING + - name: db.operation + type: STRING + - name: db.statement + type: STRING + - name: db.system + type: STRING + - name: server.address + type: STRING + - name: server.port + type: LONG + - when: otel.semconv-stability.opt-in=database + metrics: + - name: db.client.operation.duration + description: Duration of database client operations. + type: HISTOGRAM + unit: s + attributes: + - name: db.collection.name + type: STRING + - name: db.namespace + type: STRING + - name: db.operation.name + type: STRING + - name: db.system.name + type: STRING + - name: server.address + type: STRING + - name: server.port + type: LONG + spans: + - span_kind: CLIENT + attributes: + - name: db.collection.name + type: STRING + - name: db.namespace + type: STRING + - name: db.operation.name + type: STRING + - name: db.query.text + type: STRING + - name: db.system.name + type: STRING + - name: server.address + type: STRING + - name: server.port + type: LONG - name: mongo-3.7 + display_name: MongoDB Driver + description: | + This instrumentation enables database client spans and database client metrics for the MongoDB Java driver. + semantic_conventions: + - DATABASE_CLIENT_SPANS + - DATABASE_CLIENT_METRICS + library_link: https://www.mongodb.com/docs/drivers/java-drivers/ source_path: instrumentation/mongo/mongo-3.7 scope: name: io.opentelemetry.mongo-3.7 @@ -8161,20 +8242,235 @@ libraries: javaagent: - org.mongodb:mongodb-driver-core:[3.7, 4.0) - org.mongodb:mongo-java-driver:[3.7, 4.0) + configurations: + - name: otel.instrumentation.mongo.statement-sanitizer.enabled + description: | + Enables statement sanitization for MongoDB queries. Takes precedence over otel.instrumentation.common.db-statement-sanitizer.enabled. + type: boolean + default: true + - name: otel.instrumentation.common.db-statement-sanitizer.enabled + description: Enables statement sanitization for database queries. + type: boolean + default: true + telemetry: + - when: default + spans: + - span_kind: CLIENT + attributes: + - name: db.connection_string + type: STRING + - name: db.mongodb.collection + type: STRING + - name: db.name + type: STRING + - name: db.operation + type: STRING + - name: db.statement + type: STRING + - name: db.system + type: STRING + - name: server.address + type: STRING + - name: server.port + type: LONG + - when: otel.semconv-stability.opt-in=database + metrics: + - name: db.client.operation.duration + description: Duration of database client operations. + type: HISTOGRAM + unit: s + attributes: + - name: db.collection.name + type: STRING + - name: db.namespace + type: STRING + - name: db.operation.name + type: STRING + - name: db.system.name + type: STRING + - name: server.address + type: STRING + - name: server.port + type: LONG + spans: + - span_kind: CLIENT + attributes: + - name: db.collection.name + type: STRING + - name: db.namespace + type: STRING + - name: db.operation.name + type: STRING + - name: db.query.text + type: STRING + - name: db.system.name + type: STRING + - name: server.address + type: STRING + - name: server.port + type: LONG - name: mongo-4.0 + display_name: MongoDB Driver + description: | + This instrumentation enables database client spans and database client metrics for the MongoDB Java driver. + semantic_conventions: + - DATABASE_CLIENT_SPANS + - DATABASE_CLIENT_METRICS + library_link: https://www.mongodb.com/docs/drivers/java-drivers/ source_path: instrumentation/mongo/mongo-4.0 scope: name: io.opentelemetry.mongo-4.0 target_versions: javaagent: - org.mongodb:mongodb-driver-core:[4.0,) + configurations: + - name: otel.instrumentation.mongo.statement-sanitizer.enabled + description: | + Enables statement sanitization for MongoDB queries. Takes precedence over otel.instrumentation.common.db-statement-sanitizer.enabled. + type: boolean + default: true + - name: otel.instrumentation.common.db-statement-sanitizer.enabled + description: Enables statement sanitization for database queries. + type: boolean + default: true + telemetry: + - when: default + spans: + - span_kind: CLIENT + attributes: + - name: db.connection_string + type: STRING + - name: db.mongodb.collection + type: STRING + - name: db.name + type: STRING + - name: db.operation + type: STRING + - name: db.statement + type: STRING + - name: db.system + type: STRING + - name: server.address + type: STRING + - name: server.port + type: LONG + - when: otel.semconv-stability.opt-in=database + metrics: + - name: db.client.operation.duration + description: Duration of database client operations. + type: HISTOGRAM + unit: s + attributes: + - name: db.collection.name + type: STRING + - name: db.namespace + type: STRING + - name: db.operation.name + type: STRING + - name: db.system.name + type: STRING + - name: server.address + type: STRING + - name: server.port + type: LONG + spans: + - span_kind: CLIENT + attributes: + - name: db.collection.name + type: STRING + - name: db.namespace + type: STRING + - name: db.operation.name + type: STRING + - name: db.query.text + type: STRING + - name: db.system.name + type: STRING + - name: server.address + type: STRING + - name: server.port + type: LONG - name: mongo-async-3.3 + display_name: MongoDB Driver (Async) + description: | + This instrumentation enables database client spans and database client metrics for the MongoDB async Java driver. + semantic_conventions: + - DATABASE_CLIENT_SPANS + - DATABASE_CLIENT_METRICS + library_link: https://www.mongodb.com/docs/drivers/java-drivers/ source_path: instrumentation/mongo/mongo-async-3.3 scope: name: io.opentelemetry.mongo-async-3.3 target_versions: javaagent: - org.mongodb:mongodb-driver-async:[3.3,) + configurations: + - name: otel.instrumentation.mongo.statement-sanitizer.enabled + description: | + Enables statement sanitization for MongoDB queries. Takes precedence over otel.instrumentation.common.db-statement-sanitizer.enabled. + type: boolean + default: true + - name: otel.instrumentation.common.db-statement-sanitizer.enabled + description: Enables statement sanitization for database queries. + type: boolean + default: true + telemetry: + - when: default + spans: + - span_kind: CLIENT + attributes: + - name: db.connection_string + type: STRING + - name: db.mongodb.collection + type: STRING + - name: db.name + type: STRING + - name: db.operation + type: STRING + - name: db.statement + type: STRING + - name: db.system + type: STRING + - name: server.address + type: STRING + - name: server.port + type: LONG + - when: otel.semconv-stability.opt-in=database + metrics: + - name: db.client.operation.duration + description: Duration of database client operations. + type: HISTOGRAM + unit: s + attributes: + - name: db.collection.name + type: STRING + - name: db.namespace + type: STRING + - name: db.operation.name + type: STRING + - name: db.system.name + type: STRING + - name: server.address + type: STRING + - name: server.port + type: LONG + spans: + - span_kind: CLIENT + attributes: + - name: db.collection.name + type: STRING + - name: db.namespace + type: STRING + - name: db.operation.name + type: STRING + - name: db.query.text + type: STRING + - name: db.system.name + type: STRING + - name: server.address + type: STRING + - name: server.port + type: LONG mybatis: - name: mybatis-3.2 disabled_by_default: true diff --git a/instrumentation-docs/collect.sh b/instrumentation-docs/collect.sh index bd591f243327..bb2207ace2ae 100755 --- a/instrumentation-docs/collect.sh +++ b/instrumentation-docs/collect.sh @@ -171,26 +171,26 @@ main() { done < <(process_descriptors "${INSTRUMENTATIONS[@]}") run_gradle_tasks "${gradle_tasks[@]}" -# # Process instrumentations requiring testLatestDeps -# echo "Processing instrumentations with -PtestLatestDeps=true..." -# gradle_tasks=() -# while IFS= read -r line; do -# gradle_tasks+=("$line") -# done < <(process_descriptors "${TEST_LATEST_DEPS_INSTRUMENTATIONS[@]}") -# run_gradle_tasks_with_latest_deps "${gradle_tasks[@]}" -# -# # Setup colima if needed -# setup_colima -# -# # Process colima-specific instrumentations -# echo "Processing colima instrumentations..." -# gradle_tasks=() -# while IFS= read -r line; do -# gradle_tasks+=("$line") -# done < <(process_descriptors "${COLIMA_INSTRUMENTATIONS[@]}") -# run_gradle_tasks "${gradle_tasks[@]}" -# -# colima stop + # Process instrumentations requiring testLatestDeps + echo "Processing instrumentations with -PtestLatestDeps=true..." + gradle_tasks=() + while IFS= read -r line; do + gradle_tasks+=("$line") + done < <(process_descriptors "${TEST_LATEST_DEPS_INSTRUMENTATIONS[@]}") + run_gradle_tasks_with_latest_deps "${gradle_tasks[@]}" + + # Setup colima if needed + setup_colima + + # Process colima-specific instrumentations + echo "Processing colima instrumentations..." + gradle_tasks=() + while IFS= read -r line; do + gradle_tasks+=("$line") + done < <(process_descriptors "${COLIMA_INSTRUMENTATIONS[@]}") + run_gradle_tasks "${gradle_tasks[@]}" + + colima stop # uncomment the next line to remove all .telemetry directories #find_and_remove_all_telemetry diff --git a/instrumentation-docs/instrumentations.sh b/instrumentation-docs/instrumentations.sh index e99e200d7df5..11c5480dee54 100755 --- a/instrumentation-docs/instrumentations.sh +++ b/instrumentation-docs/instrumentations.sh @@ -6,165 +6,165 @@ set -euo pipefail readonly INSTRUMENTATIONS=( # : : [ gradle-task-suffix ] -# "activej-http-6.0:javaagent:test" -# "akka:akka-http-10.0:javaagent:test" -# "alibaba-druid-1.0:javaagent:test" -# "alibaba-druid-1.0:javaagent:testStableSemconv" -# "apache-dbcp-2.0:javaagent:test" -# "apache-dbcp-2.0:javaagent:testStableSemconv" -# "apache-dubbo-2.7:javaagent:testDubbo" -# "apache-elasticjob-3.0:javaagent:test" -# "apache-elasticjob-3.0:javaagent:testExperimental" -# "apache-httpasyncclient-4.1:javaagent:test" -# "apache-httpclient:apache-httpclient-2.0:javaagent:test" -# "apache-httpclient:apache-httpclient-4.0:javaagent:test" -# "apache-httpclient:apache-httpclient-4.3:library:test" -# "apache-httpclient:apache-httpclient-5.0:javaagent:test" -# "apache-httpclient:apache-httpclient-5.2:library:test" -# "armeria:armeria-1.3:javaagent:test" -# "armeria:armeria-grpc-1.14:javaagent:test" -# "async-http-client:async-http-client-1.8:javaagent:test" -# "async-http-client:async-http-client-1.9:javaagent:test" -# "async-http-client:async-http-client-2.0:javaagent:test" -# "aws-lambda:aws-lambda-core-1.0:javaagent:test" -# "aws-lambda:aws-lambda-events-2.2:javaagent:test" -# "aws-lambda:aws-lambda-events-3.11:library:test" -# "aws-sdk:aws-sdk-1.11:javaagent:test" -# "aws-sdk:aws-sdk-1.11:javaagent:testStableSemconv" -# "aws-sdk:aws-sdk-2.2:javaagent:test" -# "aws-sdk:aws-sdk-2.2:javaagent:testBedrockRuntime" -# "aws-sdk:aws-sdk-2.2:javaagent:testStableSemconv" -# "c3p0-0.9:javaagent:test" -# "c3p0-0.9:javaagent:testStableSemconv" -# "camel-2.20:javaagent:test" -# "camel-2.20:javaagent:testExperimental" -# "camel-2.20:javaagent:testStableSemconv" -# "cassandra:cassandra-3.0:javaagent:test" -# "cassandra:cassandra-3.0:javaagent:testStableSemconv" -# "cassandra:cassandra-4.0:javaagent:test" -# "cassandra:cassandra-4.0:javaagent:testStableSemconv" -# "cassandra:cassandra-4.4:javaagent:test" -# "cassandra:cassandra-4.4:javaagent:testStableSemconv" -# "clickhouse:clickhouse-client-v1-0.5:javaagent:test" -# "clickhouse:clickhouse-client-v1-0.5:javaagent:testStableSemconv" -# "clickhouse:clickhouse-client-v2-0.8:javaagent:test" -# "clickhouse:clickhouse-client-v2-0.8:javaagent:testStableSemconv" -# "couchbase:couchbase-2.0:javaagent:test" -# "couchbase:couchbase-2.0:javaagent:testStableSemconv" -# "couchbase:couchbase-2.6:javaagent:test" -# "couchbase:couchbase-2.6:javaagent:testExperimental" -# "couchbase:couchbase-2.6:javaagent:testStableSemconv" -# "couchbase:couchbase-3.1:javaagent:test" -# "couchbase:couchbase-3.1.6:javaagent:test" -# "couchbase:couchbase-3.2:javaagent:test" -# "couchbase:couchbase-3.4:javaagent:test" -# "dropwizard:dropwizard-views-0.7:javaagent:test" -# "elasticsearch:elasticsearch-api-client-7.16:javaagent:test" -# "elasticsearch:elasticsearch-api-client-7.16:javaagent:testStableSemconv" -# "elasticsearch:elasticsearch-rest-7.0:javaagent:test" -# "elasticsearch:elasticsearch-rest-7.0:javaagent:testStableSemconv" -# "elasticsearch:elasticsearch-transport-5.0:javaagent:test" -# "elasticsearch:elasticsearch-transport-5.0:javaagent:testExperimental" -# "elasticsearch:elasticsearch-transport-5.0:javaagent:testStableSemconv" -# "elasticsearch:elasticsearch-transport-5.3:javaagent:test" -# "elasticsearch:elasticsearch-transport-5.3:javaagent:testExperimental" -# "elasticsearch:elasticsearch-transport-5.3:javaagent:testStableSemconv" -# "elasticsearch:elasticsearch-transport-6.0:javaagent:elasticsearch65Test" -# "elasticsearch:elasticsearch-transport-6.0:javaagent:elasticsearch65TestExperimental" -# "elasticsearch:elasticsearch-transport-6.0:javaagent:elasticsearch65TestStableSemconv" -# "elasticsearch:elasticsearch-transport-6.0:javaagent:elasticsearch6Test" -# "elasticsearch:elasticsearch-transport-6.0:javaagent:elasticsearch6TestExperimental" -# "elasticsearch:elasticsearch-transport-6.0:javaagent:elasticsearch6TestStableSemconv" -# "elasticsearch:elasticsearch-transport-6.0:javaagent:elasticsearch7Test" -# "elasticsearch:elasticsearch-transport-6.0:javaagent:elasticsearch7TestExperimental" -# "elasticsearch:elasticsearch-transport-6.0:javaagent:elasticsearch7TestStableSemconv" -# "failsafe-3.0:library:test" -# "finagle-http-23.11:javaagent:test" -# "finatra-2.9:javaagent:test" -# "geode-1.4:javaagent:test" -# "geode-1.4:javaagent:testStableSemconv" -# "google-http-client-1.19:javaagent:test" -# "grails-3.0:javaagent:test" -# "graphql-java:graphql-java-12.0:javaagent:test" -# "graphql-java:graphql-java-20.0:javaagent:test" -# "graphql-java:graphql-java-20.0:javaagent:testDataFetcher" -# "grizzly-2.3:javaagent:test" -# "grpc-1.6:javaagent:test" -# "grpc-1.6:javaagent:testExperimental" -# "gwt-2.0:javaagent:test" -# "helidon-4.3:javaagent:test" -# "hibernate:hibernate-3.3:javaagent:test" -# "hibernate:hibernate-3.3:javaagent:testExperimental" -# "hibernate:hibernate-4.0:javaagent:test" -# "hibernate:hibernate-4.0:javaagent:testExperimental" -# "hibernate:hibernate-6.0:javaagent:test" -# "hibernate:hibernate-6.0:javaagent:testExperimental" -# "hibernate:hibernate-procedure-call-4.3:javaagent:test" -# "hibernate:hibernate-procedure-call-4.3:javaagent:testExperimental" -# "hikaricp-3.0:javaagent:test" -# "hikaricp-3.0:javaagent:testStableSemconv" -# "http-url-connection:javaagent:test" -# "hystrix-1.4:javaagent:test" -# "hystrix-1.4:javaagent:testExperimental" -# "influxdb-2.4:javaagent:test" -# "influxdb-2.4:javaagent:testStableSemconv" -# "java-http-client:javaagent:test" -# "java-http-server:javaagent:test" -# "jaxrs:jaxrs-1.0:javaagent:test" -# "jaxrs:jaxrs-2.0:jaxrs-2.0-annotations:javaagent:test" -# "jaxrs:jaxrs-2.0:jaxrs-2.0-cxf-3.2:javaagent:test" -# "jaxrs:jaxrs-2.0:jaxrs-2.0-cxf-3.2:javaagent:testExperimental" -# "jaxrs:jaxrs-2.0:jaxrs-2.0-jersey-2.0:javaagent:test" -# "jaxrs:jaxrs-2.0:jaxrs-2.0-jersey-2.0:javaagent:testExperimental" -# "jaxrs:jaxrs-2.0:jaxrs-2.0-resteasy-3.0:javaagent:test" -# "jaxrs:jaxrs-2.0:jaxrs-2.0-resteasy-3.0:javaagent:testExperimental" -# "jaxrs:jaxrs-2.0:jaxrs-2.0-resteasy-3.1:javaagent:test" -# "jaxrs:jaxrs-2.0:jaxrs-2.0-resteasy-3.1:javaagent:testExperimental" -# "jaxrs:jaxrs-3.0:jaxrs-3.0-annotations:javaagent:test" -# "jaxrs:jaxrs-3.0:jaxrs-3.0-jersey-3.0:javaagent:test" -# "jaxrs:jaxrs-3.0:jaxrs-3.0-jersey-3.0:javaagent:testExperimental" -# "jaxrs:jaxrs-3.0:jaxrs-3.0-resteasy-6.0:javaagent:test" -# "jaxrs:jaxrs-3.0:jaxrs-3.0-resteasy-6.0:javaagent:testExperimental" -# "jaxws:jaxws-2.0:javaagent:test" -# "jaxws:jaxws-2.0-axis2-1.6:javaagent:test" -# "jaxws:jaxws-cxf-3.0:javaagent:test" -# "jaxws:jaxws-jws-api-1.1:javaagent:test" -# "jaxws:jaxws-metro-2.2:javaagent:test" -# "jedis:jedis-1.4:javaagent:test" -# "jedis:jedis-1.4:javaagent:testStableSemconv" -# "jedis:jedis-3.0:javaagent:test" -# "jedis:jedis-3.0:javaagent:testStableSemconv" -# "jedis:jedis-4.0:javaagent:test" -# "jedis:jedis-4.0:javaagent:testStableSemconv" -# "jetty:jetty-8.0:javaagent:test" -# "jetty:jetty-11.0:javaagent:test" -# "jetty:jetty-12.0:javaagent:test" -# "jetty-httpclient:jetty-httpclient-12.0:javaagent:test" -# "jetty-httpclient:jetty-httpclient-9.2:javaagent:test" -# "jms:jms-1.1:javaagent:test" -# "jodd-http-4.2:javaagent:test" -# "jsf:jsf-mojarra-1.2:javaagent:mojarra2Test" -# "jsf:jsf-mojarra-3.0:javaagent:test" -# "jsf:jsf-myfaces-1.2:javaagent:myfaces2Test" -# "jsf:jsf-myfaces-3.0:javaagent:test" -# "jsp-2.3:javaagent:test" -# "jsp-2.3:javaagent:testExperimental" -# "jfinal-3.2:javaagent:test" -# "kafka:kafka-clients:kafka-clients-2.6:library:test" -# "kafka:kafka-connect-2.6:testing:test" -# "ktor:ktor-1.0:library:test" -# "ktor:ktor-2.0:library:test" -# "ktor:ktor-3.0:library:test" -# "kubernetes-client-7.0:javaagent:test" -# "kubernetes-client-7.0:javaagent:testExperimental" -# "lettuce:lettuce-4.0:javaagent:test" -# "lettuce:lettuce-4.0:javaagent:testExperimental" -# "lettuce:lettuce-4.0:javaagent:testStableSemconv" -# "lettuce:lettuce-5.0:javaagent:test" -# "lettuce:lettuce-5.0:javaagent:testExperimental" -# "lettuce:lettuce-5.0:javaagent:testStableSemconv" -# "lettuce:lettuce-5.1:javaagent:test" -# "lettuce:lettuce-5.1:javaagent:testStableSemconv" + "activej-http-6.0:javaagent:test" + "akka:akka-http-10.0:javaagent:test" + "alibaba-druid-1.0:javaagent:test" + "alibaba-druid-1.0:javaagent:testStableSemconv" + "apache-dbcp-2.0:javaagent:test" + "apache-dbcp-2.0:javaagent:testStableSemconv" + "apache-dubbo-2.7:javaagent:testDubbo" + "apache-elasticjob-3.0:javaagent:test" + "apache-elasticjob-3.0:javaagent:testExperimental" + "apache-httpasyncclient-4.1:javaagent:test" + "apache-httpclient:apache-httpclient-2.0:javaagent:test" + "apache-httpclient:apache-httpclient-4.0:javaagent:test" + "apache-httpclient:apache-httpclient-4.3:library:test" + "apache-httpclient:apache-httpclient-5.0:javaagent:test" + "apache-httpclient:apache-httpclient-5.2:library:test" + "armeria:armeria-1.3:javaagent:test" + "armeria:armeria-grpc-1.14:javaagent:test" + "async-http-client:async-http-client-1.8:javaagent:test" + "async-http-client:async-http-client-1.9:javaagent:test" + "async-http-client:async-http-client-2.0:javaagent:test" + "aws-lambda:aws-lambda-core-1.0:javaagent:test" + "aws-lambda:aws-lambda-events-2.2:javaagent:test" + "aws-lambda:aws-lambda-events-3.11:library:test" + "aws-sdk:aws-sdk-1.11:javaagent:test" + "aws-sdk:aws-sdk-1.11:javaagent:testStableSemconv" + "aws-sdk:aws-sdk-2.2:javaagent:test" + "aws-sdk:aws-sdk-2.2:javaagent:testBedrockRuntime" + "aws-sdk:aws-sdk-2.2:javaagent:testStableSemconv" + "c3p0-0.9:javaagent:test" + "c3p0-0.9:javaagent:testStableSemconv" + "camel-2.20:javaagent:test" + "camel-2.20:javaagent:testExperimental" + "camel-2.20:javaagent:testStableSemconv" + "cassandra:cassandra-3.0:javaagent:test" + "cassandra:cassandra-3.0:javaagent:testStableSemconv" + "cassandra:cassandra-4.0:javaagent:test" + "cassandra:cassandra-4.0:javaagent:testStableSemconv" + "cassandra:cassandra-4.4:javaagent:test" + "cassandra:cassandra-4.4:javaagent:testStableSemconv" + "clickhouse:clickhouse-client-v1-0.5:javaagent:test" + "clickhouse:clickhouse-client-v1-0.5:javaagent:testStableSemconv" + "clickhouse:clickhouse-client-v2-0.8:javaagent:test" + "clickhouse:clickhouse-client-v2-0.8:javaagent:testStableSemconv" + "couchbase:couchbase-2.0:javaagent:test" + "couchbase:couchbase-2.0:javaagent:testStableSemconv" + "couchbase:couchbase-2.6:javaagent:test" + "couchbase:couchbase-2.6:javaagent:testExperimental" + "couchbase:couchbase-2.6:javaagent:testStableSemconv" + "couchbase:couchbase-3.1:javaagent:test" + "couchbase:couchbase-3.1.6:javaagent:test" + "couchbase:couchbase-3.2:javaagent:test" + "couchbase:couchbase-3.4:javaagent:test" + "dropwizard:dropwizard-views-0.7:javaagent:test" + "elasticsearch:elasticsearch-api-client-7.16:javaagent:test" + "elasticsearch:elasticsearch-api-client-7.16:javaagent:testStableSemconv" + "elasticsearch:elasticsearch-rest-7.0:javaagent:test" + "elasticsearch:elasticsearch-rest-7.0:javaagent:testStableSemconv" + "elasticsearch:elasticsearch-transport-5.0:javaagent:test" + "elasticsearch:elasticsearch-transport-5.0:javaagent:testExperimental" + "elasticsearch:elasticsearch-transport-5.0:javaagent:testStableSemconv" + "elasticsearch:elasticsearch-transport-5.3:javaagent:test" + "elasticsearch:elasticsearch-transport-5.3:javaagent:testExperimental" + "elasticsearch:elasticsearch-transport-5.3:javaagent:testStableSemconv" + "elasticsearch:elasticsearch-transport-6.0:javaagent:elasticsearch65Test" + "elasticsearch:elasticsearch-transport-6.0:javaagent:elasticsearch65TestExperimental" + "elasticsearch:elasticsearch-transport-6.0:javaagent:elasticsearch65TestStableSemconv" + "elasticsearch:elasticsearch-transport-6.0:javaagent:elasticsearch6Test" + "elasticsearch:elasticsearch-transport-6.0:javaagent:elasticsearch6TestExperimental" + "elasticsearch:elasticsearch-transport-6.0:javaagent:elasticsearch6TestStableSemconv" + "elasticsearch:elasticsearch-transport-6.0:javaagent:elasticsearch7Test" + "elasticsearch:elasticsearch-transport-6.0:javaagent:elasticsearch7TestExperimental" + "elasticsearch:elasticsearch-transport-6.0:javaagent:elasticsearch7TestStableSemconv" + "failsafe-3.0:library:test" + "finagle-http-23.11:javaagent:test" + "finatra-2.9:javaagent:test" + "geode-1.4:javaagent:test" + "geode-1.4:javaagent:testStableSemconv" + "google-http-client-1.19:javaagent:test" + "grails-3.0:javaagent:test" + "graphql-java:graphql-java-12.0:javaagent:test" + "graphql-java:graphql-java-20.0:javaagent:test" + "graphql-java:graphql-java-20.0:javaagent:testDataFetcher" + "grizzly-2.3:javaagent:test" + "grpc-1.6:javaagent:test" + "grpc-1.6:javaagent:testExperimental" + "gwt-2.0:javaagent:test" + "helidon-4.3:javaagent:test" + "hibernate:hibernate-3.3:javaagent:test" + "hibernate:hibernate-3.3:javaagent:testExperimental" + "hibernate:hibernate-4.0:javaagent:test" + "hibernate:hibernate-4.0:javaagent:testExperimental" + "hibernate:hibernate-6.0:javaagent:test" + "hibernate:hibernate-6.0:javaagent:testExperimental" + "hibernate:hibernate-procedure-call-4.3:javaagent:test" + "hibernate:hibernate-procedure-call-4.3:javaagent:testExperimental" + "hikaricp-3.0:javaagent:test" + "hikaricp-3.0:javaagent:testStableSemconv" + "http-url-connection:javaagent:test" + "hystrix-1.4:javaagent:test" + "hystrix-1.4:javaagent:testExperimental" + "influxdb-2.4:javaagent:test" + "influxdb-2.4:javaagent:testStableSemconv" + "java-http-client:javaagent:test" + "java-http-server:javaagent:test" + "jaxrs:jaxrs-1.0:javaagent:test" + "jaxrs:jaxrs-2.0:jaxrs-2.0-annotations:javaagent:test" + "jaxrs:jaxrs-2.0:jaxrs-2.0-cxf-3.2:javaagent:test" + "jaxrs:jaxrs-2.0:jaxrs-2.0-cxf-3.2:javaagent:testExperimental" + "jaxrs:jaxrs-2.0:jaxrs-2.0-jersey-2.0:javaagent:test" + "jaxrs:jaxrs-2.0:jaxrs-2.0-jersey-2.0:javaagent:testExperimental" + "jaxrs:jaxrs-2.0:jaxrs-2.0-resteasy-3.0:javaagent:test" + "jaxrs:jaxrs-2.0:jaxrs-2.0-resteasy-3.0:javaagent:testExperimental" + "jaxrs:jaxrs-2.0:jaxrs-2.0-resteasy-3.1:javaagent:test" + "jaxrs:jaxrs-2.0:jaxrs-2.0-resteasy-3.1:javaagent:testExperimental" + "jaxrs:jaxrs-3.0:jaxrs-3.0-annotations:javaagent:test" + "jaxrs:jaxrs-3.0:jaxrs-3.0-jersey-3.0:javaagent:test" + "jaxrs:jaxrs-3.0:jaxrs-3.0-jersey-3.0:javaagent:testExperimental" + "jaxrs:jaxrs-3.0:jaxrs-3.0-resteasy-6.0:javaagent:test" + "jaxrs:jaxrs-3.0:jaxrs-3.0-resteasy-6.0:javaagent:testExperimental" + "jaxws:jaxws-2.0:javaagent:test" + "jaxws:jaxws-2.0-axis2-1.6:javaagent:test" + "jaxws:jaxws-cxf-3.0:javaagent:test" + "jaxws:jaxws-jws-api-1.1:javaagent:test" + "jaxws:jaxws-metro-2.2:javaagent:test" + "jedis:jedis-1.4:javaagent:test" + "jedis:jedis-1.4:javaagent:testStableSemconv" + "jedis:jedis-3.0:javaagent:test" + "jedis:jedis-3.0:javaagent:testStableSemconv" + "jedis:jedis-4.0:javaagent:test" + "jedis:jedis-4.0:javaagent:testStableSemconv" + "jetty:jetty-8.0:javaagent:test" + "jetty:jetty-11.0:javaagent:test" + "jetty:jetty-12.0:javaagent:test" + "jetty-httpclient:jetty-httpclient-12.0:javaagent:test" + "jetty-httpclient:jetty-httpclient-9.2:javaagent:test" + "jms:jms-1.1:javaagent:test" + "jodd-http-4.2:javaagent:test" + "jsf:jsf-mojarra-1.2:javaagent:mojarra2Test" + "jsf:jsf-mojarra-3.0:javaagent:test" + "jsf:jsf-myfaces-1.2:javaagent:myfaces2Test" + "jsf:jsf-myfaces-3.0:javaagent:test" + "jsp-2.3:javaagent:test" + "jsp-2.3:javaagent:testExperimental" + "jfinal-3.2:javaagent:test" + "kafka:kafka-clients:kafka-clients-2.6:library:test" + "kafka:kafka-connect-2.6:testing:test" + "ktor:ktor-1.0:library:test" + "ktor:ktor-2.0:library:test" + "ktor:ktor-3.0:library:test" + "kubernetes-client-7.0:javaagent:test" + "kubernetes-client-7.0:javaagent:testExperimental" + "lettuce:lettuce-4.0:javaagent:test" + "lettuce:lettuce-4.0:javaagent:testExperimental" + "lettuce:lettuce-4.0:javaagent:testStableSemconv" + "lettuce:lettuce-5.0:javaagent:test" + "lettuce:lettuce-5.0:javaagent:testExperimental" + "lettuce:lettuce-5.0:javaagent:testStableSemconv" + "lettuce:lettuce-5.1:javaagent:test" + "lettuce:lettuce-5.1:javaagent:testStableSemconv" "mongo:mongo-3.1:javaagent:test" "mongo:mongo-3.1:javaagent:testStableSemconv" "mongo:mongo-3.7:javaagent:test" @@ -173,66 +173,66 @@ readonly INSTRUMENTATIONS=( "mongo:mongo-4.0:javaagent:testStableSemconv" "mongo:mongo-async-3.3:javaagent:test" "mongo:mongo-async-3.3:javaagent:testStableSemconv" -# "nats:nats-2.17:javaagent:test" -# "nats:nats-2.17:javaagent:testExperimental" -# "netty:netty-3.8:javaagent:test" -# "netty:netty-4.0:javaagent:test" -# "netty:netty-4.1:javaagent:test" -# "okhttp:okhttp-2.2:javaagent:test" -# "okhttp:okhttp-3.0:javaagent:test" -# "openai:openai-java-1.1:javaagent:test" -# "opensearch:opensearch-java-3.0:javaagent:test" -# "opensearch:opensearch-java-3.0:javaagent:testStableSemconv" -# "opensearch:opensearch-rest-1.0:javaagent:test" -# "opensearch:opensearch-rest-1.0:javaagent:testStableSemconv" -# "opensearch:opensearch-rest-3.0:javaagent:test" -# "opensearch:opensearch-rest-3.0:javaagent:testStableSemconv" -# "oshi:javaagent:test" -# "oshi:javaagent:testExperimental" -# "pekko:pekko-http-1.0:javaagent:test" -# "play:play-ws:play-ws-1.0:javaagent:test" -# "play:play-ws:play-ws-2.0:javaagent:test" -# "play:play-ws:play-ws-2.1:javaagent:test" -# "reactor:reactor-netty:reactor-netty-0.9:javaagent:test" -# "reactor:reactor-netty:reactor-netty-1.0:javaagent:test" -# "spring:spring-batch-3.0:javaagent:test" -# "spring:spring-data:spring-data-1.8:javaagent:test" -# "spring:spring-integration-4.1:javaagent:test" -# "spring:spring-integration-4.1:javaagent:testWithProducerInstrumentation" -# "spring:spring-integration-4.1:javaagent:testWithRabbitInstrumentation" -# "spring:spring-jms:spring-jms-2.0:javaagent:test" -# "spring:spring-kafka-2.7:javaagent:test" -# "spring:spring-kafka-2.7:javaagent:testNoReceiveTelemetry" -# "spring:spring-pulsar-1.0:javaagent:test" -# "spring:spring-rabbit-1.0:javaagent:test" -# "spring:spring-rmi-4.0:javaagent:test" -# "spring:spring-scheduling-3.1:javaagent:test" -# "spring:spring-scheduling-3.1:javaagent:testExperimental" -# "spring:spring-web:spring-web-3.1:library:test" -# "spring:spring-web:spring-web-6.0:javaagent:test" -# "spring:spring-webflux:spring-webflux-5.0:javaagent:test" -# "spring:spring-webflux:spring-webflux-5.0:javaagent:test" -# "spring:spring-webflux:spring-webflux-5.3:library:test" -# "spring:spring-webmvc:spring-webmvc-3.1:javaagent:test" -# "spring:spring-webmvc:spring-webmvc-3.1:javaagent:testExperimental" -# "spring:spring-webmvc:spring-webmvc-3.1:javaagent:testExperimental" -# "spring:spring-webmvc:spring-webmvc-5.3:library:test" -# "spring:spring-webmvc:spring-webmvc-6.0:javaagent:test" -# "spring:spring-webmvc:spring-webmvc-6.0:javaagent:test" -# "spring:spring-webmvc:spring-webmvc-6.0:javaagent:testExperimental" -# "tomcat:tomcat-jdbc:javaagent:test" -# "tomcat:tomcat-jdbc:javaagent:testStableSemconv" -# "vertx:vertx-http-client:vertx-http-client-3.0:javaagent:test" -# "vertx:vertx-http-client:vertx-http-client-4.0:javaagent:test" -# "vertx:vertx-http-client:vertx-http-client-5.0:javaagent:test" -# "vertx:vertx-redis-client-4.0:javaagent:test" -# "vertx:vertx-redis-client-4.0:javaagent:testStableSemconv" -# "vertx:vertx-sql-client:vertx-sql-client-4.0:javaagent:test" -# "vertx:vertx-sql-client:vertx-sql-client-4.0:javaagent:testStableSemconv" -# "vertx:vertx-sql-client:vertx-sql-client-5.0:javaagent:test" -# "vertx:vertx-sql-client:vertx-sql-client-5.0:javaagent:testStableSemconv" -# "vibur-dbcp-11.0:javaagent:test" -# "vibur-dbcp-11.0:javaagent:testStableSemconv" + "nats:nats-2.17:javaagent:test" + "nats:nats-2.17:javaagent:testExperimental" + "netty:netty-3.8:javaagent:test" + "netty:netty-4.0:javaagent:test" + "netty:netty-4.1:javaagent:test" + "okhttp:okhttp-2.2:javaagent:test" + "okhttp:okhttp-3.0:javaagent:test" + "openai:openai-java-1.1:javaagent:test" + "opensearch:opensearch-java-3.0:javaagent:test" + "opensearch:opensearch-java-3.0:javaagent:testStableSemconv" + "opensearch:opensearch-rest-1.0:javaagent:test" + "opensearch:opensearch-rest-1.0:javaagent:testStableSemconv" + "opensearch:opensearch-rest-3.0:javaagent:test" + "opensearch:opensearch-rest-3.0:javaagent:testStableSemconv" + "oshi:javaagent:test" + "oshi:javaagent:testExperimental" + "pekko:pekko-http-1.0:javaagent:test" + "play:play-ws:play-ws-1.0:javaagent:test" + "play:play-ws:play-ws-2.0:javaagent:test" + "play:play-ws:play-ws-2.1:javaagent:test" + "reactor:reactor-netty:reactor-netty-0.9:javaagent:test" + "reactor:reactor-netty:reactor-netty-1.0:javaagent:test" + "spring:spring-batch-3.0:javaagent:test" + "spring:spring-data:spring-data-1.8:javaagent:test" + "spring:spring-integration-4.1:javaagent:test" + "spring:spring-integration-4.1:javaagent:testWithProducerInstrumentation" + "spring:spring-integration-4.1:javaagent:testWithRabbitInstrumentation" + "spring:spring-jms:spring-jms-2.0:javaagent:test" + "spring:spring-kafka-2.7:javaagent:test" + "spring:spring-kafka-2.7:javaagent:testNoReceiveTelemetry" + "spring:spring-pulsar-1.0:javaagent:test" + "spring:spring-rabbit-1.0:javaagent:test" + "spring:spring-rmi-4.0:javaagent:test" + "spring:spring-scheduling-3.1:javaagent:test" + "spring:spring-scheduling-3.1:javaagent:testExperimental" + "spring:spring-web:spring-web-3.1:library:test" + "spring:spring-web:spring-web-6.0:javaagent:test" + "spring:spring-webflux:spring-webflux-5.0:javaagent:test" + "spring:spring-webflux:spring-webflux-5.0:javaagent:test" + "spring:spring-webflux:spring-webflux-5.3:library:test" + "spring:spring-webmvc:spring-webmvc-3.1:javaagent:test" + "spring:spring-webmvc:spring-webmvc-3.1:javaagent:testExperimental" + "spring:spring-webmvc:spring-webmvc-3.1:javaagent:testExperimental" + "spring:spring-webmvc:spring-webmvc-5.3:library:test" + "spring:spring-webmvc:spring-webmvc-6.0:javaagent:test" + "spring:spring-webmvc:spring-webmvc-6.0:javaagent:test" + "spring:spring-webmvc:spring-webmvc-6.0:javaagent:testExperimental" + "tomcat:tomcat-jdbc:javaagent:test" + "tomcat:tomcat-jdbc:javaagent:testStableSemconv" + "vertx:vertx-http-client:vertx-http-client-3.0:javaagent:test" + "vertx:vertx-http-client:vertx-http-client-4.0:javaagent:test" + "vertx:vertx-http-client:vertx-http-client-5.0:javaagent:test" + "vertx:vertx-redis-client-4.0:javaagent:test" + "vertx:vertx-redis-client-4.0:javaagent:testStableSemconv" + "vertx:vertx-sql-client:vertx-sql-client-4.0:javaagent:test" + "vertx:vertx-sql-client:vertx-sql-client-4.0:javaagent:testStableSemconv" + "vertx:vertx-sql-client:vertx-sql-client-5.0:javaagent:test" + "vertx:vertx-sql-client:vertx-sql-client-5.0:javaagent:testStableSemconv" + "vibur-dbcp-11.0:javaagent:test" + "vibur-dbcp-11.0:javaagent:testStableSemconv" ) # Some instrumentation test suites don't run ARM, so we use colima to run them in an x86_64 diff --git a/instrumentation/mongo/mongo-3.1/metadata.yaml b/instrumentation/mongo/mongo-3.1/metadata.yaml new file mode 100644 index 000000000000..46c9e7d20cd4 --- /dev/null +++ b/instrumentation/mongo/mongo-3.1/metadata.yaml @@ -0,0 +1,19 @@ +display_name: MongoDB Driver +description: > + This instrumentation enables database client spans and database client metrics for the MongoDB + Java driver. +semantic_conventions: + - DATABASE_CLIENT_SPANS + - DATABASE_CLIENT_METRICS +library_link: https://www.mongodb.com/docs/drivers/java-drivers/ +configurations: + - name: otel.instrumentation.mongo.statement-sanitizer.enabled + description: > + Enables statement sanitization for MongoDB queries. Takes precedence over + otel.instrumentation.common.db-statement-sanitizer.enabled. + type: boolean + default: true + - name: otel.instrumentation.common.db-statement-sanitizer.enabled + description: Enables statement sanitization for database queries. + type: boolean + default: true diff --git a/instrumentation/mongo/mongo-3.7/metadata.yaml b/instrumentation/mongo/mongo-3.7/metadata.yaml new file mode 100644 index 000000000000..46c9e7d20cd4 --- /dev/null +++ b/instrumentation/mongo/mongo-3.7/metadata.yaml @@ -0,0 +1,19 @@ +display_name: MongoDB Driver +description: > + This instrumentation enables database client spans and database client metrics for the MongoDB + Java driver. +semantic_conventions: + - DATABASE_CLIENT_SPANS + - DATABASE_CLIENT_METRICS +library_link: https://www.mongodb.com/docs/drivers/java-drivers/ +configurations: + - name: otel.instrumentation.mongo.statement-sanitizer.enabled + description: > + Enables statement sanitization for MongoDB queries. Takes precedence over + otel.instrumentation.common.db-statement-sanitizer.enabled. + type: boolean + default: true + - name: otel.instrumentation.common.db-statement-sanitizer.enabled + description: Enables statement sanitization for database queries. + type: boolean + default: true diff --git a/instrumentation/mongo/mongo-4.0/metadata.yaml b/instrumentation/mongo/mongo-4.0/metadata.yaml new file mode 100644 index 000000000000..46c9e7d20cd4 --- /dev/null +++ b/instrumentation/mongo/mongo-4.0/metadata.yaml @@ -0,0 +1,19 @@ +display_name: MongoDB Driver +description: > + This instrumentation enables database client spans and database client metrics for the MongoDB + Java driver. +semantic_conventions: + - DATABASE_CLIENT_SPANS + - DATABASE_CLIENT_METRICS +library_link: https://www.mongodb.com/docs/drivers/java-drivers/ +configurations: + - name: otel.instrumentation.mongo.statement-sanitizer.enabled + description: > + Enables statement sanitization for MongoDB queries. Takes precedence over + otel.instrumentation.common.db-statement-sanitizer.enabled. + type: boolean + default: true + - name: otel.instrumentation.common.db-statement-sanitizer.enabled + description: Enables statement sanitization for database queries. + type: boolean + default: true diff --git a/instrumentation/mongo/mongo-async-3.3/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/mongoasync/v3_3/MongoAsyncClientTest.java b/instrumentation/mongo/mongo-async-3.3/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/mongoasync/v3_3/MongoAsyncClientTest.java index 114fa9555937..24bc6a19302d 100644 --- a/instrumentation/mongo/mongo-async-3.3/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/mongoasync/v3_3/MongoAsyncClientTest.java +++ b/instrumentation/mongo/mongo-async-3.3/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/mongoasync/v3_3/MongoAsyncClientTest.java @@ -34,7 +34,7 @@ class MongoAsyncClientTest extends AbstractMongoClientTest + This instrumentation enables database client spans and database client metrics for the MongoDB + async Java driver. +semantic_conventions: + - DATABASE_CLIENT_SPANS + - DATABASE_CLIENT_METRICS +library_link: https://www.mongodb.com/docs/drivers/java-drivers/ +configurations: + - name: otel.instrumentation.mongo.statement-sanitizer.enabled + description: > + Enables statement sanitization for MongoDB queries. Takes precedence over + otel.instrumentation.common.db-statement-sanitizer.enabled. + type: boolean + default: true + - name: otel.instrumentation.common.db-statement-sanitizer.enabled + description: Enables statement sanitization for database queries. + type: boolean + default: true From b4dcc99066f836613f6577a961989f111e15e9e0 Mon Sep 17 00:00:00 2001 From: Jay DeLuca Date: Mon, 1 Dec 2025 10:51:23 -0500 Subject: [PATCH 3/9] refactor to factory --- .../v3_1/MongoInstrumentationSingletons.java | 25 +++++++++++-------- .../mongo/v3_1/MongoInstrumenterFactory.java | 4 +-- .../mongo/v3_1/MongoTelemetry.java | 13 ---------- .../mongo/v3_1/TracingCommandListener.java | 4 +-- .../v3_7/MongoInstrumentationSingletons.java | 25 +++++++++++-------- .../v4_0/MongoInstrumentationSingletons.java | 25 +++++++++++-------- .../v3_3/MongoInstrumentationSingletons.java | 25 +++++++++++-------- 7 files changed, 64 insertions(+), 57 deletions(-) diff --git a/instrumentation/mongo/mongo-3.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v3_1/MongoInstrumentationSingletons.java b/instrumentation/mongo/mongo-3.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v3_1/MongoInstrumentationSingletons.java index 72e0879a6bab..dd27e5cde0d1 100644 --- a/instrumentation/mongo/mongo-3.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v3_1/MongoInstrumentationSingletons.java +++ b/instrumentation/mongo/mongo-3.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v3_1/MongoInstrumentationSingletons.java @@ -6,22 +6,27 @@ package io.opentelemetry.javaagent.instrumentation.mongo.v3_1; import com.mongodb.event.CommandListener; +import com.mongodb.event.CommandStartedEvent; import io.opentelemetry.api.GlobalOpenTelemetry; -import io.opentelemetry.instrumentation.mongo.v3_1.MongoTelemetry; +import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter; +import io.opentelemetry.instrumentation.mongo.v3_1.MongoInstrumenterFactory; +import io.opentelemetry.instrumentation.mongo.v3_1.TracingCommandListener; import io.opentelemetry.javaagent.bootstrap.internal.AgentCommonConfig; import io.opentelemetry.javaagent.bootstrap.internal.AgentInstrumentationConfig; public final class MongoInstrumentationSingletons { - public static final CommandListener LISTENER = - MongoTelemetry.builder(GlobalOpenTelemetry.get(), "io.opentelemetry.mongo-3.1") - .setStatementSanitizationEnabled( - AgentInstrumentationConfig.get() - .getBoolean( - "otel.instrumentation.mongo.statement-sanitizer.enabled", - AgentCommonConfig.get().isStatementSanitizationEnabled())) - .build() - .newCommandListener(); + private static final Instrumenter INSTRUMENTER = + MongoInstrumenterFactory.createInstrumenter( + GlobalOpenTelemetry.get(), + "io.opentelemetry.mongo-3.1", + AgentInstrumentationConfig.get() + .getBoolean( + "otel.instrumentation.mongo.statement-sanitizer.enabled", + AgentCommonConfig.get().isStatementSanitizationEnabled()), + 32 * 1024); // DEFAULT_MAX_NORMALIZED_QUERY_LENGTH + + public static final CommandListener LISTENER = new TracingCommandListener(INSTRUMENTER); public static boolean isTracingListener(CommandListener listener) { return listener.getClass().getName().equals(LISTENER.getClass().getName()); diff --git a/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoInstrumenterFactory.java b/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoInstrumenterFactory.java index e50cc972c77e..b9b85f2fc7fa 100644 --- a/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoInstrumenterFactory.java +++ b/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoInstrumenterFactory.java @@ -14,12 +14,12 @@ import io.opentelemetry.instrumentation.api.instrumenter.SpanNameExtractor; import io.opentelemetry.instrumentation.api.semconv.network.ServerAttributesExtractor; -class MongoInstrumenterFactory { +public final class MongoInstrumenterFactory { private static final MongoAttributesExtractor attributesExtractor = new MongoAttributesExtractor(); - static Instrumenter createInstrumenter( + public static Instrumenter createInstrumenter( OpenTelemetry openTelemetry, String instrumentationName, boolean statementSanitizationEnabled, diff --git a/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoTelemetry.java b/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoTelemetry.java index 2ae70dcb17b4..16a4983bb3bd 100644 --- a/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoTelemetry.java +++ b/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoTelemetry.java @@ -19,19 +19,6 @@ public static MongoTelemetry create(OpenTelemetry openTelemetry) { return builder(openTelemetry).build(); } - /** Returns a new {@link MongoTelemetry} configured with the given {@link OpenTelemetry}. */ - public static MongoTelemetry create(OpenTelemetry openTelemetry, String instrumentationName) { - return builder(openTelemetry, instrumentationName).build(); - } - - /** - * Returns a new {@link MongoTelemetryBuilder} configured with the given {@link OpenTelemetry}. - */ - public static MongoTelemetryBuilder builder( - OpenTelemetry openTelemetry, String instrumentationName) { - return new MongoTelemetryBuilder(openTelemetry, instrumentationName); - } - /** * Returns a new {@link MongoTelemetryBuilder} configured with the given {@link OpenTelemetry}. */ diff --git a/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/TracingCommandListener.java b/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/TracingCommandListener.java index 158d9eabf82a..f611cc3ec5ff 100644 --- a/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/TracingCommandListener.java +++ b/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/TracingCommandListener.java @@ -14,12 +14,12 @@ import java.util.Map; import java.util.concurrent.ConcurrentHashMap; -final class TracingCommandListener implements CommandListener { +public final class TracingCommandListener implements CommandListener { private final Instrumenter instrumenter; private final Map requestMap; - TracingCommandListener(Instrumenter instrumenter) { + public TracingCommandListener(Instrumenter instrumenter) { this.instrumenter = instrumenter; this.requestMap = new ConcurrentHashMap<>(); } diff --git a/instrumentation/mongo/mongo-3.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v3_7/MongoInstrumentationSingletons.java b/instrumentation/mongo/mongo-3.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v3_7/MongoInstrumentationSingletons.java index d9a2a91ec3af..f23fce72395f 100644 --- a/instrumentation/mongo/mongo-3.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v3_7/MongoInstrumentationSingletons.java +++ b/instrumentation/mongo/mongo-3.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v3_7/MongoInstrumentationSingletons.java @@ -6,22 +6,27 @@ package io.opentelemetry.javaagent.instrumentation.mongo.v3_7; import com.mongodb.event.CommandListener; +import com.mongodb.event.CommandStartedEvent; import io.opentelemetry.api.GlobalOpenTelemetry; -import io.opentelemetry.instrumentation.mongo.v3_1.MongoTelemetry; +import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter; +import io.opentelemetry.instrumentation.mongo.v3_1.MongoInstrumenterFactory; +import io.opentelemetry.instrumentation.mongo.v3_1.TracingCommandListener; import io.opentelemetry.javaagent.bootstrap.internal.AgentCommonConfig; import io.opentelemetry.javaagent.bootstrap.internal.AgentInstrumentationConfig; public final class MongoInstrumentationSingletons { - public static final CommandListener LISTENER = - MongoTelemetry.builder(GlobalOpenTelemetry.get(), "io.opentelemetry.mongo-3.7") - .setStatementSanitizationEnabled( - AgentInstrumentationConfig.get() - .getBoolean( - "otel.instrumentation.mongo.statement-sanitizer.enabled", - AgentCommonConfig.get().isStatementSanitizationEnabled())) - .build() - .newCommandListener(); + private static final Instrumenter INSTRUMENTER = + MongoInstrumenterFactory.createInstrumenter( + GlobalOpenTelemetry.get(), + "io.opentelemetry.mongo-3.7", + AgentInstrumentationConfig.get() + .getBoolean( + "otel.instrumentation.mongo.statement-sanitizer.enabled", + AgentCommonConfig.get().isStatementSanitizationEnabled()), + 32 * 1024); // DEFAULT_MAX_NORMALIZED_QUERY_LENGTH + + public static final CommandListener LISTENER = new TracingCommandListener(INSTRUMENTER); public static boolean isTracingListener(CommandListener listener) { return listener.getClass().getName().equals(LISTENER.getClass().getName()); diff --git a/instrumentation/mongo/mongo-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v4_0/MongoInstrumentationSingletons.java b/instrumentation/mongo/mongo-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v4_0/MongoInstrumentationSingletons.java index 881be21a4d50..2b803681d885 100644 --- a/instrumentation/mongo/mongo-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v4_0/MongoInstrumentationSingletons.java +++ b/instrumentation/mongo/mongo-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v4_0/MongoInstrumentationSingletons.java @@ -6,22 +6,27 @@ package io.opentelemetry.javaagent.instrumentation.mongo.v4_0; import com.mongodb.event.CommandListener; +import com.mongodb.event.CommandStartedEvent; import io.opentelemetry.api.GlobalOpenTelemetry; -import io.opentelemetry.instrumentation.mongo.v3_1.MongoTelemetry; +import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter; +import io.opentelemetry.instrumentation.mongo.v3_1.MongoInstrumenterFactory; +import io.opentelemetry.instrumentation.mongo.v3_1.TracingCommandListener; import io.opentelemetry.javaagent.bootstrap.internal.AgentCommonConfig; import io.opentelemetry.javaagent.bootstrap.internal.AgentInstrumentationConfig; public final class MongoInstrumentationSingletons { - public static final CommandListener LISTENER = - MongoTelemetry.builder(GlobalOpenTelemetry.get(), "io.opentelemetry.mongo-4.0") - .setStatementSanitizationEnabled( - AgentInstrumentationConfig.get() - .getBoolean( - "otel.instrumentation.mongo.statement-sanitizer.enabled", - AgentCommonConfig.get().isStatementSanitizationEnabled())) - .build() - .newCommandListener(); + private static final Instrumenter INSTRUMENTER = + MongoInstrumenterFactory.createInstrumenter( + GlobalOpenTelemetry.get(), + "io.opentelemetry.mongo-4.0", + AgentInstrumentationConfig.get() + .getBoolean( + "otel.instrumentation.mongo.statement-sanitizer.enabled", + AgentCommonConfig.get().isStatementSanitizationEnabled()), + 32 * 1024); // DEFAULT_MAX_NORMALIZED_QUERY_LENGTH + + public static final CommandListener LISTENER = new TracingCommandListener(INSTRUMENTER); public static boolean isTracingListener(CommandListener listener) { return listener.getClass().getName().equals(LISTENER.getClass().getName()); diff --git a/instrumentation/mongo/mongo-async-3.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongoasync/v3_3/MongoInstrumentationSingletons.java b/instrumentation/mongo/mongo-async-3.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongoasync/v3_3/MongoInstrumentationSingletons.java index f5ef51e7a6e6..79e487d9496b 100644 --- a/instrumentation/mongo/mongo-async-3.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongoasync/v3_3/MongoInstrumentationSingletons.java +++ b/instrumentation/mongo/mongo-async-3.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongoasync/v3_3/MongoInstrumentationSingletons.java @@ -6,22 +6,27 @@ package io.opentelemetry.javaagent.instrumentation.mongoasync.v3_3; import com.mongodb.event.CommandListener; +import com.mongodb.event.CommandStartedEvent; import io.opentelemetry.api.GlobalOpenTelemetry; -import io.opentelemetry.instrumentation.mongo.v3_1.MongoTelemetry; +import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter; +import io.opentelemetry.instrumentation.mongo.v3_1.MongoInstrumenterFactory; +import io.opentelemetry.instrumentation.mongo.v3_1.TracingCommandListener; import io.opentelemetry.javaagent.bootstrap.internal.AgentCommonConfig; import io.opentelemetry.javaagent.bootstrap.internal.AgentInstrumentationConfig; public final class MongoInstrumentationSingletons { - public static final CommandListener LISTENER = - MongoTelemetry.builder(GlobalOpenTelemetry.get(), "io.opentelemetry.mongo-async-3.3") - .setStatementSanitizationEnabled( - AgentInstrumentationConfig.get() - .getBoolean( - "otel.instrumentation.mongo.statement-sanitizer.enabled", - AgentCommonConfig.get().isStatementSanitizationEnabled())) - .build() - .newCommandListener(); + private static final Instrumenter INSTRUMENTER = + MongoInstrumenterFactory.createInstrumenter( + GlobalOpenTelemetry.get(), + "io.opentelemetry.mongo-async-3.3", + AgentInstrumentationConfig.get() + .getBoolean( + "otel.instrumentation.mongo.statement-sanitizer.enabled", + AgentCommonConfig.get().isStatementSanitizationEnabled()), + 32 * 1024); // DEFAULT_MAX_NORMALIZED_QUERY_LENGTH + + public static final CommandListener LISTENER = new TracingCommandListener(INSTRUMENTER); public static boolean isTracingListener(CommandListener listener) { return listener.getClass().getName().equals(LISTENER.getClass().getName()); From ea7d2f8d6189a9c105bc7a96b695e3958ebd93a4 Mon Sep 17 00:00:00 2001 From: Jay DeLuca Date: Mon, 1 Dec 2025 15:49:43 -0500 Subject: [PATCH 4/9] fix latestDeps --- .../javaagent/build.gradle.kts | 5 ++ .../testing/AbstractMongoClientTest.java | 52 ++++++++++++++++--- 2 files changed, 49 insertions(+), 8 deletions(-) diff --git a/instrumentation/mongo/mongo-async-3.3/javaagent/build.gradle.kts b/instrumentation/mongo/mongo-async-3.3/javaagent/build.gradle.kts index 064032497ecd..845ed35409f3 100644 --- a/instrumentation/mongo/mongo-async-3.3/javaagent/build.gradle.kts +++ b/instrumentation/mongo/mongo-async-3.3/javaagent/build.gradle.kts @@ -17,6 +17,11 @@ dependencies { library("org.mongodb:mongodb-driver-async:3.3.0") + // Starting with 3.7.0, mongodb-driver-async depends on mongodb-driver-core which contains + // both sync (com.mongodb.MongoClientSettings) and async (com.mongodb.async.SingleResultCallback) + // classes, causing the mongo-3.7 instrumentation to match instead of mongo-async-3.3. + latestDepTestLibrary("org.mongodb:mongodb-driver-async:3.6.+") + testImplementation(project(":instrumentation:mongo:mongo-common:testing")) testInstrumentation(project(":instrumentation:mongo:mongo-3.1:javaagent")) diff --git a/instrumentation/mongo/mongo-common/testing/src/main/java/io/opentelemetry/instrumentation/mongo/testing/AbstractMongoClientTest.java b/instrumentation/mongo/mongo-common/testing/src/main/java/io/opentelemetry/instrumentation/mongo/testing/AbstractMongoClientTest.java index b54a8caef2d6..753ef1b1931e 100644 --- a/instrumentation/mongo/mongo-common/testing/src/main/java/io/opentelemetry/instrumentation/mongo/testing/AbstractMongoClientTest.java +++ b/instrumentation/mongo/mongo-common/testing/src/main/java/io/opentelemetry/instrumentation/mongo/testing/AbstractMongoClientTest.java @@ -158,7 +158,12 @@ void testCreateCollection() throws InterruptedException { + "\",\"capped\":\"?\",\"$db\":\"?\",\"$readPreference\":{\"mode\":\"?\"}}", "{\"create\":\"" + collectionName - + "\",\"capped\":\"?\",\"$db\":\"?\",\"lsid\":{\"id\":\"?\"}}")))); + + "\",\"capped\":\"?\",\"$db\":\"?\",\"lsid\":{\"id\":\"?\"}}", + // mongodb-driver-async 3.6.x includes autoIndexId in create + // commands + "{\"create\":\"" + + collectionName + + "\",\"autoIndexId\":\"?\",\"capped\":\"?\",\"$db\":\"?\",\"lsid\":{\"id\":\"?\"},\"$readPreference\":{\"mode\":\"?\"}}")))); } @Test @@ -191,7 +196,12 @@ void testCreateCollectionNoDescription() throws InterruptedException { + "\",\"capped\":\"?\",\"$db\":\"?\",\"$readPreference\":{\"mode\":\"?\"}}", "{\"create\":\"" + collectionName - + "\",\"capped\":\"?\",\"$db\":\"?\",\"lsid\":{\"id\":\"?\"}}")))); + + "\",\"capped\":\"?\",\"$db\":\"?\",\"lsid\":{\"id\":\"?\"}}", + // mongodb-driver-async 3.6.x includes autoIndexId in create + // commands + "{\"create\":\"" + + collectionName + + "\",\"autoIndexId\":\"?\",\"capped\":\"?\",\"$db\":\"?\",\"lsid\":{\"id\":\"?\"},\"$readPreference\":{\"mode\":\"?\"}}")))); } @Test @@ -225,7 +235,12 @@ void testCreateCollectionCallingBuildTwice() throws InterruptedException { + "\",\"capped\":\"?\",\"$db\":\"?\",\"$readPreference\":{\"mode\":\"?\"}}", "{\"create\":\"" + collectionName - + "\",\"capped\":\"?\",\"$db\":\"?\",\"lsid\":{\"id\":\"?\"}}")))); + + "\",\"capped\":\"?\",\"$db\":\"?\",\"lsid\":{\"id\":\"?\"}}", + // mongodb-driver-async 3.6.x includes autoIndexId in create + // commands + "{\"create\":\"" + + collectionName + + "\",\"autoIndexId\":\"?\",\"capped\":\"?\",\"$db\":\"?\",\"lsid\":{\"id\":\"?\"},\"$readPreference\":{\"mode\":\"?\"}}")))); } @Test @@ -260,7 +275,11 @@ void testGetCollection() throws Exception { + "\",\"query\":{},\"$db\":\"?\",\"$readPreference\":{\"mode\":\"?\"}}", "{\"count\":\"" + collectionName - + "\",\"$db\":\"?\",\"lsid\":{\"id\":\"?\"}}")))); + + "\",\"$db\":\"?\",\"lsid\":{\"id\":\"?\"}}", + // mongodb-driver-async 3.6.x includes all fields together + "{\"count\":\"" + + collectionName + + "\",\"query\":{},\"$db\":\"?\",\"lsid\":{\"id\":\"?\"},\"$readPreference\":{\"mode\":\"?\"}}")))); assertDurationMetric( testing(), @@ -324,7 +343,11 @@ void testInsert() throws Exception { + "\",\"query\":{},\"$db\":\"?\",\"$readPreference\":{\"mode\":\"?\"}}", "{\"count\":\"" + collectionName - + "\",\"$db\":\"?\",\"lsid\":{\"id\":\"?\"}}")))); + + "\",\"$db\":\"?\",\"lsid\":{\"id\":\"?\"}}", + // mongodb-driver-async 3.6.x includes all fields together + "{\"count\":\"" + + collectionName + + "\",\"query\":{},\"$db\":\"?\",\"lsid\":{\"id\":\"?\"},\"$readPreference\":{\"mode\":\"?\"}}")))); } @Test @@ -378,7 +401,11 @@ void testUpdate() throws Exception { + "\",\"query\":{},\"$db\":\"?\",\"$readPreference\":{\"mode\":\"?\"}}", "{\"count\":\"" + collectionName - + "\",\"$db\":\"?\",\"lsid\":{\"id\":\"?\"}}")))); + + "\",\"$db\":\"?\",\"lsid\":{\"id\":\"?\"}}", + // mongodb-driver-async 3.6.x includes all fields together + "{\"count\":\"" + + collectionName + + "\",\"query\":{},\"$db\":\"?\",\"lsid\":{\"id\":\"?\"},\"$readPreference\":{\"mode\":\"?\"}}")))); } @Test @@ -432,7 +459,11 @@ void testDelete() throws Exception { + "\",\"query\":{},\"$db\":\"?\",\"$readPreference\":{\"mode\":\"?\"}}", "{\"count\":\"" + collectionName - + "\",\"$db\":\"?\",\"lsid\":{\"id\":\"?\"}}")))); + + "\",\"$db\":\"?\",\"lsid\":{\"id\":\"?\"}}", + // mongodb-driver-async 3.6.x includes all fields together + "{\"count\":\"" + + collectionName + + "\",\"query\":{},\"$db\":\"?\",\"lsid\":{\"id\":\"?\"},\"$readPreference\":{\"mode\":\"?\"}}")))); } @Test @@ -520,7 +551,12 @@ void testCreateCollectionWithAlreadyBuiltClientOptions() { + "\",\"capped\":\"?\",\"$db\":\"?\",\"$readPreference\":{\"mode\":\"?\"}}", "{\"create\":\"" + collectionName - + "\",\"capped\":\"?\",\"$db\":\"?\",\"lsid\":{\"id\":\"?\"}}")))); + + "\",\"capped\":\"?\",\"$db\":\"?\",\"lsid\":{\"id\":\"?\"}}", + // mongodb-driver-async 3.6.x includes autoIndexId in create + // commands + "{\"create\":\"" + + collectionName + + "\",\"autoIndexId\":\"?\",\"capped\":\"?\",\"$db\":\"?\",\"lsid\":{\"id\":\"?\"},\"$readPreference\":{\"mode\":\"?\"}}")))); } protected String createCollectionName() { From afa46475bb37eb112e9666f343bbc279fd133fac Mon Sep 17 00:00:00 2001 From: Jay DeLuca Date: Mon, 1 Dec 2025 15:55:17 -0500 Subject: [PATCH 5/9] fix latestDeps --- .../mongo/mongo-async-3.3/javaagent/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/instrumentation/mongo/mongo-async-3.3/javaagent/build.gradle.kts b/instrumentation/mongo/mongo-async-3.3/javaagent/build.gradle.kts index 845ed35409f3..0ed078e81289 100644 --- a/instrumentation/mongo/mongo-async-3.3/javaagent/build.gradle.kts +++ b/instrumentation/mongo/mongo-async-3.3/javaagent/build.gradle.kts @@ -20,7 +20,7 @@ dependencies { // Starting with 3.7.0, mongodb-driver-async depends on mongodb-driver-core which contains // both sync (com.mongodb.MongoClientSettings) and async (com.mongodb.async.SingleResultCallback) // classes, causing the mongo-3.7 instrumentation to match instead of mongo-async-3.3. - latestDepTestLibrary("org.mongodb:mongodb-driver-async:3.6.+") + latestDepTestLibrary("org.mongodb:mongodb-driver-async:3.6.+") // see above comment testImplementation(project(":instrumentation:mongo:mongo-common:testing")) From b9dcd76186ef7d0d89d3446722a74e898d113426 Mon Sep 17 00:00:00 2001 From: Jay DeLuca Date: Mon, 1 Dec 2025 16:08:08 -0500 Subject: [PATCH 6/9] fix comment --- .../mongo/mongo-async-3.3/javaagent/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/instrumentation/mongo/mongo-async-3.3/javaagent/build.gradle.kts b/instrumentation/mongo/mongo-async-3.3/javaagent/build.gradle.kts index 0ed078e81289..3110c2d3361e 100644 --- a/instrumentation/mongo/mongo-async-3.3/javaagent/build.gradle.kts +++ b/instrumentation/mongo/mongo-async-3.3/javaagent/build.gradle.kts @@ -20,7 +20,7 @@ dependencies { // Starting with 3.7.0, mongodb-driver-async depends on mongodb-driver-core which contains // both sync (com.mongodb.MongoClientSettings) and async (com.mongodb.async.SingleResultCallback) // classes, causing the mongo-3.7 instrumentation to match instead of mongo-async-3.3. - latestDepTestLibrary("org.mongodb:mongodb-driver-async:3.6.+") // see above comment + latestDepTestLibrary("org.mongodb:mongodb-driver-async:3.6.+") // see mongo-3.7 module testImplementation(project(":instrumentation:mongo:mongo-common:testing")) From 0848d53ac957c77a408f2cdf3731c6cf31e8ebf6 Mon Sep 17 00:00:00 2001 From: Jay DeLuca Date: Tue, 2 Dec 2025 06:48:12 -0500 Subject: [PATCH 7/9] move classes to internal package, update assertion and remove latest dep constraint, add overload for size --- .../v3_1/MongoInstrumentationSingletons.java | 7 +- .../mongo/v3_1/MongoTelemetry.java | 2 + .../{ => internal}/ContextAndRequest.java | 2 +- .../MongoAttributesExtractor.java | 6 +- .../MongoDbAttributesGetter.java | 6 +- .../MongoInstrumenterFactory.java | 19 +++- .../MongoNetworkAttributesGetter.java | 6 +- .../MongoSpanNameExtractor.java | 6 +- .../{ => internal}/StringBuilderWriter.java | 6 +- .../TracingCommandListener.java | 6 +- .../MongoDbAttributesGetterTest.java | 4 +- .../MongoSpanNameExtractorTest.java | 4 +- .../v3_7/MongoInstrumentationSingletons.java | 4 +- .../v4_0/MongoInstrumentationSingletons.java | 4 +- .../javaagent/build.gradle.kts | 5 - .../v3_3/MongoInstrumentationSingletons.java | 7 +- .../testing/AbstractMongoClientTest.java | 100 ++++++------------ 17 files changed, 100 insertions(+), 94 deletions(-) rename instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/{ => internal}/ContextAndRequest.java (88%) rename instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/{ => internal}/MongoAttributesExtractor.java (93%) rename instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/{ => internal}/MongoDbAttributesGetter.java (97%) rename instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/{ => internal}/MongoInstrumenterFactory.java (75%) rename instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/{ => internal}/MongoNetworkAttributesGetter.java (84%) rename instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/{ => internal}/MongoSpanNameExtractor.java (89%) rename instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/{ => internal}/StringBuilderWriter.java (75%) rename instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/{ => internal}/TracingCommandListener.java (90%) rename instrumentation/mongo/mongo-3.1/library/src/test/java/io/opentelemetry/instrumentation/mongo/v3_1/{ => internal}/MongoDbAttributesGetterTest.java (95%) rename instrumentation/mongo/mongo-3.1/library/src/test/java/io/opentelemetry/instrumentation/mongo/v3_1/{ => internal}/MongoSpanNameExtractorTest.java (83%) diff --git a/instrumentation/mongo/mongo-3.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v3_1/MongoInstrumentationSingletons.java b/instrumentation/mongo/mongo-3.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v3_1/MongoInstrumentationSingletons.java index dd27e5cde0d1..8ae547d85d2a 100644 --- a/instrumentation/mongo/mongo-3.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v3_1/MongoInstrumentationSingletons.java +++ b/instrumentation/mongo/mongo-3.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v3_1/MongoInstrumentationSingletons.java @@ -9,8 +9,8 @@ import com.mongodb.event.CommandStartedEvent; import io.opentelemetry.api.GlobalOpenTelemetry; import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter; -import io.opentelemetry.instrumentation.mongo.v3_1.MongoInstrumenterFactory; -import io.opentelemetry.instrumentation.mongo.v3_1.TracingCommandListener; +import io.opentelemetry.instrumentation.mongo.v3_1.internal.MongoInstrumenterFactory; +import io.opentelemetry.instrumentation.mongo.v3_1.internal.TracingCommandListener; import io.opentelemetry.javaagent.bootstrap.internal.AgentCommonConfig; import io.opentelemetry.javaagent.bootstrap.internal.AgentInstrumentationConfig; @@ -23,8 +23,7 @@ public final class MongoInstrumentationSingletons { AgentInstrumentationConfig.get() .getBoolean( "otel.instrumentation.mongo.statement-sanitizer.enabled", - AgentCommonConfig.get().isStatementSanitizationEnabled()), - 32 * 1024); // DEFAULT_MAX_NORMALIZED_QUERY_LENGTH + AgentCommonConfig.get().isStatementSanitizationEnabled())); public static final CommandListener LISTENER = new TracingCommandListener(INSTRUMENTER); diff --git a/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoTelemetry.java b/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoTelemetry.java index 16a4983bb3bd..76dbf7664616 100644 --- a/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoTelemetry.java +++ b/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoTelemetry.java @@ -9,6 +9,8 @@ import com.mongodb.event.CommandStartedEvent; import io.opentelemetry.api.OpenTelemetry; import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter; +import io.opentelemetry.instrumentation.mongo.v3_1.internal.MongoInstrumenterFactory; +import io.opentelemetry.instrumentation.mongo.v3_1.internal.TracingCommandListener; // TODO this class is used for all Mongo versions. Extract to mongo-common module /** Entrypoint to OpenTelemetry instrumentation of the MongoDB client. */ diff --git a/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/ContextAndRequest.java b/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/internal/ContextAndRequest.java similarity index 88% rename from instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/ContextAndRequest.java rename to instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/internal/ContextAndRequest.java index f1a064e6857c..fe15ba5b3924 100644 --- a/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/ContextAndRequest.java +++ b/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/internal/ContextAndRequest.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.instrumentation.mongo.v3_1; +package io.opentelemetry.instrumentation.mongo.v3_1.internal; import com.google.auto.value.AutoValue; import com.mongodb.event.CommandStartedEvent; diff --git a/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoAttributesExtractor.java b/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/internal/MongoAttributesExtractor.java similarity index 93% rename from instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoAttributesExtractor.java rename to instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/internal/MongoAttributesExtractor.java index 1d1cf58f2e0a..7188da3dede5 100644 --- a/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoAttributesExtractor.java +++ b/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/internal/MongoAttributesExtractor.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.instrumentation.mongo.v3_1; +package io.opentelemetry.instrumentation.mongo.v3_1.internal; import static io.opentelemetry.instrumentation.api.internal.SemconvStability.emitOldDatabaseSemconv; import static io.opentelemetry.instrumentation.api.internal.SemconvStability.emitStableDatabaseSemconv; @@ -20,6 +20,10 @@ import javax.annotation.Nullable; import org.bson.BsonValue; +/** + * This class is internal and is hence not for public use. Its APIs are unstable and can change at + * any time. + */ class MongoAttributesExtractor implements AttributesExtractor { // copied from DbIncubatingAttributes private static final AttributeKey DB_MONGODB_COLLECTION = diff --git a/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoDbAttributesGetter.java b/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/internal/MongoDbAttributesGetter.java similarity index 97% rename from instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoDbAttributesGetter.java rename to instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/internal/MongoDbAttributesGetter.java index 7c7bc9886362..b868686912b9 100644 --- a/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoDbAttributesGetter.java +++ b/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/internal/MongoDbAttributesGetter.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.instrumentation.mongo.v3_1; +package io.opentelemetry.instrumentation.mongo.v3_1.internal; import com.mongodb.MongoException; import com.mongodb.ServerAddress; @@ -24,6 +24,10 @@ import org.bson.json.JsonWriter; import org.bson.json.JsonWriterSettings; +/** + * This class is internal and is hence not for public use. Its APIs are unstable and can change at + * any time. + */ class MongoDbAttributesGetter implements DbClientAttributesGetter { // copied from DbIncubatingAttributes.DbSystemIncubatingValues diff --git a/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoInstrumenterFactory.java b/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/internal/MongoInstrumenterFactory.java similarity index 75% rename from instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoInstrumenterFactory.java rename to instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/internal/MongoInstrumenterFactory.java index b9b85f2fc7fa..3fce05963540 100644 --- a/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoInstrumenterFactory.java +++ b/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/internal/MongoInstrumenterFactory.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.instrumentation.mongo.v3_1; +package io.opentelemetry.instrumentation.mongo.v3_1.internal; import com.mongodb.event.CommandStartedEvent; import io.opentelemetry.api.OpenTelemetry; @@ -14,11 +14,28 @@ import io.opentelemetry.instrumentation.api.instrumenter.SpanNameExtractor; import io.opentelemetry.instrumentation.api.semconv.network.ServerAttributesExtractor; +/** + * This class is internal and is hence not for public use. Its APIs are unstable and can change at + * any time. + */ public final class MongoInstrumenterFactory { + public static final int DEFAULT_MAX_NORMALIZED_QUERY_LENGTH = 32 * 1024; + private static final MongoAttributesExtractor attributesExtractor = new MongoAttributesExtractor(); + public static Instrumenter createInstrumenter( + OpenTelemetry openTelemetry, + String instrumentationName, + boolean statementSanitizationEnabled) { + return createInstrumenter( + openTelemetry, + instrumentationName, + statementSanitizationEnabled, + DEFAULT_MAX_NORMALIZED_QUERY_LENGTH); + } + public static Instrumenter createInstrumenter( OpenTelemetry openTelemetry, String instrumentationName, diff --git a/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoNetworkAttributesGetter.java b/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/internal/MongoNetworkAttributesGetter.java similarity index 84% rename from instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoNetworkAttributesGetter.java rename to instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/internal/MongoNetworkAttributesGetter.java index 28cd334047c1..1fcee476b08e 100644 --- a/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoNetworkAttributesGetter.java +++ b/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/internal/MongoNetworkAttributesGetter.java @@ -3,12 +3,16 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.instrumentation.mongo.v3_1; +package io.opentelemetry.instrumentation.mongo.v3_1.internal; import com.mongodb.event.CommandStartedEvent; import io.opentelemetry.instrumentation.api.semconv.network.ServerAttributesGetter; import javax.annotation.Nullable; +/** + * This class is internal and is hence not for public use. Its APIs are unstable and can change at + * any time. + */ class MongoNetworkAttributesGetter implements ServerAttributesGetter { @Nullable diff --git a/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoSpanNameExtractor.java b/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/internal/MongoSpanNameExtractor.java similarity index 89% rename from instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoSpanNameExtractor.java rename to instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/internal/MongoSpanNameExtractor.java index d770fe9320b0..bb24148f3652 100644 --- a/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoSpanNameExtractor.java +++ b/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/internal/MongoSpanNameExtractor.java @@ -3,11 +3,15 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.instrumentation.mongo.v3_1; +package io.opentelemetry.instrumentation.mongo.v3_1.internal; import com.mongodb.event.CommandStartedEvent; import io.opentelemetry.instrumentation.api.instrumenter.SpanNameExtractor; +/** + * This class is internal and is hence not for public use. Its APIs are unstable and can change at + * any time. + */ class MongoSpanNameExtractor implements SpanNameExtractor { private static final String DEFAULT_SPAN_NAME = "DB Query"; diff --git a/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/StringBuilderWriter.java b/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/internal/StringBuilderWriter.java similarity index 75% rename from instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/StringBuilderWriter.java rename to instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/internal/StringBuilderWriter.java index 1178b76bd224..47a987f7bdba 100644 --- a/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/StringBuilderWriter.java +++ b/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/internal/StringBuilderWriter.java @@ -3,10 +3,14 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.instrumentation.mongo.v3_1; +package io.opentelemetry.instrumentation.mongo.v3_1.internal; import java.io.Writer; +/** + * This class is internal and is hence not for public use. Its APIs are unstable and can change at + * any time. + */ // because StringWriter uses the synchronized StringBuffer class StringBuilderWriter extends Writer { diff --git a/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/TracingCommandListener.java b/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/internal/TracingCommandListener.java similarity index 90% rename from instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/TracingCommandListener.java rename to instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/internal/TracingCommandListener.java index f611cc3ec5ff..0fc250fce87e 100644 --- a/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/TracingCommandListener.java +++ b/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/internal/TracingCommandListener.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.instrumentation.mongo.v3_1; +package io.opentelemetry.instrumentation.mongo.v3_1.internal; import com.mongodb.event.CommandFailedEvent; import com.mongodb.event.CommandListener; @@ -14,6 +14,10 @@ import java.util.Map; import java.util.concurrent.ConcurrentHashMap; +/** + * This class is internal and is hence not for public use. Its APIs are unstable and can change at + * any time. + */ public final class TracingCommandListener implements CommandListener { private final Instrumenter instrumenter; diff --git a/instrumentation/mongo/mongo-3.1/library/src/test/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoDbAttributesGetterTest.java b/instrumentation/mongo/mongo-3.1/library/src/test/java/io/opentelemetry/instrumentation/mongo/v3_1/internal/MongoDbAttributesGetterTest.java similarity index 95% rename from instrumentation/mongo/mongo-3.1/library/src/test/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoDbAttributesGetterTest.java rename to instrumentation/mongo/mongo-3.1/library/src/test/java/io/opentelemetry/instrumentation/mongo/v3_1/internal/MongoDbAttributesGetterTest.java index fd3ecd71819d..9189528e9035 100644 --- a/instrumentation/mongo/mongo-3.1/library/src/test/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoDbAttributesGetterTest.java +++ b/instrumentation/mongo/mongo-3.1/library/src/test/java/io/opentelemetry/instrumentation/mongo/v3_1/internal/MongoDbAttributesGetterTest.java @@ -3,9 +3,9 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.instrumentation.mongo.v3_1; +package io.opentelemetry.instrumentation.mongo.v3_1.internal; -import static io.opentelemetry.instrumentation.mongo.v3_1.MongoTelemetryBuilder.DEFAULT_MAX_NORMALIZED_QUERY_LENGTH; +import static io.opentelemetry.instrumentation.mongo.v3_1.internal.MongoInstrumenterFactory.DEFAULT_MAX_NORMALIZED_QUERY_LENGTH; import static java.util.Arrays.asList; import static java.util.Collections.singletonList; import static org.assertj.core.api.Assertions.assertThat; diff --git a/instrumentation/mongo/mongo-3.1/library/src/test/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoSpanNameExtractorTest.java b/instrumentation/mongo/mongo-3.1/library/src/test/java/io/opentelemetry/instrumentation/mongo/v3_1/internal/MongoSpanNameExtractorTest.java similarity index 83% rename from instrumentation/mongo/mongo-3.1/library/src/test/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoSpanNameExtractorTest.java rename to instrumentation/mongo/mongo-3.1/library/src/test/java/io/opentelemetry/instrumentation/mongo/v3_1/internal/MongoSpanNameExtractorTest.java index fce0cbb1fdb9..dfb5cf0cd487 100644 --- a/instrumentation/mongo/mongo-3.1/library/src/test/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoSpanNameExtractorTest.java +++ b/instrumentation/mongo/mongo-3.1/library/src/test/java/io/opentelemetry/instrumentation/mongo/v3_1/internal/MongoSpanNameExtractorTest.java @@ -3,9 +3,9 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.instrumentation.mongo.v3_1; +package io.opentelemetry.instrumentation.mongo.v3_1.internal; -import static io.opentelemetry.instrumentation.mongo.v3_1.MongoTelemetryBuilder.DEFAULT_MAX_NORMALIZED_QUERY_LENGTH; +import static io.opentelemetry.instrumentation.mongo.v3_1.internal.MongoInstrumenterFactory.DEFAULT_MAX_NORMALIZED_QUERY_LENGTH; import static org.assertj.core.api.Assertions.assertThat; import com.mongodb.event.CommandStartedEvent; diff --git a/instrumentation/mongo/mongo-3.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v3_7/MongoInstrumentationSingletons.java b/instrumentation/mongo/mongo-3.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v3_7/MongoInstrumentationSingletons.java index f23fce72395f..d92b52eb3585 100644 --- a/instrumentation/mongo/mongo-3.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v3_7/MongoInstrumentationSingletons.java +++ b/instrumentation/mongo/mongo-3.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v3_7/MongoInstrumentationSingletons.java @@ -9,8 +9,8 @@ import com.mongodb.event.CommandStartedEvent; import io.opentelemetry.api.GlobalOpenTelemetry; import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter; -import io.opentelemetry.instrumentation.mongo.v3_1.MongoInstrumenterFactory; -import io.opentelemetry.instrumentation.mongo.v3_1.TracingCommandListener; +import io.opentelemetry.instrumentation.mongo.v3_1.internal.MongoInstrumenterFactory; +import io.opentelemetry.instrumentation.mongo.v3_1.internal.TracingCommandListener; import io.opentelemetry.javaagent.bootstrap.internal.AgentCommonConfig; import io.opentelemetry.javaagent.bootstrap.internal.AgentInstrumentationConfig; diff --git a/instrumentation/mongo/mongo-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v4_0/MongoInstrumentationSingletons.java b/instrumentation/mongo/mongo-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v4_0/MongoInstrumentationSingletons.java index 2b803681d885..e14f9aa723ed 100644 --- a/instrumentation/mongo/mongo-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v4_0/MongoInstrumentationSingletons.java +++ b/instrumentation/mongo/mongo-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v4_0/MongoInstrumentationSingletons.java @@ -9,8 +9,8 @@ import com.mongodb.event.CommandStartedEvent; import io.opentelemetry.api.GlobalOpenTelemetry; import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter; -import io.opentelemetry.instrumentation.mongo.v3_1.MongoInstrumenterFactory; -import io.opentelemetry.instrumentation.mongo.v3_1.TracingCommandListener; +import io.opentelemetry.instrumentation.mongo.v3_1.internal.MongoInstrumenterFactory; +import io.opentelemetry.instrumentation.mongo.v3_1.internal.TracingCommandListener; import io.opentelemetry.javaagent.bootstrap.internal.AgentCommonConfig; import io.opentelemetry.javaagent.bootstrap.internal.AgentInstrumentationConfig; diff --git a/instrumentation/mongo/mongo-async-3.3/javaagent/build.gradle.kts b/instrumentation/mongo/mongo-async-3.3/javaagent/build.gradle.kts index 3110c2d3361e..064032497ecd 100644 --- a/instrumentation/mongo/mongo-async-3.3/javaagent/build.gradle.kts +++ b/instrumentation/mongo/mongo-async-3.3/javaagent/build.gradle.kts @@ -17,11 +17,6 @@ dependencies { library("org.mongodb:mongodb-driver-async:3.3.0") - // Starting with 3.7.0, mongodb-driver-async depends on mongodb-driver-core which contains - // both sync (com.mongodb.MongoClientSettings) and async (com.mongodb.async.SingleResultCallback) - // classes, causing the mongo-3.7 instrumentation to match instead of mongo-async-3.3. - latestDepTestLibrary("org.mongodb:mongodb-driver-async:3.6.+") // see mongo-3.7 module - testImplementation(project(":instrumentation:mongo:mongo-common:testing")) testInstrumentation(project(":instrumentation:mongo:mongo-3.1:javaagent")) diff --git a/instrumentation/mongo/mongo-async-3.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongoasync/v3_3/MongoInstrumentationSingletons.java b/instrumentation/mongo/mongo-async-3.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongoasync/v3_3/MongoInstrumentationSingletons.java index 79e487d9496b..2cb3352cdbc8 100644 --- a/instrumentation/mongo/mongo-async-3.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongoasync/v3_3/MongoInstrumentationSingletons.java +++ b/instrumentation/mongo/mongo-async-3.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongoasync/v3_3/MongoInstrumentationSingletons.java @@ -9,8 +9,8 @@ import com.mongodb.event.CommandStartedEvent; import io.opentelemetry.api.GlobalOpenTelemetry; import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter; -import io.opentelemetry.instrumentation.mongo.v3_1.MongoInstrumenterFactory; -import io.opentelemetry.instrumentation.mongo.v3_1.TracingCommandListener; +import io.opentelemetry.instrumentation.mongo.v3_1.internal.MongoInstrumenterFactory; +import io.opentelemetry.instrumentation.mongo.v3_1.internal.TracingCommandListener; import io.opentelemetry.javaagent.bootstrap.internal.AgentCommonConfig; import io.opentelemetry.javaagent.bootstrap.internal.AgentInstrumentationConfig; @@ -23,8 +23,7 @@ public final class MongoInstrumentationSingletons { AgentInstrumentationConfig.get() .getBoolean( "otel.instrumentation.mongo.statement-sanitizer.enabled", - AgentCommonConfig.get().isStatementSanitizationEnabled()), - 32 * 1024); // DEFAULT_MAX_NORMALIZED_QUERY_LENGTH + AgentCommonConfig.get().isStatementSanitizationEnabled())); public static final CommandListener LISTENER = new TracingCommandListener(INSTRUMENTER); diff --git a/instrumentation/mongo/mongo-common/testing/src/main/java/io/opentelemetry/instrumentation/mongo/testing/AbstractMongoClientTest.java b/instrumentation/mongo/mongo-common/testing/src/main/java/io/opentelemetry/instrumentation/mongo/testing/AbstractMongoClientTest.java index 753ef1b1931e..15664fa4a1c2 100644 --- a/instrumentation/mongo/mongo-common/testing/src/main/java/io/opentelemetry/instrumentation/mongo/testing/AbstractMongoClientTest.java +++ b/instrumentation/mongo/mongo-common/testing/src/main/java/io/opentelemetry/instrumentation/mongo/testing/AbstractMongoClientTest.java @@ -36,6 +36,7 @@ import java.net.Socket; import java.util.List; import java.util.concurrent.atomic.AtomicInteger; +import java.util.concurrent.atomic.AtomicReference; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.DisplayName; @@ -48,14 +49,14 @@ @TestInstance(PER_CLASS) public abstract class AbstractMongoClientTest { + protected abstract String instrumentationName(); + private static final AtomicInteger collectionIndex = new AtomicInteger(); private GenericContainer mongodb; protected String host; protected int port; - protected abstract String instrumentationName(); - @BeforeAll void setup() { mongodb = @@ -158,12 +159,7 @@ void testCreateCollection() throws InterruptedException { + "\",\"capped\":\"?\",\"$db\":\"?\",\"$readPreference\":{\"mode\":\"?\"}}", "{\"create\":\"" + collectionName - + "\",\"capped\":\"?\",\"$db\":\"?\",\"lsid\":{\"id\":\"?\"}}", - // mongodb-driver-async 3.6.x includes autoIndexId in create - // commands - "{\"create\":\"" - + collectionName - + "\",\"autoIndexId\":\"?\",\"capped\":\"?\",\"$db\":\"?\",\"lsid\":{\"id\":\"?\"},\"$readPreference\":{\"mode\":\"?\"}}")))); + + "\",\"capped\":\"?\",\"$db\":\"?\",\"lsid\":{\"id\":\"?\"}}")))); } @Test @@ -196,12 +192,7 @@ void testCreateCollectionNoDescription() throws InterruptedException { + "\",\"capped\":\"?\",\"$db\":\"?\",\"$readPreference\":{\"mode\":\"?\"}}", "{\"create\":\"" + collectionName - + "\",\"capped\":\"?\",\"$db\":\"?\",\"lsid\":{\"id\":\"?\"}}", - // mongodb-driver-async 3.6.x includes autoIndexId in create - // commands - "{\"create\":\"" - + collectionName - + "\",\"autoIndexId\":\"?\",\"capped\":\"?\",\"$db\":\"?\",\"lsid\":{\"id\":\"?\"},\"$readPreference\":{\"mode\":\"?\"}}")))); + + "\",\"capped\":\"?\",\"$db\":\"?\",\"lsid\":{\"id\":\"?\"}}")))); } @Test @@ -235,12 +226,7 @@ void testCreateCollectionCallingBuildTwice() throws InterruptedException { + "\",\"capped\":\"?\",\"$db\":\"?\",\"$readPreference\":{\"mode\":\"?\"}}", "{\"create\":\"" + collectionName - + "\",\"capped\":\"?\",\"$db\":\"?\",\"lsid\":{\"id\":\"?\"}}", - // mongodb-driver-async 3.6.x includes autoIndexId in create - // commands - "{\"create\":\"" - + collectionName - + "\",\"autoIndexId\":\"?\",\"capped\":\"?\",\"$db\":\"?\",\"lsid\":{\"id\":\"?\"},\"$readPreference\":{\"mode\":\"?\"}}")))); + + "\",\"capped\":\"?\",\"$db\":\"?\",\"lsid\":{\"id\":\"?\"}}")))); } @Test @@ -252,38 +238,39 @@ void testGetCollection() throws Exception { long count = testing().runWithSpan("parent", () -> getCollection(dbName, collectionName)); assertThat(count).isEqualTo(0); + // versions 3.7+ are instrumented by the mongo-3.7 module and have a different scope + AtomicReference scopeName = new AtomicReference<>(); + testing() .waitAndAssertTraces( trace -> trace.hasSpansSatisfyingExactly( span -> span.hasName("parent").hasKind(SpanKind.INTERNAL).hasNoParent(), - span -> - mongoSpan( - span, - "count", - collectionName, - dbName, - trace.getSpan(0), - asList( - "{\"count\":\"" + collectionName + "\",\"query\":{}}", - "{\"count\":\"" + collectionName + "\",\"query\":{},\"$db\":\"?\"}", - "{\"count\":\"" - + collectionName - + "\",\"query\":{},\"$db\":\"?\",\"lsid\":{\"id\":\"?\"}}", - "{\"count\":\"" - + collectionName - + "\",\"query\":{},\"$db\":\"?\",\"$readPreference\":{\"mode\":\"?\"}}", - "{\"count\":\"" - + collectionName - + "\",\"$db\":\"?\",\"lsid\":{\"id\":\"?\"}}", - // mongodb-driver-async 3.6.x includes all fields together - "{\"count\":\"" - + collectionName - + "\",\"query\":{},\"$db\":\"?\",\"lsid\":{\"id\":\"?\"},\"$readPreference\":{\"mode\":\"?\"}}")))); + span -> { + scopeName.set(trace.getSpan(1).getInstrumentationScopeInfo().getName()); + mongoSpan( + span, + "count", + collectionName, + dbName, + trace.getSpan(0), + asList( + "{\"count\":\"" + collectionName + "\",\"query\":{}}", + "{\"count\":\"" + collectionName + "\",\"query\":{},\"$db\":\"?\"}", + "{\"count\":\"" + + collectionName + + "\",\"query\":{},\"$db\":\"?\",\"lsid\":{\"id\":\"?\"}}", + "{\"count\":\"" + + collectionName + + "\",\"query\":{},\"$db\":\"?\",\"$readPreference\":{\"mode\":\"?\"}}", + "{\"count\":\"" + + collectionName + + "\",\"$db\":\"?\",\"lsid\":{\"id\":\"?\"}}")); + })); assertDurationMetric( testing(), - instrumentationName(), + scopeName.get(), DB_SYSTEM_NAME, DB_OPERATION_NAME, DB_NAMESPACE, @@ -343,11 +330,7 @@ void testInsert() throws Exception { + "\",\"query\":{},\"$db\":\"?\",\"$readPreference\":{\"mode\":\"?\"}}", "{\"count\":\"" + collectionName - + "\",\"$db\":\"?\",\"lsid\":{\"id\":\"?\"}}", - // mongodb-driver-async 3.6.x includes all fields together - "{\"count\":\"" - + collectionName - + "\",\"query\":{},\"$db\":\"?\",\"lsid\":{\"id\":\"?\"},\"$readPreference\":{\"mode\":\"?\"}}")))); + + "\",\"$db\":\"?\",\"lsid\":{\"id\":\"?\"}}")))); } @Test @@ -401,11 +384,7 @@ void testUpdate() throws Exception { + "\",\"query\":{},\"$db\":\"?\",\"$readPreference\":{\"mode\":\"?\"}}", "{\"count\":\"" + collectionName - + "\",\"$db\":\"?\",\"lsid\":{\"id\":\"?\"}}", - // mongodb-driver-async 3.6.x includes all fields together - "{\"count\":\"" - + collectionName - + "\",\"query\":{},\"$db\":\"?\",\"lsid\":{\"id\":\"?\"},\"$readPreference\":{\"mode\":\"?\"}}")))); + + "\",\"$db\":\"?\",\"lsid\":{\"id\":\"?\"}}")))); } @Test @@ -459,11 +438,7 @@ void testDelete() throws Exception { + "\",\"query\":{},\"$db\":\"?\",\"$readPreference\":{\"mode\":\"?\"}}", "{\"count\":\"" + collectionName - + "\",\"$db\":\"?\",\"lsid\":{\"id\":\"?\"}}", - // mongodb-driver-async 3.6.x includes all fields together - "{\"count\":\"" - + collectionName - + "\",\"query\":{},\"$db\":\"?\",\"lsid\":{\"id\":\"?\"},\"$readPreference\":{\"mode\":\"?\"}}")))); + + "\",\"$db\":\"?\",\"lsid\":{\"id\":\"?\"}}")))); } @Test @@ -551,12 +526,7 @@ void testCreateCollectionWithAlreadyBuiltClientOptions() { + "\",\"capped\":\"?\",\"$db\":\"?\",\"$readPreference\":{\"mode\":\"?\"}}", "{\"create\":\"" + collectionName - + "\",\"capped\":\"?\",\"$db\":\"?\",\"lsid\":{\"id\":\"?\"}}", - // mongodb-driver-async 3.6.x includes autoIndexId in create - // commands - "{\"create\":\"" - + collectionName - + "\",\"autoIndexId\":\"?\",\"capped\":\"?\",\"$db\":\"?\",\"lsid\":{\"id\":\"?\"},\"$readPreference\":{\"mode\":\"?\"}}")))); + + "\",\"capped\":\"?\",\"$db\":\"?\",\"lsid\":{\"id\":\"?\"}}")))); } protected String createCollectionName() { From 5b9771433bbe2c344c09c2843cb3722721483750 Mon Sep 17 00:00:00 2001 From: Jay DeLuca Date: Tue, 2 Dec 2025 06:50:56 -0500 Subject: [PATCH 8/9] one more --- .../mongo/v4_0/MongoInstrumentationSingletons.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/instrumentation/mongo/mongo-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v4_0/MongoInstrumentationSingletons.java b/instrumentation/mongo/mongo-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v4_0/MongoInstrumentationSingletons.java index e14f9aa723ed..20dcba7da5bb 100644 --- a/instrumentation/mongo/mongo-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v4_0/MongoInstrumentationSingletons.java +++ b/instrumentation/mongo/mongo-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v4_0/MongoInstrumentationSingletons.java @@ -23,8 +23,7 @@ public final class MongoInstrumentationSingletons { AgentInstrumentationConfig.get() .getBoolean( "otel.instrumentation.mongo.statement-sanitizer.enabled", - AgentCommonConfig.get().isStatementSanitizationEnabled()), - 32 * 1024); // DEFAULT_MAX_NORMALIZED_QUERY_LENGTH + AgentCommonConfig.get().isStatementSanitizationEnabled())); public static final CommandListener LISTENER = new TracingCommandListener(INSTRUMENTER); From 8a38fb44bd528affdd6f32b1207bfd3f0916c763 Mon Sep 17 00:00:00 2001 From: Jay DeLuca Date: Wed, 3 Dec 2025 11:37:26 -0500 Subject: [PATCH 9/9] fix comments on non public classes, remove unneeded instrumentation name --- .../instrumentation/mongo/v3_1/MongoClientTest.java | 5 ----- .../mongo/v3_1/internal/MongoAttributesExtractor.java | 4 ---- .../mongo/v3_1/internal/MongoDbAttributesGetter.java | 4 ---- .../mongo/v3_1/internal/MongoNetworkAttributesGetter.java | 4 ---- .../mongo/v3_1/internal/MongoSpanNameExtractor.java | 4 ---- .../mongo/v3_1/internal/StringBuilderWriter.java | 4 ---- .../instrumentation/mongo/v3_1/MongoClientTest.java | 5 ----- .../mongo/v3_7/MongoInstrumentationSingletons.java | 3 +-- .../instrumentation/mongo/v3_7/MongoClientTest.java | 6 ------ .../mongo/v4_0/Mongo4ReactiveClientTest.java | 4 ---- .../instrumentation/mongo/v4_0/MongoClientTest.java | 5 ----- .../mongoasync/v3_3/MongoAsyncClientTest.java | 5 ----- .../mongo/testing/AbstractMongoClientTest.java | 2 -- 13 files changed, 1 insertion(+), 54 deletions(-) diff --git a/instrumentation/mongo/mongo-3.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/mongo/v3_1/MongoClientTest.java b/instrumentation/mongo/mongo-3.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/mongo/v3_1/MongoClientTest.java index 9e94890764d2..b3cacf89ac32 100644 --- a/instrumentation/mongo/mongo-3.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/mongo/v3_1/MongoClientTest.java +++ b/instrumentation/mongo/mongo-3.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/mongo/v3_1/MongoClientTest.java @@ -19,11 +19,6 @@ class MongoClientTest extends AbstractMongo31ClientTest { @Override protected void configureMongoClientOptions(MongoClientOptions.Builder options) {} - @Override - protected String instrumentationName() { - return "io.opentelemetry.mongo-3.1"; - } - @Override protected InstrumentationExtension testing() { return testing; diff --git a/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/internal/MongoAttributesExtractor.java b/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/internal/MongoAttributesExtractor.java index 7188da3dede5..1900e432a0bd 100644 --- a/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/internal/MongoAttributesExtractor.java +++ b/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/internal/MongoAttributesExtractor.java @@ -20,10 +20,6 @@ import javax.annotation.Nullable; import org.bson.BsonValue; -/** - * This class is internal and is hence not for public use. Its APIs are unstable and can change at - * any time. - */ class MongoAttributesExtractor implements AttributesExtractor { // copied from DbIncubatingAttributes private static final AttributeKey DB_MONGODB_COLLECTION = diff --git a/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/internal/MongoDbAttributesGetter.java b/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/internal/MongoDbAttributesGetter.java index b868686912b9..1cdf2a1f2469 100644 --- a/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/internal/MongoDbAttributesGetter.java +++ b/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/internal/MongoDbAttributesGetter.java @@ -24,10 +24,6 @@ import org.bson.json.JsonWriter; import org.bson.json.JsonWriterSettings; -/** - * This class is internal and is hence not for public use. Its APIs are unstable and can change at - * any time. - */ class MongoDbAttributesGetter implements DbClientAttributesGetter { // copied from DbIncubatingAttributes.DbSystemIncubatingValues diff --git a/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/internal/MongoNetworkAttributesGetter.java b/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/internal/MongoNetworkAttributesGetter.java index 1fcee476b08e..ae855669a0da 100644 --- a/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/internal/MongoNetworkAttributesGetter.java +++ b/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/internal/MongoNetworkAttributesGetter.java @@ -9,10 +9,6 @@ import io.opentelemetry.instrumentation.api.semconv.network.ServerAttributesGetter; import javax.annotation.Nullable; -/** - * This class is internal and is hence not for public use. Its APIs are unstable and can change at - * any time. - */ class MongoNetworkAttributesGetter implements ServerAttributesGetter { @Nullable diff --git a/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/internal/MongoSpanNameExtractor.java b/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/internal/MongoSpanNameExtractor.java index bb24148f3652..658e2b95ddfb 100644 --- a/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/internal/MongoSpanNameExtractor.java +++ b/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/internal/MongoSpanNameExtractor.java @@ -8,10 +8,6 @@ import com.mongodb.event.CommandStartedEvent; import io.opentelemetry.instrumentation.api.instrumenter.SpanNameExtractor; -/** - * This class is internal and is hence not for public use. Its APIs are unstable and can change at - * any time. - */ class MongoSpanNameExtractor implements SpanNameExtractor { private static final String DEFAULT_SPAN_NAME = "DB Query"; diff --git a/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/internal/StringBuilderWriter.java b/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/internal/StringBuilderWriter.java index 47a987f7bdba..1d0237dbf6d4 100644 --- a/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/internal/StringBuilderWriter.java +++ b/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/internal/StringBuilderWriter.java @@ -7,10 +7,6 @@ import java.io.Writer; -/** - * This class is internal and is hence not for public use. Its APIs are unstable and can change at - * any time. - */ // because StringWriter uses the synchronized StringBuffer class StringBuilderWriter extends Writer { diff --git a/instrumentation/mongo/mongo-3.1/library/src/test/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoClientTest.java b/instrumentation/mongo/mongo-3.1/library/src/test/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoClientTest.java index e540f46323c7..7124b410a2f6 100644 --- a/instrumentation/mongo/mongo-3.1/library/src/test/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoClientTest.java +++ b/instrumentation/mongo/mongo-3.1/library/src/test/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoClientTest.java @@ -15,11 +15,6 @@ class MongoClientTest extends AbstractMongo31ClientTest { @RegisterExtension private static final InstrumentationExtension testing = LibraryInstrumentationExtension.create(); - @Override - protected String instrumentationName() { - return "io.opentelemetry.mongo-3.1"; - } - @Override protected void configureMongoClientOptions(MongoClientOptions.Builder options) { options.addCommandListener( diff --git a/instrumentation/mongo/mongo-3.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v3_7/MongoInstrumentationSingletons.java b/instrumentation/mongo/mongo-3.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v3_7/MongoInstrumentationSingletons.java index d92b52eb3585..e8928e5f93a6 100644 --- a/instrumentation/mongo/mongo-3.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v3_7/MongoInstrumentationSingletons.java +++ b/instrumentation/mongo/mongo-3.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v3_7/MongoInstrumentationSingletons.java @@ -23,8 +23,7 @@ public final class MongoInstrumentationSingletons { AgentInstrumentationConfig.get() .getBoolean( "otel.instrumentation.mongo.statement-sanitizer.enabled", - AgentCommonConfig.get().isStatementSanitizationEnabled()), - 32 * 1024); // DEFAULT_MAX_NORMALIZED_QUERY_LENGTH + AgentCommonConfig.get().isStatementSanitizationEnabled())); public static final CommandListener LISTENER = new TracingCommandListener(INSTRUMENTER); diff --git a/instrumentation/mongo/mongo-3.7/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/mongo/v3_7/MongoClientTest.java b/instrumentation/mongo/mongo-3.7/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/mongo/v3_7/MongoClientTest.java index 969f1ec3ddff..9545442e11fe 100644 --- a/instrumentation/mongo/mongo-3.7/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/mongo/v3_7/MongoClientTest.java +++ b/instrumentation/mongo/mongo-3.7/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/mongo/v3_7/MongoClientTest.java @@ -33,12 +33,6 @@ import org.junit.jupiter.api.extension.RegisterExtension; class MongoClientTest extends AbstractMongoClientTest> { - - @Override - protected String instrumentationName() { - return "io.opentelemetry.mongo-3.7"; - } - @RegisterExtension static final InstrumentationExtension testing = AgentInstrumentationExtension.create(); diff --git a/instrumentation/mongo/mongo-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/mongo/v4_0/Mongo4ReactiveClientTest.java b/instrumentation/mongo/mongo-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/mongo/v4_0/Mongo4ReactiveClientTest.java index 41954f16ab6a..f5fb03e54294 100644 --- a/instrumentation/mongo/mongo-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/mongo/v4_0/Mongo4ReactiveClientTest.java +++ b/instrumentation/mongo/mongo-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/mongo/v4_0/Mongo4ReactiveClientTest.java @@ -36,10 +36,6 @@ import org.reactivestreams.Subscription; class Mongo4ReactiveClientTest extends AbstractMongoClientTest> { - @Override - protected String instrumentationName() { - return "io.opentelemetry.mongo-4.0"; - } @RegisterExtension static final InstrumentationExtension testing = AgentInstrumentationExtension.create(); diff --git a/instrumentation/mongo/mongo-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/mongo/v4_0/MongoClientTest.java b/instrumentation/mongo/mongo-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/mongo/v4_0/MongoClientTest.java index 38c800152659..864288e9ec6b 100644 --- a/instrumentation/mongo/mongo-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/mongo/v4_0/MongoClientTest.java +++ b/instrumentation/mongo/mongo-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/mongo/v4_0/MongoClientTest.java @@ -30,11 +30,6 @@ class MongoClientTest extends AbstractMongoClientTest> { - @Override - protected String instrumentationName() { - return "io.opentelemetry.mongo-4.0"; - } - @RegisterExtension static final InstrumentationExtension testing = AgentInstrumentationExtension.create(); diff --git a/instrumentation/mongo/mongo-async-3.3/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/mongoasync/v3_3/MongoAsyncClientTest.java b/instrumentation/mongo/mongo-async-3.3/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/mongoasync/v3_3/MongoAsyncClientTest.java index 24bc6a19302d..80b0807f9402 100644 --- a/instrumentation/mongo/mongo-async-3.3/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/mongoasync/v3_3/MongoAsyncClientTest.java +++ b/instrumentation/mongo/mongo-async-3.3/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/mongoasync/v3_3/MongoAsyncClientTest.java @@ -32,11 +32,6 @@ class MongoAsyncClientTest extends AbstractMongoClientTest> { - @Override - protected String instrumentationName() { - return "io.opentelemetry.mongo-async-3.3"; - } - @RegisterExtension static final InstrumentationExtension testing = AgentInstrumentationExtension.create(); diff --git a/instrumentation/mongo/mongo-common/testing/src/main/java/io/opentelemetry/instrumentation/mongo/testing/AbstractMongoClientTest.java b/instrumentation/mongo/mongo-common/testing/src/main/java/io/opentelemetry/instrumentation/mongo/testing/AbstractMongoClientTest.java index 15664fa4a1c2..cbc718c84e6c 100644 --- a/instrumentation/mongo/mongo-common/testing/src/main/java/io/opentelemetry/instrumentation/mongo/testing/AbstractMongoClientTest.java +++ b/instrumentation/mongo/mongo-common/testing/src/main/java/io/opentelemetry/instrumentation/mongo/testing/AbstractMongoClientTest.java @@ -49,8 +49,6 @@ @TestInstance(PER_CLASS) public abstract class AbstractMongoClientTest { - protected abstract String instrumentationName(); - private static final AtomicInteger collectionIndex = new AtomicInteger(); private GenericContainer mongodb;