From edd7f6ebe18aa6d86cebd8db979c8ee94bf2ab66 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 24 Oct 2026 22:56:51 +0000 Subject: [PATCH 01/33] Initial plan From ceae7b50a38b8144abd84b587d807dcfcb2a8281 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 24 Oct 2026 23:09:18 +0000 Subject: [PATCH 02/33] Add separate database response status extraction API Co-authored-by: trask <218610+trask@users.noreply.github.com> --- .../db/DbClientAttributesExtractor.java | 3 + .../semconv/db/DbClientAttributesGetter.java | 12 ++++ .../db/DbClientAttributesExtractorTest.java | 66 +++++++++++++++++++ .../semconv/db/DbClientMetricsTest.java | 4 +- .../db/SqlClientAttributesExtractorTest.java | 27 ++++++++ 5 files changed, 111 insertions(+), 1 deletion(-) diff --git a/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/DbClientAttributesExtractor.java b/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/DbClientAttributesExtractor.java index d1aad64583ac..4325aeb7a38d 100644 --- a/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/DbClientAttributesExtractor.java +++ b/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/DbClientAttributesExtractor.java @@ -11,6 +11,7 @@ import static io.opentelemetry.semconv.DbAttributes.DB_OPERATION_NAME; import static io.opentelemetry.semconv.DbAttributes.DB_QUERY_SUMMARY; import static io.opentelemetry.semconv.DbAttributes.DB_QUERY_TEXT; +import static io.opentelemetry.semconv.DbAttributes.DB_RESPONSE_STATUS_CODE; import static io.opentelemetry.semconv.DbAttributes.DB_SYSTEM_NAME; import static io.opentelemetry.semconv.ErrorAttributes.ERROR_TYPE; @@ -122,6 +123,8 @@ static void onEndCommon( REQUEST request, @Nullable RESPONSE response, @Nullable Throwable error) { + attributes.put( + DB_RESPONSE_STATUS_CODE, getter.getDbResponseStatusCode(request, response, error)); String errorType = getter.getErrorType(request, response, error); // fall back to exception class name if (errorType == null && error != null) { diff --git a/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/DbClientAttributesGetter.java b/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/DbClientAttributesGetter.java index c815ec0766c5..937ad06d552a 100644 --- a/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/DbClientAttributesGetter.java +++ b/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/DbClientAttributesGetter.java @@ -64,6 +64,18 @@ default Map getDbQueryParameters(REQUEST request) { return emptyMap(); } + /** + * Returns the status code returned by the database, if available. + * + *

Return {@code null} when no response status code is available, including errors represented + * only by an exception class name or a fallback error type. + */ + @Nullable + default String getDbResponseStatusCode( + REQUEST request, @Nullable RESPONSE response, @Nullable Throwable error) { + return null; + } + /** * Returns a description of a class of error the operation ended with. * diff --git a/instrumentation-api-incubator/src/test/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/DbClientAttributesExtractorTest.java b/instrumentation-api-incubator/src/test/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/DbClientAttributesExtractorTest.java index abe959837f60..e2d1e9c12f46 100644 --- a/instrumentation-api-incubator/src/test/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/DbClientAttributesExtractorTest.java +++ b/instrumentation-api-incubator/src/test/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/DbClientAttributesExtractorTest.java @@ -11,6 +11,7 @@ import static io.opentelemetry.semconv.DbAttributes.DB_OPERATION_NAME; import static io.opentelemetry.semconv.DbAttributes.DB_QUERY_SUMMARY; import static io.opentelemetry.semconv.DbAttributes.DB_QUERY_TEXT; +import static io.opentelemetry.semconv.DbAttributes.DB_RESPONSE_STATUS_CODE; import static io.opentelemetry.semconv.DbAttributes.DB_SYSTEM_NAME; import static io.opentelemetry.semconv.ErrorAttributes.ERROR_TYPE; import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_ADDRESS; @@ -188,4 +189,69 @@ void shouldUseExceptionClassWhenErrorTypeIsUnavailable() { assertThat(attributes.build()) .containsOnly(entry(ERROR_TYPE, IllegalStateException.class.getName())); } + + @ParameterizedTest + @ValueSource(strings = {"42601", "custom"}) + void shouldExtractResponseStatusIndependentlyOfErrorType(String errorType) { + AttributesExtractor, Void> extractor = + DbClientAttributesExtractor.create( + new TestAttributesGetter() { + @Override + public String getDbResponseStatusCode( + Map request, Void response, Throwable error) { + return "42601"; + } + + @Override + public String getErrorType( + Map request, Void response, Throwable error) { + return errorType; + } + }); + AttributesBuilder attributes = Attributes.builder(); + + extractor.onEnd(attributes, Context.root(), emptyMap(), null, null); + + assertThat(attributes.build()) + .containsOnly(entry(DB_RESPONSE_STATUS_CODE, "42601"), entry(ERROR_TYPE, errorType)); + } + + @Test + void shouldPreserveExceptionFallbackWithResponseStatus() { + AttributesExtractor, Void> extractor = + DbClientAttributesExtractor.create( + new TestAttributesGetter() { + @Override + public String getDbResponseStatusCode( + Map request, Void response, Throwable error) { + return "42601"; + } + }); + AttributesBuilder attributes = Attributes.builder(); + + extractor.onEnd(attributes, Context.root(), emptyMap(), null, new IllegalStateException()); + + assertThat(attributes.build()) + .containsOnly( + entry(DB_RESPONSE_STATUS_CODE, "42601"), + entry(ERROR_TYPE, IllegalStateException.class.getName())); + } + + @Test + void shouldNotUseFallbackErrorTypeAsResponseStatus() { + AttributesExtractor, Void> extractor = + DbClientAttributesExtractor.create( + new TestAttributesGetter() { + @Override + public String getErrorType( + Map request, Void response, Throwable error) { + return "_OTHER"; + } + }); + AttributesBuilder attributes = Attributes.builder(); + + extractor.onEnd(attributes, Context.root(), emptyMap(), null, null); + + assertThat(attributes.build()).containsOnly(entry(ERROR_TYPE, "_OTHER")); + } } diff --git a/instrumentation-api-incubator/src/test/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/DbClientMetricsTest.java b/instrumentation-api-incubator/src/test/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/DbClientMetricsTest.java index 5e358018a0d9..39f43bc7e3d6 100644 --- a/instrumentation-api-incubator/src/test/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/DbClientMetricsTest.java +++ b/instrumentation-api-incubator/src/test/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/DbClientMetricsTest.java @@ -11,6 +11,7 @@ import static io.opentelemetry.semconv.DbAttributes.DB_NAMESPACE; import static io.opentelemetry.semconv.DbAttributes.DB_OPERATION_NAME; import static io.opentelemetry.semconv.DbAttributes.DB_QUERY_SUMMARY; +import static io.opentelemetry.semconv.DbAttributes.DB_RESPONSE_STATUS_CODE; import static io.opentelemetry.semconv.DbAttributes.DB_SYSTEM_NAME; import static io.opentelemetry.semconv.ErrorAttributes.ERROR_TYPE; import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_ADDRESS; @@ -61,6 +62,7 @@ void collectsMetrics() { Attributes responseAttributes = Attributes.builder() .put(ERROR_TYPE, "400") + .put(DB_RESPONSE_STATUS_CODE, "400") .put(NETWORK_PEER_ADDRESS, "1.2.3.4") .put(NETWORK_PEER_PORT, 8080) .build(); @@ -94,7 +96,7 @@ void collectsMetrics() { point -> point .hasSum(0.15 /* seconds */) - .hasAttributesSatisfying( + .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM_NAME, "myDb"), equalTo(DB_NAMESPACE, "potatoes"), equalTo(DB_OPERATION_NAME, "SELECT"), diff --git a/instrumentation-api-incubator/src/test/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/SqlClientAttributesExtractorTest.java b/instrumentation-api-incubator/src/test/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/SqlClientAttributesExtractorTest.java index 686f3f145695..247fafb69dd4 100644 --- a/instrumentation-api-incubator/src/test/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/SqlClientAttributesExtractorTest.java +++ b/instrumentation-api-incubator/src/test/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/SqlClientAttributesExtractorTest.java @@ -13,7 +13,9 @@ import static io.opentelemetry.semconv.DbAttributes.DB_OPERATION_NAME; import static io.opentelemetry.semconv.DbAttributes.DB_QUERY_SUMMARY; import static io.opentelemetry.semconv.DbAttributes.DB_QUERY_TEXT; +import static io.opentelemetry.semconv.DbAttributes.DB_RESPONSE_STATUS_CODE; import static io.opentelemetry.semconv.DbAttributes.DB_SYSTEM_NAME; +import static io.opentelemetry.semconv.ErrorAttributes.ERROR_TYPE; import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_ADDRESS; import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_PORT; import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_QUERY_PARAMETER; @@ -38,6 +40,31 @@ class SqlClientAttributesExtractorTest { + @Test + void shouldExtractResponseStatusAndErrorType() { + AttributesExtractor, Void> extractor = + SqlClientAttributesExtractor.create( + new TestAttributesGetter() { + @Override + public String getDbResponseStatusCode( + Map request, Void response, Throwable error) { + return "42601"; + } + + @Override + public String getErrorType( + Map request, Void response, Throwable error) { + return "42601"; + } + }); + AttributesBuilder attributes = Attributes.builder(); + + extractor.onEnd(attributes, Context.root(), emptyMap(), null, new IllegalStateException()); + + assertThat(attributes.build()) + .containsOnly(entry(DB_RESPONSE_STATUS_CODE, "42601"), entry(ERROR_TYPE, "42601")); + } + @Test void shouldRetainNetworkPeerWithoutProtocolAttributes() { AttributesExtractor, Void> extractor = From 70827d7f10683d017affc1e04ded20362887618c Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 24 Oct 2026 23:23:13 +0000 Subject: [PATCH 03/33] Expose database response codes in scoped getters and span tests Co-authored-by: trask <218610+trask@users.noreply.github.com> --- db-status-rest-format.log | 67 + db-status-rest-tests.log | 1836 +++++++++++++++++ .../internal/DynamoDbAttributesGetter.java | 9 + .../v2_2/internal/DynamoDbErrorsTest.java | 30 + .../v0_5/ClickHouseAttributesGetter.java | 7 + .../clientv1/v0_5/ClickHouseClientV1Test.java | 4 +- .../clientv2/v0_8/ClickHouseClientV2Test.java | 4 +- .../rest/v5_0/ElasticsearchRest5Test.java | 30 +- .../ElasticsearchDbAttributesGetterTest.java | 30 + .../v5_0/ElasticsearchDbAttributesGetter.java | 7 + .../jdbc/internal/JdbcAttributesGetter.java | 7 + .../jdbc/datasource/JdbcTelemetryTest.java | 8 +- .../internal/JdbcAttributesGetterTest.java | 14 + .../AbstractJdbcInstrumentationTest.java | 6 +- .../v4_0/LettuceDbAttributesGetterTest.java | 17 + .../v4_0/LettuceBatchAttributesGetter.java | 7 + .../v4_0/LettuceDbAttributesGetter.java | 7 + .../lettuce/v4_0/LettuceAsyncClientTest.java | 3 + .../v5_0/LettuceBatchAttributesGetter.java | 7 + .../v5_0/LettuceDbAttributesGetter.java | 7 + .../lettuce/v5_0/LettuceAsyncClientTest.java | 3 + .../v5_0/LettuceAttributesGetterTest.java | 16 + .../v5_1/LettuceDbAttributesGetter.java | 7 + .../v5_1/LettuceDbAttributesGetterTest.java | 11 + .../AbstractLettuceReactiveClientTest.java | 5 +- .../internal/MongoDbAttributesGetter.java | 9 + .../internal/MongoDbAttributesGetterTest.java | 24 + .../testing/AbstractMongoClientTest.java | 4 +- .../v3_0/OpenSearchAttributesGetter.java | 7 + ...nSearchApacheHttpClient5TransportTest.java | 4 +- .../v1_0/OpenSearchRestAttributesGetter.java | 9 + .../common/AbstractOpenSearchRestTest.java | 32 +- .../internal/R2dbcSqlAttributesGetter.java | 7 + .../v1_0/R2dbcSqlAttributesGetterTest.java | 21 + .../v1_8/RediscalaAttributesGetterTest.java | 14 + .../v1_8/RediscalaAttributesGetter.java | 7 + .../rediscala/v1_8/RediscalaClientTest.scala | 16 +- .../SpymemcachedAttributesGetterTest.java | 35 + .../v2_12/SpymemcachedAttributesGetter.java | 13 + .../spymemcached/v2_12/SpymemcachedTest.java | 2 + .../VertxRedisClientAttributesGetter.java | 7 + .../v4_0/VertxRedisClientTest.java | 7 +- .../v4_0/VertxRedisClientErrorTest.java | 9 +- .../VertxRedisClientAttributesGetterTest.java | 17 + .../sqlclient/v4_0/VertxSqlClientTest.java | 7 +- .../sqlclient/v5_0/VertxSqlClientTest.java | 10 +- .../v4_0/VertxSqlClientAttributesGetter.java | 7 + 47 files changed, 2398 insertions(+), 19 deletions(-) create mode 100644 db-status-rest-format.log create mode 100644 db-status-rest-tests.log diff --git a/db-status-rest-format.log b/db-status-rest-format.log new file mode 100644 index 000000000000..a79c68721b77 --- /dev/null +++ b/db-status-rest-format.log @@ -0,0 +1,67 @@ +Parallel Configuration Cache is an incubating feature. +Calculating task graph as no cached configuration is available for tasks: :instrumentation:elasticsearch:elasticsearch-rest-5.0:javaagent:spotlessJavaApply :instrumentation:opensearch:opensearch-rest-common-1.0:testing:spotlessJavaApply +> Task :conventions:checkKotlinGradlePluginConfigurationErrors SKIPPED +> Task :conventions:extractPrecompiledScriptPluginPlugins UP-TO-DATE +> Task :gradle-plugins:checkKotlinGradlePluginConfigurationErrors SKIPPED +> Task :conventions:generateScriptPluginAdapters UP-TO-DATE +> Task :conventions:pluginDescriptors UP-TO-DATE +> Task :conventions:processResources UP-TO-DATE +> Task :gradle-plugins:generateExternalPluginSpecBuilders UP-TO-DATE +> Task :gradle-plugins:extractPrecompiledScriptPluginPlugins UP-TO-DATE +> Task :gradle-plugins:compilePluginsBlocks UP-TO-DATE +> Task :gradle-plugins:generatePrecompiledScriptPluginAccessors UP-TO-DATE +> Task :gradle-plugins:generateScriptPluginAdapters UP-TO-DATE +> Task :gradle-plugins:compileKotlin UP-TO-DATE +> Task :gradle-plugins:compileJava NO-SOURCE +> Task :gradle-plugins:pluginDescriptors UP-TO-DATE +> Task :gradle-plugins:processResources UP-TO-DATE +> Task :gradle-plugins:classes UP-TO-DATE +> Task :gradle-plugins:jar UP-TO-DATE +> Task :conventions:generateExternalPluginSpecBuilders UP-TO-DATE +> Task :conventions:compilePluginsBlocks UP-TO-DATE +> Task :conventions:generatePrecompiledScriptPluginAccessors UP-TO-DATE +> Task :conventions:compileKotlin UP-TO-DATE +> Task :conventions:compileJava NO-SOURCE +> Task :conventions:classes UP-TO-DATE +> Task :conventions:jar UP-TO-DATE +> Task :quarkus-2.0-plugin:pluginDescriptors UP-TO-DATE +> Task :quarkus-2.0-plugin:processResources UP-TO-DATE +> Task :quarkus-common-plugin:compileJava UP-TO-DATE +> Task :quarkus-common-plugin:processResources NO-SOURCE +> Task :quarkus-common-plugin:classes UP-TO-DATE +> Task :quarkus-common-plugin:jar UP-TO-DATE +> Task :quarkus-2.0-plugin:compileJava UP-TO-DATE +> Task :quarkus-2.0-plugin:classes UP-TO-DATE +> Task :quarkus-2.0-plugin:jar UP-TO-DATE +> Task :quarkus-3.0-plugin:compileJava UP-TO-DATE +> Task :quarkus-3.0-plugin:pluginDescriptors UP-TO-DATE +> Task :quarkus-3.0-plugin:processResources UP-TO-DATE +> Task :quarkus-3.0-plugin:classes UP-TO-DATE +> Task :quarkus-3.0-plugin:jar UP-TO-DATE +> Task :quarkus-3.9-plugin:compileJava UP-TO-DATE +> Task :quarkus-3.9-plugin:pluginDescriptors UP-TO-DATE +> Task :quarkus-3.9-plugin:processResources UP-TO-DATE +> Task :quarkus-3.9-plugin:classes UP-TO-DATE +> Task :quarkus-3.9-plugin:jar UP-TO-DATE +> Task :instrumentation:opensearch:opensearch-rest-common-1.0:testing:spotlessJava +> Task :instrumentation:opensearch:opensearch-rest-common-1.0:testing:spotlessJavaApply +> Task :instrumentation:elasticsearch:elasticsearch-rest-5.0:javaagent:spotlessJava +> Task :instrumentation:elasticsearch:elasticsearch-rest-5.0:javaagent:spotlessJavaApply +gradle/actions: Writing build results to /home/runner/work/_temp/.gradle-actions/build-results/__run_27-1792884104119.json + +[Incubating] Problems report is available at: file:///home/runner/work/opentelemetry-java-instrumentation/opentelemetry-java-instrumentation/build/reports/problems/problems-report.html + +Deprecated Gradle features were used in this build, making it incompatible with Gradle 10. + +You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins. + +For more on this, please refer to https://docs.gradle.org/9.8.2/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation. + +BUILD SUCCESSFUL in 7s +36 actionable tasks: 4 executed, 32 up-to-date + +Publishing Build Scan to Develocity... +gradle/actions: Writing build results to /home/runner/work/_temp/.gradle-actions/build-scans/__run_27-1792884104119.json +https://gradle.com/s/oqa32t5fjgabk + +Configuration cache entry stored. diff --git a/db-status-rest-tests.log b/db-status-rest-tests.log new file mode 100644 index 000000000000..2958baa00e60 --- /dev/null +++ b/db-status-rest-tests.log @@ -0,0 +1,1836 @@ +Parallel Configuration Cache is an incubating feature. +Calculating task graph as no cached configuration is available for tasks: :instrumentation:elasticsearch:elasticsearch-rest-5.0:javaagent:test --tests *ElasticsearchRest5Test.recordsFailureResponseStatus --tests *ElasticsearchRest5Test.elasticsearchStatus :instrumentation:opensearch:opensearch-rest-1.0:javaagent:test --tests *OpenSearchRestTest.recordsFailureResponseStatus --tests *OpenSearchRestTest.shouldGetStatusWithTraces :instrumentation:opensearch:opensearch-rest-3.0:javaagent:test --tests *OpenSearchRest3Test.recordsFailureResponseStatus --tests *OpenSearchRest3Test.shouldGetStatusWithTraces +> Task :conventions:checkKotlinGradlePluginConfigurationErrors SKIPPED +> Task :gradle-plugins:checkKotlinGradlePluginConfigurationErrors SKIPPED +> Task :conventions:extractPrecompiledScriptPluginPlugins UP-TO-DATE +> Task :conventions:generateScriptPluginAdapters UP-TO-DATE +> Task :conventions:pluginDescriptors UP-TO-DATE +> Task :conventions:processResources UP-TO-DATE +> Task :gradle-plugins:generateExternalPluginSpecBuilders UP-TO-DATE +> Task :gradle-plugins:extractPrecompiledScriptPluginPlugins UP-TO-DATE +> Task :gradle-plugins:compilePluginsBlocks UP-TO-DATE +> Task :gradle-plugins:generatePrecompiledScriptPluginAccessors UP-TO-DATE +> Task :gradle-plugins:generateScriptPluginAdapters UP-TO-DATE +> Task :gradle-plugins:compileKotlin UP-TO-DATE +> Task :gradle-plugins:compileJava NO-SOURCE +> Task :gradle-plugins:pluginDescriptors UP-TO-DATE +> Task :gradle-plugins:processResources UP-TO-DATE +> Task :gradle-plugins:classes UP-TO-DATE +> Task :gradle-plugins:jar UP-TO-DATE +> Task :conventions:generateExternalPluginSpecBuilders UP-TO-DATE +> Task :conventions:compilePluginsBlocks UP-TO-DATE +> Task :conventions:generatePrecompiledScriptPluginAccessors UP-TO-DATE +> Task :conventions:compileKotlin UP-TO-DATE +> Task :conventions:compileJava NO-SOURCE +> Task :conventions:classes UP-TO-DATE +> Task :conventions:jar UP-TO-DATE +> Task :quarkus-2.0-plugin:pluginDescriptors UP-TO-DATE +> Task :quarkus-2.0-plugin:processResources UP-TO-DATE +> Task :quarkus-common-plugin:compileJava UP-TO-DATE +> Task :quarkus-common-plugin:processResources NO-SOURCE +> Task :quarkus-common-plugin:classes UP-TO-DATE +> Task :quarkus-common-plugin:jar UP-TO-DATE +> Task :quarkus-2.0-plugin:compileJava UP-TO-DATE +> Task :quarkus-2.0-plugin:classes UP-TO-DATE +> Task :quarkus-2.0-plugin:jar UP-TO-DATE +> Task :quarkus-3.0-plugin:compileJava UP-TO-DATE +> Task :quarkus-3.0-plugin:pluginDescriptors UP-TO-DATE +> Task :quarkus-3.0-plugin:processResources UP-TO-DATE +> Task :quarkus-3.0-plugin:classes UP-TO-DATE +> Task :quarkus-3.0-plugin:jar UP-TO-DATE +> Task :quarkus-3.9-plugin:compileJava UP-TO-DATE +> Task :quarkus-3.9-plugin:pluginDescriptors UP-TO-DATE +> Task :quarkus-3.9-plugin:processResources UP-TO-DATE +> Task :quarkus-3.9-plugin:classes UP-TO-DATE +> Task :quarkus-3.9-plugin:jar UP-TO-DATE +> Task :custom-checks:processResources NO-SOURCE +> Task :declarative-config-bridge:processResources NO-SOURCE +> Task :custom-checks:compileJava UP-TO-DATE +> Task :custom-checks:classes UP-TO-DATE +> Task :instrumentation-api:processResources NO-SOURCE +> Task :instrumentation-annotations-support:processResources NO-SOURCE +> Task :custom-checks:jar UP-TO-DATE +> Task :instrumentation-api:compileJava UP-TO-DATE +> Task :declarative-config-bridge:compileJava UP-TO-DATE +> Task :declarative-config-bridge:classes UP-TO-DATE +> Task :declarative-config-bridge:jar UP-TO-DATE +> Task :instrumentation-api:classes UP-TO-DATE +> Task :instrumentation-api:jar UP-TO-DATE +> Task :instrumentation-api-incubator:generateJflex UP-TO-DATE +> Task :instrumentation-annotations-support:compileJava UP-TO-DATE +> Task :instrumentation-annotations-support:classes UP-TO-DATE +> Task :instrumentation-annotations-support:jar UP-TO-DATE +> Task :instrumentation-api-incubator:processResources NO-SOURCE +> Task :javaagent-bootstrap:processResources NO-SOURCE +> Task :javaagent-extension-api:processResources NO-SOURCE +> Task :instrumentation-api-incubator:compileJava UP-TO-DATE +> Task :instrumentation-api-incubator:classes UP-TO-DATE +> Task :muzzle:processResources UP-TO-DATE +> Task :instrumentation-api-incubator:jar UP-TO-DATE +> Task :sdk-autoconfigure-support:compileJava UP-TO-DATE +> Task :javaagent-bootstrap:compileJava UP-TO-DATE +> Task :javaagent-bootstrap:classes UP-TO-DATE +> Task :javaagent-extension-api:compileJava UP-TO-DATE +> Task :javaagent-extension-api:classes UP-TO-DATE +> Task :javaagent-extension-api:jar UP-TO-DATE +> Task :javaagent-bootstrap:jar UP-TO-DATE +> Task :sdk-autoconfigure-support:processResources UP-TO-DATE +> Task :sdk-autoconfigure-support:classes UP-TO-DATE +> Task :sdk-autoconfigure-support:jar UP-TO-DATE +> Task :muzzle:compileJava UP-TO-DATE +> Task :muzzle:classes UP-TO-DATE +> Task :muzzle:jar UP-TO-DATE +> Task :javaagent-tooling:javaagent-tooling-java9:compileJava UP-TO-DATE +> Task :javaagent-tooling:processResources NO-SOURCE +> Task :instrumentation:apache-httpasyncclient-4.1:javaagent:generateInstrumentationVersionFile UP-TO-DATE +> Task :instrumentation:apache-httpasyncclient-4.1:javaagent:processResources NO-SOURCE +> Task :javaagent-tooling:javaagent-tooling-java9:processResources NO-SOURCE +> Task :javaagent-tooling:javaagent-tooling-java9:classes UP-TO-DATE +> Task :instrumentation:apache-httpclient:apache-httpclient-4.0:javaagent:generateInstrumentationVersionFile UP-TO-DATE +> Task :javaagent-tooling:javaagent-tooling-java9:jar UP-TO-DATE +> Task :instrumentation:apache-httpclient:apache-httpclient-4.0:javaagent:processResources NO-SOURCE +> Task :instrumentation:elasticsearch:elasticsearch-rest-common-5.0:bootstrap:compileJava UP-TO-DATE +> Task :instrumentation:elasticsearch:elasticsearch-rest-common-5.0:bootstrap:processResources NO-SOURCE +> Task :instrumentation:elasticsearch:elasticsearch-rest-common-5.0:bootstrap:classes UP-TO-DATE +> Task :instrumentation:elasticsearch:elasticsearch-rest-common-5.0:bootstrap:jar UP-TO-DATE +> Task :javaagent-tooling:compileJava UP-TO-DATE +> Task :instrumentation:elasticsearch:elasticsearch-rest-common-5.0:javaagent:generateInstrumentationVersionFile UP-TO-DATE +> Task :javaagent-tooling:classes UP-TO-DATE +> Task :instrumentation:elasticsearch:elasticsearch-rest-common-5.0:javaagent:processResources NO-SOURCE +> Task :javaagent-tooling:jar UP-TO-DATE +> Task :instrumentation:elasticsearch:elasticsearch-rest-5.0:javaagent:generateInstrumentationVersionFile UP-TO-DATE +> Task :instrumentation:apache-httpasyncclient-4.1:javaagent:compileJava UP-TO-DATE +> Task :instrumentation:apache-httpclient:apache-httpclient-4.0:javaagent:compileJava UP-TO-DATE +> Task :instrumentation:apache-httpasyncclient-4.1:javaagent:byteBuddyJava UP-TO-DATE +> Task :instrumentation:apache-httpclient:apache-httpclient-4.0:javaagent:byteBuddyJava UP-TO-DATE +> Task :instrumentation:apache-httpasyncclient-4.1:javaagent:classes UP-TO-DATE +> Task :instrumentation:apache-httpclient:apache-httpclient-4.0:javaagent:classes UP-TO-DATE +> Task :instrumentation:apache-httpasyncclient-4.1:javaagent:jar UP-TO-DATE +> Task :instrumentation:apache-httpclient:apache-httpclient-4.0:javaagent:jar UP-TO-DATE +> Task :instrumentation:elasticsearch:elasticsearch-rest-5.0:javaagent:processResources NO-SOURCE +> Task :instrumentation:elasticsearch:elasticsearch-rest-6.4:javaagent:generateInstrumentationVersionFile UP-TO-DATE +> Task :instrumentation:elasticsearch:elasticsearch-rest-6.4:javaagent:processResources NO-SOURCE +> Task :instrumentation:elasticsearch:elasticsearch-rest-7.0:javaagent:generateInstrumentationVersionFile UP-TO-DATE +> Task :instrumentation:elasticsearch:elasticsearch-rest-7.0:javaagent:processResources NO-SOURCE +> Task :testing:dependencies-shaded-for-testing:compileJava NO-SOURCE +> Task :testing:dependencies-shaded-for-testing:processResources NO-SOURCE +> Task :testing:dependencies-shaded-for-testing:classes UP-TO-DATE +> Task :testing:dependencies-shaded-for-testing:shadowJar UP-TO-DATE +> Task :instrumentation:elasticsearch:elasticsearch-rest-common-5.0:javaagent:compileJava UP-TO-DATE +> Task :testing-common:compileJava UP-TO-DATE +> Task :testing-common:processResources UP-TO-DATE +> Task :instrumentation:elasticsearch:elasticsearch-rest-common-5.0:javaagent:byteBuddyJava UP-TO-DATE +> Task :instrumentation:elasticsearch:elasticsearch-rest-common-5.0:javaagent:classes UP-TO-DATE +> Task :instrumentation:elasticsearch:elasticsearch-rest-common-5.0:javaagent:jar UP-TO-DATE +> Task :instrumentation:elasticsearch:elasticsearch-rest-5.0:javaagent:compileJava UP-TO-DATE +> Task :instrumentation:elasticsearch:elasticsearch-rest-5.0:javaagent:byteBuddyJava UP-TO-DATE +> Task :instrumentation:elasticsearch:elasticsearch-rest-5.0:javaagent:classes UP-TO-DATE +> Task :instrumentation:elasticsearch:elasticsearch-rest-6.4:javaagent:compileJava UP-TO-DATE +> Task :instrumentation:elasticsearch:elasticsearch-rest-6.4:javaagent:byteBuddyJava UP-TO-DATE +> Task :instrumentation:elasticsearch:elasticsearch-rest-6.4:javaagent:classes UP-TO-DATE +> Task :instrumentation:elasticsearch:elasticsearch-rest-6.4:javaagent:jar UP-TO-DATE +> Task :instrumentation:elasticsearch:elasticsearch-rest-7.0:javaagent:compileJava UP-TO-DATE +> Task :instrumentation:elasticsearch:elasticsearch-rest-7.0:javaagent:byteBuddyJava UP-TO-DATE +> Task :instrumentation:elasticsearch:elasticsearch-rest-7.0:javaagent:classes UP-TO-DATE +> Task :instrumentation:elasticsearch:elasticsearch-rest-7.0:javaagent:jar UP-TO-DATE +> Task :instrumentation:elasticsearch:elasticsearch-rest-5.0:javaagent:shadowJar UP-TO-DATE +> Task :testing:agent-exporter:compileJava UP-TO-DATE +> Task :testing:agent-exporter:processResources NO-SOURCE +> Task :testing:agent-exporter:classes UP-TO-DATE +> Task :testing:agent-exporter:shadowJar UP-TO-DATE +> Task :testing:agent-for-testing:compileJava NO-SOURCE +> Task :testing:agent-for-testing:processResources NO-SOURCE +> Task :testing:agent-for-testing:classes UP-TO-DATE +> Task :instrumentation:apache-commons-pool-2.0:bootstrap:compileJava UP-TO-DATE +> Task :instrumentation:apache-commons-pool-2.0:bootstrap:processResources NO-SOURCE +> Task :instrumentation:apache-commons-pool-2.0:bootstrap:classes UP-TO-DATE +> Task :instrumentation:apache-commons-pool-2.0:bootstrap:jar UP-TO-DATE +> Task :instrumentation:executors:bootstrap:compileJava UP-TO-DATE +> Task :instrumentation:executors:bootstrap:processResources NO-SOURCE +> Task :instrumentation:executors:bootstrap:classes UP-TO-DATE +> Task :instrumentation:executors:bootstrap:jar UP-TO-DATE +> Task :instrumentation:jdbc:bootstrap:compileJava NO-SOURCE +> Task :instrumentation:jdbc:bootstrap:processResources NO-SOURCE +> Task :instrumentation:jdbc:library:compileJava UP-TO-DATE +> Task :instrumentation:jdbc:library:generateInstrumentationVersionFile UP-TO-DATE +> Task :instrumentation:jdbc:library:processResources UP-TO-DATE +> Task :instrumentation:jdbc:library:classes UP-TO-DATE +> Task :instrumentation:jdbc:library:shadowJar UP-TO-DATE +> Task :instrumentation:jdbc:library:extractShadowJarBootstrap UP-TO-DATE +> Task :instrumentation:jdbc:bootstrap:classes UP-TO-DATE +> Task :instrumentation:jdbc:bootstrap:jar UP-TO-DATE +> Task :instrumentation:rmi:bootstrap:compileJava UP-TO-DATE +> Task :instrumentation:rmi:bootstrap:processResources NO-SOURCE +> Task :instrumentation:rmi:bootstrap:classes UP-TO-DATE +> Task :instrumentation:rmi:bootstrap:jar UP-TO-DATE +> Task :instrumentation:undertow-1.4:bootstrap:compileJava UP-TO-DATE +> Task :instrumentation:undertow-1.4:bootstrap:processResources NO-SOURCE +> Task :instrumentation:undertow-1.4:bootstrap:classes UP-TO-DATE +> Task :instrumentation:undertow-1.4:bootstrap:jar UP-TO-DATE +> Task :instrumentation:internal:internal-application-logger:bootstrap:compileJava UP-TO-DATE +> Task :instrumentation:internal:internal-application-logger:bootstrap:processResources NO-SOURCE +> Task :instrumentation:internal:internal-application-logger:bootstrap:classes UP-TO-DATE +> Task :instrumentation:internal:internal-application-logger:bootstrap:jar UP-TO-DATE +> Task :instrumentation:servlet:servlet-common:bootstrap:compileJava UP-TO-DATE +> Task :instrumentation:servlet:servlet-common:bootstrap:processResources NO-SOURCE +> Task :instrumentation:servlet:servlet-common:bootstrap:classes UP-TO-DATE +> Task :instrumentation:servlet:servlet-common:bootstrap:jar UP-TO-DATE +> Task :instrumentation:jaxrs:jaxrs-common:bootstrap:compileJava UP-TO-DATE +> Task :instrumentation:jaxrs:jaxrs-common:bootstrap:processResources NO-SOURCE +> Task :instrumentation:jaxrs:jaxrs-common:bootstrap:classes UP-TO-DATE +> Task :instrumentation:jaxrs:jaxrs-common:bootstrap:jar UP-TO-DATE +> Task :instrumentation:jms:jms-common-1.1:bootstrap:compileJava UP-TO-DATE +> Task :instrumentation:jms:jms-common-1.1:bootstrap:processResources NO-SOURCE +> Task :instrumentation:jms:jms-common-1.1:bootstrap:classes UP-TO-DATE +> Task :instrumentation:jms:jms-common-1.1:bootstrap:jar UP-TO-DATE +> Task :instrumentation:spring:spring-scheduling-3.1:bootstrap:compileJava UP-TO-DATE +> Task :instrumentation:spring:spring-scheduling-3.1:bootstrap:processResources NO-SOURCE +> Task :instrumentation:spring:spring-scheduling-3.1:bootstrap:classes UP-TO-DATE +> Task :instrumentation:spring:spring-scheduling-3.1:bootstrap:jar UP-TO-DATE +> Task :instrumentation:kafka:kafka-clients:kafka-clients-0.11:bootstrap:compileJava UP-TO-DATE +> Task :instrumentation:kafka:kafka-clients:kafka-clients-0.11:bootstrap:processResources NO-SOURCE +> Task :instrumentation:kafka:kafka-clients:kafka-clients-0.11:bootstrap:classes UP-TO-DATE +> Task :instrumentation:kafka:kafka-clients:kafka-clients-0.11:bootstrap:jar UP-TO-DATE +> Task :javaagent:buildBootstrapLibs UP-TO-DATE +> Task :javaagent-internal-logging-application:compileJava UP-TO-DATE +> Task :javaagent-internal-logging-application:processResources NO-SOURCE +> Task :javaagent-internal-logging-application:classes UP-TO-DATE +> Task :javaagent-internal-logging-application:jar UP-TO-DATE +> Task :javaagent-internal-logging-simple:compileJava UP-TO-DATE +> Task :javaagent-internal-logging-simple:processResources NO-SOURCE +> Task :javaagent-internal-logging-simple:classes UP-TO-DATE +> Task :javaagent-internal-logging-simple:shadowJar UP-TO-DATE +> Task :instrumentation:executors:javaagent:compileJava UP-TO-DATE +> Task :instrumentation:executors:javaagent:generateInstrumentationVersionFile UP-TO-DATE +> Task :instrumentation:executors:javaagent:processResources NO-SOURCE +> Task :instrumentation:executors:javaagent:byteBuddyJava UP-TO-DATE +> Task :instrumentation:executors:javaagent:compileScala NO-SOURCE +> Task :instrumentation:executors:javaagent:classes UP-TO-DATE +> Task :instrumentation:executors:javaagent:jar UP-TO-DATE +> Task :instrumentation-annotations:compileJava UP-TO-DATE +> Task :instrumentation-annotations:processResources NO-SOURCE +> Task :instrumentation-annotations:classes UP-TO-DATE +> Task :instrumentation-annotations:jar UP-TO-DATE +> Task :opentelemetry-instrumentation-annotations-shaded-for-instrumenting:compileJava NO-SOURCE +> Task :opentelemetry-instrumentation-annotations-shaded-for-instrumenting:processResources NO-SOURCE +> Task :opentelemetry-instrumentation-annotations-shaded-for-instrumenting:classes UP-TO-DATE +> Task :opentelemetry-instrumentation-annotations-shaded-for-instrumenting:shadowJar UP-TO-DATE +> Task :instrumentation:opentelemetry-instrumentation-annotations-1.16:javaagent:compileJava UP-TO-DATE +> Task :instrumentation:opentelemetry-instrumentation-annotations-1.16:javaagent:generateInstrumentationVersionFile UP-TO-DATE +> Task :instrumentation:opentelemetry-instrumentation-annotations-1.16:javaagent:processResources NO-SOURCE +> Task :instrumentation:opentelemetry-instrumentation-annotations-1.16:javaagent:byteBuddyJava UP-TO-DATE +> Task :instrumentation:opentelemetry-instrumentation-annotations-1.16:javaagent:classes UP-TO-DATE +> Task :instrumentation:opentelemetry-instrumentation-annotations-1.16:javaagent:jar UP-TO-DATE +> Task :instrumentation:internal:internal-application-logger:javaagent:compileJava UP-TO-DATE +> Task :instrumentation:internal:internal-application-logger:javaagent:generateInstrumentationVersionFile UP-TO-DATE +> Task :instrumentation:internal:internal-application-logger:javaagent:processResources NO-SOURCE +> Task :instrumentation:internal:internal-application-logger:javaagent:byteBuddyJava UP-TO-DATE +> Task :instrumentation:internal:internal-application-logger:javaagent:classes UP-TO-DATE +> Task :instrumentation:internal:internal-application-logger:javaagent:jar UP-TO-DATE +> Task :instrumentation:internal:internal-class-loader:compile-stub:compileJava UP-TO-DATE +> Task :instrumentation:internal:internal-class-loader:compile-stub:processResources NO-SOURCE +> Task :instrumentation:internal:internal-class-loader:compile-stub:classes UP-TO-DATE +> Task :instrumentation:internal:internal-class-loader:compile-stub:jar UP-TO-DATE +> Task :instrumentation:internal:internal-class-loader:javaagent:compileJava UP-TO-DATE +> Task :instrumentation:internal:internal-class-loader:javaagent:generateInstrumentationVersionFile UP-TO-DATE +> Task :instrumentation:internal:internal-class-loader:javaagent:processResources NO-SOURCE +> Task :instrumentation:internal:internal-class-loader:javaagent:byteBuddyJava UP-TO-DATE +> Task :instrumentation:internal:internal-class-loader:javaagent:classes UP-TO-DATE +> Task :instrumentation:internal:internal-class-loader:javaagent:jar UP-TO-DATE +> Task :instrumentation:internal:internal-class-loader:javaagent:shadedJar UP-TO-DATE +> Task :instrumentation:internal:internal-eclipse-osgi-3.6:javaagent:compileJava UP-TO-DATE +> Task :instrumentation:internal:internal-eclipse-osgi-3.6:javaagent:generateInstrumentationVersionFile UP-TO-DATE +> Task :instrumentation:internal:internal-eclipse-osgi-3.6:javaagent:processResources NO-SOURCE +> Task :instrumentation:internal:internal-eclipse-osgi-3.6:javaagent:byteBuddyJava UP-TO-DATE +> Task :instrumentation:internal:internal-eclipse-osgi-3.6:javaagent:classes UP-TO-DATE +> Task :instrumentation:internal:internal-eclipse-osgi-3.6:javaagent:jar UP-TO-DATE +> Task :instrumentation:internal:internal-lambda:javaagent:compileJava UP-TO-DATE +> Task :instrumentation:internal:internal-lambda:javaagent:generateInstrumentationVersionFile UP-TO-DATE +> Task :instrumentation:internal:internal-lambda:javaagent:processResources NO-SOURCE +> Task :instrumentation:internal:internal-lambda:javaagent:byteBuddyJava UP-TO-DATE +> Task :instrumentation:internal:internal-lambda:javaagent:classes UP-TO-DATE +> Task :instrumentation:internal:internal-lambda:javaagent:jar UP-TO-DATE +> Task :instrumentation:internal:internal-reflection:javaagent:compileJava UP-TO-DATE +> Task :instrumentation:internal:internal-reflection:javaagent:generateInstrumentationVersionFile UP-TO-DATE +> Task :instrumentation:internal:internal-reflection:javaagent:processResources NO-SOURCE +> Task :instrumentation:internal:internal-reflection:javaagent:byteBuddyJava UP-TO-DATE +> Task :instrumentation:internal:internal-reflection:javaagent:classes UP-TO-DATE +> Task :instrumentation:internal:internal-reflection:javaagent:jar UP-TO-DATE +> Task :instrumentation:internal:internal-url-class-loader:javaagent:compileJava UP-TO-DATE +> Task :instrumentation:internal:internal-url-class-loader:javaagent:generateInstrumentationVersionFile UP-TO-DATE +> Task :instrumentation:internal:internal-url-class-loader:javaagent:processResources NO-SOURCE +> Task :instrumentation:internal:internal-url-class-loader:javaagent:byteBuddyJava UP-TO-DATE +> Task :instrumentation:internal:internal-url-class-loader:javaagent:classes UP-TO-DATE +> Task :instrumentation:internal:internal-url-class-loader:javaagent:jar UP-TO-DATE +> Task :opentelemetry-api-shaded-for-instrumenting:compileJava NO-SOURCE +> Task :opentelemetry-api-shaded-for-instrumenting:processResources NO-SOURCE +> Task :opentelemetry-api-shaded-for-instrumenting:classes UP-TO-DATE +> Task :opentelemetry-api-shaded-for-instrumenting:shadowJar UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.0:javaagent:compileJava UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.0:javaagent:generateInstrumentationVersionFile UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.0:javaagent:processResources NO-SOURCE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.0:javaagent:byteBuddyJava UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.0:javaagent:classes UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.0:javaagent:jar UP-TO-DATE +> Task :opentelemetry-api-shaded-for-instrumenting:v1_10Shadow UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.4:javaagent:compileJava UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.4:javaagent:generateInstrumentationVersionFile UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.4:javaagent:processResources NO-SOURCE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.4:javaagent:byteBuddyJava UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.4:javaagent:classes UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.4:javaagent:jar UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.10:javaagent:compileJava UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.10:javaagent:generateInstrumentationVersionFile UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.10:javaagent:processResources NO-SOURCE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.10:javaagent:byteBuddyJava UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.10:javaagent:classes UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.10:javaagent:jar UP-TO-DATE +> Task :opentelemetry-api-shaded-for-instrumenting:v1_15Shadow UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.15:javaagent:compileJava UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.15:javaagent:generateInstrumentationVersionFile UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.15:javaagent:processResources NO-SOURCE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.15:javaagent:byteBuddyJava UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.15:javaagent:classes UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.15:javaagent:jar UP-TO-DATE +> Task :opentelemetry-api-shaded-for-instrumenting:v1_27Shadow UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.27:javaagent:compileJava UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.27:javaagent:generateInstrumentationVersionFile UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.27:javaagent:processResources NO-SOURCE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.27:javaagent:byteBuddyJava UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.27:javaagent:classes UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.27:javaagent:jar UP-TO-DATE +> Task :opentelemetry-api-shaded-for-instrumenting:v1_31Shadow UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.31:javaagent:compileJava UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.31:javaagent:generateInstrumentationVersionFile UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.31:javaagent:processResources NO-SOURCE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.31:javaagent:byteBuddyJava UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.31:javaagent:classes UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.31:javaagent:jar UP-TO-DATE +> Task :opentelemetry-api-shaded-for-instrumenting:v1_32Shadow UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.32:javaagent:compileJava UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.32:javaagent:generateInstrumentationVersionFile UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.32:javaagent:processResources NO-SOURCE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.32:javaagent:byteBuddyJava UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.32:javaagent:classes UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.32:javaagent:jar UP-TO-DATE +> Task :opentelemetry-api-shaded-for-instrumenting:v1_37Shadow UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.37:javaagent:compileJava UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.37:javaagent:generateInstrumentationVersionFile UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.37:javaagent:processResources NO-SOURCE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.37:javaagent:byteBuddyJava UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.37:javaagent:classes UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.37:javaagent:jar UP-TO-DATE +> Task :opentelemetry-api-shaded-for-instrumenting:v1_38Shadow UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.38:javaagent:compileJava UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.38:javaagent:generateInstrumentationVersionFile UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.38:javaagent:processResources NO-SOURCE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.38:javaagent:byteBuddyJava UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.38:javaagent:classes UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.38:javaagent:jar UP-TO-DATE +> Task :opentelemetry-api-shaded-for-instrumenting:v1_40Shadow UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.40:javaagent:compileJava UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.40:javaagent:generateInstrumentationVersionFile UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.40:javaagent:processResources NO-SOURCE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.40:javaagent:byteBuddyJava UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.40:javaagent:classes UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.40:javaagent:jar UP-TO-DATE +> Task :opentelemetry-api-shaded-for-instrumenting:v1_42Shadow UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.42:javaagent:compileJava UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.42:javaagent:generateInstrumentationVersionFile UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.42:javaagent:processResources NO-SOURCE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.42:javaagent:byteBuddyJava UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.42:javaagent:classes UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.42:javaagent:jar UP-TO-DATE +> Task :opentelemetry-api-shaded-for-instrumenting:v1_47Shadow UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.47:javaagent:compileJava UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.47:javaagent:generateInstrumentationVersionFile UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.47:javaagent:processResources NO-SOURCE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.47:javaagent:byteBuddyJava UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.47:javaagent:classes UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.47:javaagent:jar UP-TO-DATE +> Task :opentelemetry-api-shaded-for-instrumenting:v1_50Shadow UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.50:javaagent:compileJava UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.50:javaagent:generateInstrumentationVersionFile UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.50:javaagent:processResources NO-SOURCE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.50:javaagent:byteBuddyJava UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.50:javaagent:classes UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.50:javaagent:jar UP-TO-DATE +> Task :opentelemetry-api-shaded-for-instrumenting:v1_56Shadow UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.56:javaagent:compileJava UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.56:javaagent:generateInstrumentationVersionFile UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.56:javaagent:processResources NO-SOURCE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.56:javaagent:byteBuddyJava UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.56:javaagent:classes UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.56:javaagent:jar UP-TO-DATE +> Task :opentelemetry-api-shaded-for-instrumenting:v1_57Shadow UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.57:javaagent:compileJava UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.57:javaagent:generateInstrumentationVersionFile UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.57:javaagent:processResources NO-SOURCE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.57:javaagent:byteBuddyJava UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.57:javaagent:classes UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.57:javaagent:jar UP-TO-DATE +> Task :opentelemetry-api-shaded-for-instrumenting:v1_59Shadow UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.59:javaagent:compileJava UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.59:javaagent:generateInstrumentationVersionFile UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.59:javaagent:processResources NO-SOURCE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.59:javaagent:byteBuddyJava UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.59:javaagent:classes UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.59:javaagent:jar UP-TO-DATE +> Task :opentelemetry-api-shaded-for-instrumenting:v1_63Shadow UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.63:javaagent:compileJava UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.63:javaagent:generateInstrumentationVersionFile UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.63:javaagent:processResources NO-SOURCE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.63:javaagent:byteBuddyJava UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.63:javaagent:classes UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.63:javaagent:jar UP-TO-DATE +> Task :opentelemetry-api-shaded-for-instrumenting:v1_65Shadow UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.65:javaagent:compileJava UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.65:javaagent:generateInstrumentationVersionFile UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.65:javaagent:processResources NO-SOURCE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.65:javaagent:byteBuddyJava UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.65:javaagent:classes UP-TO-DATE +> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.65:javaagent:jar UP-TO-DATE +> Task :opentelemetry-instrumentation-api-shaded-for-instrumenting:compileJava NO-SOURCE +> Task :opentelemetry-instrumentation-api-shaded-for-instrumenting:processResources NO-SOURCE +> Task :opentelemetry-instrumentation-api-shaded-for-instrumenting:classes UP-TO-DATE +> Task :opentelemetry-instrumentation-api-shaded-for-instrumenting:shadowJar UP-TO-DATE +> Task :instrumentation:opentelemetry-instrumentation-api:opentelemetry-instrumentation-api-1.14:javaagent:compileJava UP-TO-DATE +> Task :instrumentation:opentelemetry-instrumentation-api:opentelemetry-instrumentation-api-1.14:javaagent:generateInstrumentationVersionFile UP-TO-DATE +> Task :instrumentation:opentelemetry-instrumentation-api:opentelemetry-instrumentation-api-1.14:javaagent:processResources NO-SOURCE +> Task :instrumentation:opentelemetry-instrumentation-api:opentelemetry-instrumentation-api-1.14:javaagent:byteBuddyJava UP-TO-DATE +> Task :instrumentation:opentelemetry-instrumentation-api:opentelemetry-instrumentation-api-1.14:javaagent:classes UP-TO-DATE +> Task :instrumentation:opentelemetry-instrumentation-api:opentelemetry-instrumentation-api-1.14:javaagent:jar UP-TO-DATE +> Task :javaagent:relocateBaseJavaagentLibs UP-TO-DATE +> Task :javaagent:baseJavaagentJar UP-TO-DATE +> Task :testing:dependencies-shaded-for-testing:extractShadowJar UP-TO-DATE +> Task :testing-common:classes UP-TO-DATE +> Task :testing-common:jar UP-TO-DATE +> Task :testing-common:with-shaded-dependencies:compileJava NO-SOURCE +> Task :testing-common:with-shaded-dependencies:processResources NO-SOURCE +> Task :testing-common:with-shaded-dependencies:classes UP-TO-DATE +> Task :testing-common:with-shaded-dependencies:jar UP-TO-DATE +> Task :testing:agent-for-testing:extractAgent UP-TO-DATE +> Task :testing:agent-for-testing:jar UP-TO-DATE +> Task :instrumentation:elasticsearch:elasticsearch-rest-5.0:javaagent:processTestResources NO-SOURCE +> Task :instrumentation:opensearch:opensearch-rest-common-1.0:javaagent:compileJava UP-TO-DATE +> Task :instrumentation:opensearch:opensearch-rest-common-1.0:javaagent:generateInstrumentationVersionFile UP-TO-DATE +> Task :instrumentation:opensearch:opensearch-rest-common-1.0:javaagent:processResources NO-SOURCE +> Task :instrumentation:opensearch:opensearch-rest-common-1.0:javaagent:byteBuddyJava UP-TO-DATE +> Task :instrumentation:opensearch:opensearch-rest-common-1.0:javaagent:classes UP-TO-DATE +> Task :instrumentation:opensearch:opensearch-rest-common-1.0:javaagent:jar UP-TO-DATE +> Task :instrumentation:opensearch:opensearch-rest-1.0:javaagent:compileJava UP-TO-DATE +> Task :instrumentation:opensearch:opensearch-rest-1.0:javaagent:generateInstrumentationVersionFile UP-TO-DATE +> Task :instrumentation:opensearch:opensearch-rest-1.0:javaagent:processResources NO-SOURCE +> Task :instrumentation:opensearch:opensearch-rest-1.0:javaagent:byteBuddyJava UP-TO-DATE +> Task :instrumentation:opensearch:opensearch-rest-1.0:javaagent:classes UP-TO-DATE +> Task :instrumentation:opensearch:opensearch-rest-1.0:javaagent:jar UP-TO-DATE +> Task :instrumentation:opensearch:opensearch-rest-3.0:javaagent:compileJava UP-TO-DATE +> Task :instrumentation:opensearch:opensearch-rest-3.0:javaagent:generateInstrumentationVersionFile UP-TO-DATE +> Task :instrumentation:opensearch:opensearch-rest-3.0:javaagent:processResources NO-SOURCE +> Task :instrumentation:opensearch:opensearch-rest-3.0:javaagent:byteBuddyJava UP-TO-DATE +> Task :instrumentation:opensearch:opensearch-rest-3.0:javaagent:classes UP-TO-DATE +> Task :instrumentation:opensearch:opensearch-rest-3.0:javaagent:jar UP-TO-DATE +> Task :instrumentation:opensearch:opensearch-rest-1.0:javaagent:shadowJar UP-TO-DATE +> Task :instrumentation:opensearch:opensearch-rest-common-1.0:testing:compileJava +> Task :instrumentation:opensearch:opensearch-rest-common-1.0:testing:processResources NO-SOURCE +> Task :instrumentation:opensearch:opensearch-rest-common-1.0:testing:classes +> Task :instrumentation:opensearch:opensearch-rest-common-1.0:testing:jar +> Task :instrumentation:opensearch:opensearch-rest-1.0:javaagent:compileTestJava UP-TO-DATE +> Task :instrumentation:opensearch:opensearch-rest-1.0:javaagent:processTestResources NO-SOURCE +> Task :instrumentation:opensearch:opensearch-rest-1.0:javaagent:testClasses UP-TO-DATE +> Task :instrumentation:elasticsearch:elasticsearch-rest-5.0:javaagent:compileTestJava +> Task :instrumentation:elasticsearch:elasticsearch-rest-5.0:javaagent:testClasses + +> Task :instrumentation:opensearch:opensearch-rest-1.0:javaagent:test +OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended +[otel.javaagent 2026-10-24 23:22:03:116 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.ExtensionClassLoader - Loaded extension jar file "/tmp/otel-extensions9495190058614835863/opentelemetry-agent-exporter-3.0.0-alpha-SNAPSHOT-all.jar" +[otel.javaagent 2026-10-24 23:22:03:130 +0000] [main] INFO io.opentelemetry.javaagent.tooling.VersionLogger - opentelemetry-javaagent - version: 3.0.0-SNAPSHOT +[otel.javaagent 2026-10-24 23:22:03:130 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.VersionLogger - Running on Java 25.0.4.1. JVM OpenJDK 64-Bit Server VM - Eclipse Adoptium - 25.0.4.1+1-LTS +[otel.javaagent 2026-10-24 23:22:03:130 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller - io.opentelemetry.javaagent.tooling.AgentInstaller loaded on io.opentelemetry.javaagent.bootstrap.AgentClassLoader@5010be6 +[otel.javaagent 2026-10-24 23:22:03:573 +0000] [main] DEBUG io.opentelemetry.javaagent.testing.exporter.OtlpInMemoryMetricExporter - Setting aggregation temporality to DELTA +[otel.javaagent 2026-10-24 23:22:03:766 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$java$util$concurrent$Callable$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$java$lang$Runnable$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$java$util$concurrent$Future$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$java$util$concurrent$ForkJoinTask$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext] +[otel.javaagent 2026-10-24 23:22:03:776 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$java$util$concurrent$ForkJoinTask$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$java$util$concurrent$Future$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$java$util$concurrent$Callable$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$java$lang$Runnable$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext] +[otel.javaagent 2026-10-24 23:22:03:783 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.ExposeAgentBootstrapListener - Adding module read from module java.base to unnamed module @1253e7cb +[otel.javaagent 2026-10-24 23:22:03:784 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask -- null +[otel.javaagent 2026-10-24 23:22:03:787 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.FutureTask -- null +[otel.javaagent 2026-10-24 23:22:03:789 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.Executors$RunnableAdapter -- null +[otel.javaagent 2026-10-24 23:22:03:791 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ThreadPoolExecutor$Worker -- null +[otel.javaagent 2026-10-24 23:22:03:842 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.lang.ApplicationShutdownHooks$1 -- null +[otel.javaagent 2026-10-24 23:22:03:888 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller - Loading extension instrumentation-loader [class io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader] +[otel.javaagent 2026-10-24 23:22:03:932 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.56 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_56.incubator.OpenTelemetryApiIncubatorInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:03:933 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.56 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_56.incubator.OpenTelemetryApiIncubatorInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:03:955 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.65 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_65.incubator.OpenTelemetryApiIncubatorInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:03:956 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.65 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_65.incubator.OpenTelemetryApiIncubatorInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:03:957 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.63 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_63.OpenTelemetryApiInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:03:957 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.63 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_63.OpenTelemetryApiInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:03:957 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.63 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_63.incubator.OpenTelemetryApiIncubatorInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:03:958 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.63 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_63.incubator.OpenTelemetryApiIncubatorInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:03:959 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.50 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_50.OpenTelemetryApiInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:03:959 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.50 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_50.OpenTelemetryApiInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:03:960 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.50 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_50.incubator.OpenTelemetryApiIncubatorInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:03:960 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.50 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_50.incubator.OpenTelemetryApiIncubatorInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:03:961 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.47 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_47.incubator.OpenTelemetryApiIncubatorInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:03:961 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.47 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_47.incubator.OpenTelemetryApiIncubatorInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:03:962 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.42 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_42.OpenTelemetryApiInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:03:962 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.42 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_42.incubator.OpenTelemetryApiIncubatorInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:03:963 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.40 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.OpenTelemetryApiIncubatorInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:03:963 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.27 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_27.OpenTelemetryApiInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:03:964 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.42 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_42.OpenTelemetryApiInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:03:964 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.42 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_42.incubator.OpenTelemetryApiIncubatorInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:03:964 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.40 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.OpenTelemetryApiIncubatorInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:03:964 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.27 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_27.OpenTelemetryApiInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:03:965 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.38 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_38.OpenTelemetryApiInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:03:965 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.38 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_38.OpenTelemetryApiInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:03:965 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.38 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_38.incubator.OpenTelemetryApiIncubatorInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:03:965 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.38 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_38.incubator.OpenTelemetryApiIncubatorInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:03:966 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.32 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_32.OpenTelemetryApiInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:03:966 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.32 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_32.OpenTelemetryApiInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:03:967 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.32 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_32.incubator.OpenTelemetryApiIncubatorInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:03:967 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.32 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_32.incubator.OpenTelemetryApiIncubatorInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:03:968 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.31 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_31.incubator.OpenTelemetryApiInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:03:968 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.31 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_31.incubator.OpenTelemetryApiInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:03:968 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.37 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_37.incubator.OpenTelemetryApiInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:03:969 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.37 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_37.incubator.OpenTelemetryApiInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:03:969 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.15 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_15.OpenTelemetryApiInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:03:970 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.15 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_15.OpenTelemetryApiInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:03:970 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.10 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.OpenTelemetryApiInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:03:972 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.10 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.OpenTelemetryApiInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:03:972 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.4 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_4.OpenTelemetryApiInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:03:972 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.4 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_4.OpenTelemetryApiInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:03:973 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.59 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_59.OpenTelemetryApiInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:03:973 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.59 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_59.OpenTelemetryApiInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:03:974 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-instrumentation-api-1.14 [class io.opentelemetry.javaagent.instrumentation.instrumentationapi.v1_14.InstrumentationApiInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:03:974 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-instrumentation-api-1.14 [class io.opentelemetry.javaagent.instrumentation.instrumentationapi.v1_14.InstrumentationApiInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:03:975 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.0 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_0.OpenTelemetryApiInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:03:976 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.0 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_0.OpenTelemetryApiInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:03:977 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.57 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_57.OpenTelemetryApiInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:03:978 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.57 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_57.OpenTelemetryApiInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:03:978 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation executors [class io.opentelemetry.javaagent.instrumentation.executors.ExecutorsInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:03:978 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation executors [class io.opentelemetry.javaagent.instrumentation.executors.ExecutorsInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:04:022 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation internal-application-logger [class io.opentelemetry.javaagent.instrumentation.internal.application.logger.ApplicationLoggingInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:04:023 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation internal-class-loader [class io.opentelemetry.javaagent.instrumentation.internal.classloader.ClassLoaderInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:04:023 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation internal-application-logger is disabled +[otel.javaagent 2026-10-24 23:22:04:024 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation internal-class-loader [class io.opentelemetry.javaagent.instrumentation.internal.classloader.ClassLoaderInstrumentationModule] injects helper classes +[otel.javaagent 2026-10-24 23:22:04:026 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation internal-eclipse-osgi-3.6 [class io.opentelemetry.javaagent.instrumentation.internal.eclipse.osgi.v3_6.EclipseOsgiInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:04:027 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation internal-eclipse-osgi-3.6 [class io.opentelemetry.javaagent.instrumentation.internal.eclipse.osgi.v3_6.EclipseOsgiInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:04:027 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation internal-lambda [class io.opentelemetry.javaagent.instrumentation.internal.lambda.LambdaInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:04:027 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation internal-lambda [class io.opentelemetry.javaagent.instrumentation.internal.lambda.LambdaInstrumentationModule] injects helper classes +[otel.javaagent 2026-10-24 23:22:04:028 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation internal-reflection [class io.opentelemetry.javaagent.instrumentation.internal.reflection.ReflectionInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:04:029 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation internal-reflection [class io.opentelemetry.javaagent.instrumentation.internal.reflection.ReflectionInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:04:030 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation internal-url-class-loader [class io.opentelemetry.javaagent.instrumentation.internal.urlclassloader.UrlClassLoaderInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:04:030 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation internal-url-class-loader [class io.opentelemetry.javaagent.instrumentation.internal.urlclassloader.UrlClassLoaderInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:04:030 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opensearch-rest-1.0 [class io.opentelemetry.javaagent.instrumentation.opensearch.rest.v1_0.OpenSearchRestInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:04:030 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opensearch-rest-1.0 [class io.opentelemetry.javaagent.instrumentation.opensearch.rest.v1_0.OpenSearchRestInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:04:044 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opensearch-rest-3.0 [class io.opentelemetry.javaagent.instrumentation.opensearch.rest.v3_0.OpenSearchRestInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:04:050 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opensearch-rest-3.0 [class io.opentelemetry.javaagent.instrumentation.opensearch.rest.v3_0.OpenSearchRestInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:04:060 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation apache-httpclient-4.0 [class io.opentelemetry.javaagent.instrumentation.apachehttpclient.v4_0.ApacheHttpClientInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:04:060 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation apache-httpclient-4.0 [class io.opentelemetry.javaagent.instrumentation.apachehttpclient.v4_0.ApacheHttpClientInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:04:061 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation apache-httpasyncclient-4.1 [class io.opentelemetry.javaagent.instrumentation.apachehttpasyncclient.v4_1.ApacheHttpAsyncClientInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:04:061 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation apache-httpasyncclient-4.1 [class io.opentelemetry.javaagent.instrumentation.apachehttpasyncclient.v4_1.ApacheHttpAsyncClientInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:04:062 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation deny-unsafe [class io.opentelemetry.javaagent.testing.instrumentation.DenyUnsafeInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:04:063 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-instrumentation-annotations-1.16 [class io.opentelemetry.javaagent.instrumentation.instrumentationannotations.v1_16.AnnotationInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:04:063 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation deny-unsafe is disabled +[otel.javaagent 2026-10-24 23:22:04:063 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-instrumentation-annotations-1.16 [class io.opentelemetry.javaagent.instrumentation.instrumentationannotations.v1_16.AnnotationInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:04:071 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Installed 37 instrumentation(s) +[otel.javaagent 2026-10-24 23:22:04:072 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller - Loading extension test [class io.opentelemetry.javaagent.testing.bytebuddy.TestAgentExtension] +[otel.javaagent 2026-10-24 23:22:04:087 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller - Installed 2 extension(s) +[otel.javaagent 2026-10-24 23:22:04:096 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.javaagent.shaded.io.opentelemetry.context.StrictContextStorage$PendingScopes -- null +[otel.javaagent 2026-10-24 23:22:04:099 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.javaagent.shaded.io.opentelemetry.context.internal.shaded.WeakConcurrentMap -- null +[otel.javaagent 2026-10-24 23:22:04:100 +0000] [main] DEBUG net.bytebuddy.agent.builder.AgentBuilderUtil - Could not decompose matcher failSafe(try(AnnotationInstrumentationModule#WithSpanInstrumentation(declaresMethods(whereOne((isMethod() and declaresAnnotations(whereOne(ofAnnotationType(name(equals(io.opentelemetry.instrumentation.annotations.WithSpan)))))))))) or false) +[otel.javaagent 2026-10-24 23:22:04:100 +0000] [main] DEBUG net.bytebuddy.agent.builder.AgentBuilderUtil - Could not decompose matcher failSafe(try(AnnotationInstrumentationModule#AddingSpanAttributesInstrumentation(declaresMethods(whereOne((isMethod() and declaresAnnotations(whereOne(ofAnnotationType(name(equals(io.opentelemetry.instrumentation.annotations.AddingSpanAttributes))))) and not(declaresAnnotations(whereOne(ofAnnotationType(name(equals(io.opentelemetry.instrumentation.annotations.WithSpan))))))))))) or false) +[otel.javaagent 2026-10-24 23:22:04:120 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: internal-class-loader [class io.opentelemetry.javaagent.instrumentation.internal.classloader.ClassLoaderInstrumentationModule] on io.opentelemetry.javaagent.bootstrap.AgentClassLoader$BootstrapClassLoaderProxy@377dca04 +[otel.javaagent 2026-10-24 23:22:04:125 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: internal-url-class-loader [class io.opentelemetry.javaagent.instrumentation.internal.urlclassloader.UrlClassLoaderInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@7d2a6eac +[otel.javaagent 2026-10-24 23:22:04:226 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.net.URLClassLoader -- null +[otel.javaagent 2026-10-24 23:22:04:245 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed jdk.internal.loader.BuiltinClassLoader -- null +[otel.javaagent 2026-10-24 23:22:04:275 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.lang.ClassLoader -- null +[otel.javaagent 2026-10-24 23:22:04:310 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: executors [class io.opentelemetry.javaagent.instrumentation.executors.ExecutorsInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@34dc85a +[otel.javaagent 2026-10-24 23:22:04:315 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.RunnableScheduledFuture +[otel.javaagent 2026-10-24 23:22:04:316 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ScheduledFuture +[otel.javaagent 2026-10-24 23:22:04:316 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.RunnableFuture +[otel.javaagent 2026-10-24 23:22:04:324 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.Future +[otel.javaagent 2026-10-24 23:22:04:326 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for java.util.concurrent.ScheduledExecutorService +[otel.javaagent 2026-10-24 23:22:04:326 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for java.util.concurrent.ScheduledExecutorService +[otel.javaagent 2026-10-24 23:22:04:326 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for java.util.concurrent.ExecutorService +[otel.javaagent 2026-10-24 23:22:04:326 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for java.util.concurrent.ExecutorService +[otel.javaagent 2026-10-24 23:22:04:326 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for java.util.concurrent.Executor +[otel.javaagent 2026-10-24 23:22:04:327 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for java.util.concurrent.Executor +[otel.javaagent 2026-10-24 23:22:04:354 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: internal-lambda [class io.opentelemetry.javaagent.instrumentation.internal.lambda.LambdaInstrumentationModule] on io.opentelemetry.javaagent.bootstrap.AgentClassLoader$BootstrapClassLoaderProxy@377dca04 +[otel.javaagent 2026-10-24 23:22:04:358 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: internal-reflection [class io.opentelemetry.javaagent.instrumentation.internal.reflection.ReflectionInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@773e2eb5 +[otel.javaagent 2026-10-24 23:22:04:370 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$java$util$concurrent$Callable$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$java$lang$Runnable$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$java$util$concurrent$Future$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$java$util$concurrent$ForkJoinTask$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext] +[otel.javaagent 2026-10-24 23:22:04:374 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$java$util$concurrent$ForkJoinTask$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$java$util$concurrent$Future$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$java$util$concurrent$Callable$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$java$lang$Runnable$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext] +[otel.javaagent 2026-10-24 23:22:04:383 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ThreadPoolExecutor$Worker -- null +[otel.javaagent 2026-10-24 23:22:04:389 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.Executors$RunnableAdapter -- null +[otel.javaagent 2026-10-24 23:22:04:392 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.Callable -- null +[otel.javaagent 2026-10-24 23:22:04:400 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask -- null +[otel.javaagent 2026-10-24 23:22:04:407 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.FutureTask -- null +[otel.javaagent 2026-10-24 23:22:04:408 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.RunnableScheduledFuture +[otel.javaagent 2026-10-24 23:22:04:411 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.RunnableScheduledFuture -- null +[otel.javaagent 2026-10-24 23:22:04:411 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.RunnableFuture +[otel.javaagent 2026-10-24 23:22:04:414 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.RunnableFuture -- null +[otel.javaagent 2026-10-24 23:22:04:491 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ScheduledThreadPoolExecutor -- null +[otel.javaagent 2026-10-24 23:22:04:559 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ThreadPoolExecutor -- null +[otel.javaagent 2026-10-24 23:22:04:566 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinWorkerThread -- null +[otel.javaagent 2026-10-24 23:22:04:576 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask -- null +[otel.javaagent 2026-10-24 23:22:04:578 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedRunnable -- null +[otel.javaagent 2026-10-24 23:22:04:581 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$AdaptedRunnable +[otel.javaagent 2026-10-24 23:22:04:590 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedRunnable -- null +[otel.javaagent 2026-10-24 23:22:04:593 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedCallable -- null +[otel.javaagent 2026-10-24 23:22:04:599 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedCallable -- null +[otel.javaagent 2026-10-24 23:22:04:600 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedRunnableAction -- null +[otel.javaagent 2026-10-24 23:22:04:601 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$AdaptedRunnableAction +[otel.javaagent 2026-10-24 23:22:04:608 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedRunnableAction -- null +[otel.javaagent 2026-10-24 23:22:04:610 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedInterruptibleRunnable -- null +[otel.javaagent 2026-10-24 23:22:04:610 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$AdaptedInterruptibleRunnable +[otel.javaagent 2026-10-24 23:22:04:617 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedInterruptibleRunnable -- null +[otel.javaagent 2026-10-24 23:22:04:618 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$InterruptibleTask +[otel.javaagent 2026-10-24 23:22:04:626 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$InterruptibleTask -- null +[otel.javaagent 2026-10-24 23:22:04:629 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$AdaptedInterruptibleCallable +[otel.javaagent 2026-10-24 23:22:04:630 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedInterruptibleCallable -- null +[otel.javaagent 2026-10-24 23:22:04:642 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedInterruptibleCallable -- null +[otel.javaagent 2026-10-24 23:22:04:650 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.DelayScheduler -- null +[otel.javaagent 2026-10-24 23:22:04:695 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinPool -- null +[otel.javaagent 2026-10-24 23:22:04:696 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$RunnableExecuteAction -- null +[otel.javaagent 2026-10-24 23:22:04:701 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$RunnableExecuteAction -- null +[otel.javaagent 2026-10-24 23:22:04:702 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.DelayScheduler$ScheduledForkJoinTask -- null +[otel.javaagent 2026-10-24 23:22:04:703 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.DelayScheduler$ScheduledForkJoinTask +[otel.javaagent 2026-10-24 23:22:04:707 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.DelayScheduler$ScheduledForkJoinTask -- null +[otel.javaagent 2026-10-24 23:22:04:708 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$CallableWithTimeout -- null +[otel.javaagent 2026-10-24 23:22:04:709 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$CallableWithTimeout +[otel.javaagent 2026-10-24 23:22:04:712 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$CallableWithTimeout -- null +[otel.javaagent 2026-10-24 23:22:04:735 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.AbstractExecutorService -- null +[otel.javaagent 2026-10-24 23:22:04:737 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.instrumentation.internal.lambda.LambdaTransformerHelper] +[otel.javaagent 2026-10-24 23:22:04:746 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.lang.invoke.InnerClassLambdaMetafactory -- null +[otel.javaagent 2026-10-24 23:22:04:759 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed jdk.internal.reflect.Reflection -- null +[otel.javaagent 2026-10-24 23:22:04:765 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.lang.VirtualThread -- null +[otel.javaagent 2026-10-24 23:22:04:768 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed jdk.internal.misc.CarrierThread -- null +[otel.javaagent 2026-10-24 23:22:04:775 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.lang.Class -- null +[otel.javaagent 2026-10-24 23:22:04:823 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$InterruptibleTask +[otel.javaagent 2026-10-24 23:22:04:830 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$CallableWithTimeout +[otel.javaagent 2026-10-24 23:22:04:855 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$CallableWithTimeout -- null +[otel.javaagent 2026-10-24 23:22:04:855 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.DelayScheduler$ScheduledForkJoinTask +[otel.javaagent 2026-10-24 23:22:04:881 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.DelayScheduler$ScheduledForkJoinTask -- null +[otel.javaagent 2026-10-24 23:22:04:908 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$RunnableExecuteAction -- null +[otel.javaagent 2026-10-24 23:22:04:911 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$AdaptedInterruptibleCallable +[otel.javaagent 2026-10-24 23:22:04:923 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedInterruptibleCallable -- null +[otel.javaagent 2026-10-24 23:22:04:924 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$AdaptedInterruptibleRunnable +[otel.javaagent 2026-10-24 23:22:04:935 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$InterruptibleTask +[otel.javaagent 2026-10-24 23:22:04:936 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedInterruptibleRunnable -- null +[otel.javaagent 2026-10-24 23:22:04:946 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$InterruptibleTask -- null +[otel.javaagent 2026-10-24 23:22:04:948 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$AdaptedRunnableAction +[otel.javaagent 2026-10-24 23:22:04:962 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedRunnableAction -- null +[otel.javaagent 2026-10-24 23:22:04:976 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedCallable -- null +[otel.javaagent 2026-10-24 23:22:04:980 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$AdaptedRunnable +[otel.javaagent 2026-10-24 23:22:04:990 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedRunnable -- null +[otel.javaagent 2026-10-24 23:22:05:044 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: internal-class-loader [class io.opentelemetry.javaagent.instrumentation.internal.classloader.ClassLoaderInstrumentationModule] on jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc +[otel.javaagent 2026-10-24 23:22:05:051 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed worker.org.gradle.internal.classloader.FilteringClassLoader -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc +[otel.javaagent 2026-10-24 23:22:05:067 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed worker.org.gradle.internal.classloader.FilteringClassLoader$RetrieveSystemPackagesClassLoader -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + +Gradle Test Executor 26 STANDARD_ERROR + [otel.javaagent 2026-10-24 23:22:05:744 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: executors [class io.opentelemetry.javaagent.instrumentation.executors.ExecutorsInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@110e9982 + [otel.javaagent 2026-10-24 23:22:05:780 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.junit.platform.commons.util.ReflectionUtils$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:05:791 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.junit.platform.commons.function.Try$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:05:827 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opensearch-rest-1.0 [class io.opentelemetry.javaagent.instrumentation.opensearch.rest.v1_0.OpenSearchRestInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@1b24ea2a + [otel.javaagent 2026-10-24 23:22:05:828 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$org$opensearch$client$RestClient$io$opentelemetry$javaagent$shaded$instrumentation$api$incubator$semconv$db$internal$DbServerTarget] + [otel.javaagent 2026-10-24 23:22:05:831 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$org$opensearch$client$RestClient$io$opentelemetry$javaagent$shaded$instrumentation$api$incubator$semconv$db$internal$DbServerTarget] + [otel.javaagent 2026-10-24 23:22:05:846 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$org$opensearch$client$RestClient$io$opentelemetry$javaagent$shaded$instrumentation$api$incubator$semconv$db$internal$DbServerTarget] + [otel.javaagent 2026-10-24 23:22:05:847 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$org$opensearch$client$RestClient$io$opentelemetry$javaagent$shaded$instrumentation$api$incubator$semconv$db$internal$DbServerTarget] + [otel.javaagent 2026-10-24 23:22:05:859 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.opensearch.client.RestClient -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:06:030 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:06:090 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.junit.platform.commons.util.ReflectionUtils$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:06:223 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed ch.qos.logback.core.hook.ShutdownHook -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:06:328 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.56 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_56.incubator.OpenTelemetryApiIncubatorInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@643f6179 + [otel.javaagent 2026-10-24 23:22:06:365 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.65 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_65.incubator.OpenTelemetryApiIncubatorInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@a3b858f + [otel.javaagent 2026-10-24 23:22:06:374 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.63 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_63.OpenTelemetryApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@64b73e0a + [otel.javaagent 2026-10-24 23:22:06:390 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.27 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_27.OpenTelemetryApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@3ef2b8e5 + [otel.javaagent 2026-10-24 23:22:06:408 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.38 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_38.incubator.OpenTelemetryApiIncubatorInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@1d226f27 + [otel.javaagent 2026-10-24 23:22:06:416 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.32 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_32.OpenTelemetryApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@2c0798bd + [otel.javaagent 2026-10-24 23:22:06:429 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.15 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_15.OpenTelemetryApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@542c65d9 + [otel.javaagent 2026-10-24 23:22:06:442 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.10 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.OpenTelemetryApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@23f5008a + [otel.javaagent 2026-10-24 23:22:06:448 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.4 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_4.OpenTelemetryApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@7bbdb220 + [otel.javaagent 2026-10-24 23:22:06:449 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.59 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_59.OpenTelemetryApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@77bb916f + [otel.javaagent 2026-10-24 23:22:06:459 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.0 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_0.OpenTelemetryApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@6dcf7b6a + [otel.javaagent 2026-10-24 23:22:06:460 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.57 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_57.OpenTelemetryApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@5aa6da2 + [otel.javaagent 2026-10-24 23:22:06:474 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.api.GlobalOpenTelemetry -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + +OpenSearchRestTest STANDARD_ERROR + [otel.javaagent 2026-10-24 23:22:06:528 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for org.testcontainers.utility.LazyFuture + [otel.javaagent 2026-10-24 23:22:06:530 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for org.testcontainers.images.RemoteDockerImage + [otel.javaagent 2026-10-24 23:22:06:532 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.images.RemoteDockerImage -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:06:565 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture + [otel.javaagent 2026-10-24 23:22:06:572 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture -- null + [otel.javaagent 2026-10-24 23:22:06:576 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$Completion + [otel.javaagent 2026-10-24 23:22:06:585 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$Completion -- null + [otel.javaagent 2026-10-24 23:22:06:590 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$BiCompletion -- null + [otel.javaagent 2026-10-24 23:22:06:591 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniCompletion + [otel.javaagent 2026-10-24 23:22:06:595 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniCompletion -- null + [otel.javaagent 2026-10-24 23:22:06:597 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$CoCompletion + [otel.javaagent 2026-10-24 23:22:06:603 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$Signaller + [otel.javaagent 2026-10-24 23:22:06:603 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$CoCompletion -- null + [otel.javaagent 2026-10-24 23:22:06:608 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$Signaller -- null + [otel.javaagent 2026-10-24 23:22:06:609 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniApply + [otel.javaagent 2026-10-24 23:22:06:614 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniAccept + [otel.javaagent 2026-10-24 23:22:06:614 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniApply -- null + [otel.javaagent 2026-10-24 23:22:06:620 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniAccept -- null + [otel.javaagent 2026-10-24 23:22:06:621 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniRun + [otel.javaagent 2026-10-24 23:22:06:627 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniRun -- null + [otel.javaagent 2026-10-24 23:22:06:631 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$BiAccept + [otel.javaagent 2026-10-24 23:22:06:633 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$BiApply -- null + [otel.javaagent 2026-10-24 23:22:06:635 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$BiAccept -- null + [otel.javaagent 2026-10-24 23:22:06:636 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$BiRun + [otel.javaagent 2026-10-24 23:22:06:640 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$BiRun -- null + [otel.javaagent 2026-10-24 23:22:06:642 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$OrApply + [otel.javaagent 2026-10-24 23:22:06:646 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$OrApply -- null + [otel.javaagent 2026-10-24 23:22:06:647 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$OrAccept + [otel.javaagent 2026-10-24 23:22:06:652 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$OrAccept -- null + [otel.javaagent 2026-10-24 23:22:06:653 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$OrRun + [otel.javaagent 2026-10-24 23:22:06:659 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$OrRun -- null + [otel.javaagent 2026-10-24 23:22:06:660 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniCompose + [otel.javaagent 2026-10-24 23:22:06:664 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniCompose -- null + [otel.javaagent 2026-10-24 23:22:06:665 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniRelay + [otel.javaagent 2026-10-24 23:22:06:668 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniRelay -- null + [otel.javaagent 2026-10-24 23:22:06:670 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniWhenComplete + [otel.javaagent 2026-10-24 23:22:06:675 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniHandle + [otel.javaagent 2026-10-24 23:22:06:676 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniWhenComplete -- null + [otel.javaagent 2026-10-24 23:22:06:680 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniHandle -- null + [otel.javaagent 2026-10-24 23:22:06:681 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniExceptionally + [otel.javaagent 2026-10-24 23:22:06:684 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniExceptionally -- null + [otel.javaagent 2026-10-24 23:22:06:685 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniComposeExceptionally + [otel.javaagent 2026-10-24 23:22:06:689 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniComposeExceptionally -- null + [otel.javaagent 2026-10-24 23:22:06:690 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$MinimalStage + [otel.javaagent 2026-10-24 23:22:06:691 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$MinimalStage -- null + [otel.javaagent 2026-10-24 23:22:06:696 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$BiRelay -- null + [otel.javaagent 2026-10-24 23:22:06:697 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$AnyOf + [otel.javaagent 2026-10-24 23:22:06:706 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$AnyOf -- null + [otel.javaagent 2026-10-24 23:22:06:961 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.RecursiveTask + [otel.javaagent 2026-10-24 23:22:06:966 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.RecursiveTask -- null + [otel.javaagent 2026-10-24 23:22:06:995 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.shaded.com.fasterxml.jackson.databind.util.internal.PrivateMaxEntriesMap$AddTask -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:07:154 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.dockerclient.DockerClientProviderStrategy$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:07:174 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for java.util.concurrent.Executors$AutoShutdownDelegatedExecutorService + [otel.javaagent 2026-10-24 23:22:07:174 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for java.util.concurrent.Executors$AutoShutdownDelegatedExecutorService + [otel.javaagent 2026-10-24 23:22:07:192 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.Executors$DelegatedExecutorService -- null + [otel.javaagent 2026-10-24 23:22:07:195 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.Executors$AutoShutdownDelegatedExecutorService$$Lambda -- null + [otel.javaagent 2026-10-24 23:22:07:199 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.shaded.org.awaitility.core.ConditionAwaiter$ConditionPoller -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:07:686 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for com.github.dockerjava.zerodep.shaded.org.apache.hc.core5.concurrent.BasicFuture + [otel.javaagent 2026-10-24 23:22:07:689 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed com.github.dockerjava.zerodep.shaded.org.apache.hc.core5.concurrent.BasicFuture -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:07:690 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for com.github.dockerjava.zerodep.shaded.org.apache.hc.core5.pool.StrictConnPool$1 + [otel.javaagent 2026-10-24 23:22:07:692 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed com.github.dockerjava.zerodep.shaded.org.apache.hc.core5.pool.StrictConnPool$1 -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:08:218 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.containers.GenericContainer$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:08:800 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.containers.GenericContainer$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:08:810 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for org.testcontainers.shaded.org.awaitility.core.SameThreadExecutorService + [otel.javaagent 2026-10-24 23:22:08:810 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for org.testcontainers.shaded.org.awaitility.core.SameThreadExecutorService + [otel.javaagent 2026-10-24 23:22:09:054 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.shaded.com.github.dockerjava.core.DefaultInvocationBuilder$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:09:076 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.utility.RyukResourceReaper$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:09:084 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.utility.RyukResourceReaper$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:09:327 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.containers.wait.strategy.HttpWaitStrategy$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:09:329 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.rnorth.ducttape.unreliables.Unreliables$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:09:333 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.containers.wait.strategy.HttpWaitStrategy$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:24:299 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: apache-httpasyncclient-4.1 [class io.opentelemetry.javaagent.instrumentation.apachehttpasyncclient.v4_1.ApacheHttpAsyncClientInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@35277c6c + [otel.javaagent 2026-10-24 23:22:24:301 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.nio.client.HttpAsyncClient -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:24:305 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.impl.nio.client.CloseableHttpAsyncClient -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:24:312 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.nio.client.HttpPipeliningClient -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:24:314 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.impl.nio.client.CloseableHttpPipeliningClient -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:24:316 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.impl.nio.client.CloseableHttpAsyncClientBase -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:24:320 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.impl.nio.client.InternalHttpAsyncClient -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:24:342 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:24:368 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.impl.nio.client.CloseableHttpAsyncClientBase$1 -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + +OpenSearchRestTest > recordsFailureResponseStatus() STANDARD_ERROR + [otel.javaagent 2026-10-24 23:22:24:420 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for org.apache.http.concurrent.BasicFuture + [otel.javaagent 2026-10-24 23:22:24:420 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.concurrent.BasicFuture -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:24:441 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for org.apache.http.nio.pool.AbstractNIOConnPool$3 + [otel.javaagent 2026-10-24 23:22:24:442 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager$2 + [otel.javaagent 2026-10-24 23:22:24:442 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for org.apache.http.impl.nio.client.FutureWrapper + [otel.javaagent 2026-10-24 23:22:24:443 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.nio.pool.AbstractNIOConnPool$3 -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:24:443 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager$2 -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:24:443 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.impl.nio.client.FutureWrapper -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:24:528 +0000] [I/O dispatcher 1] INFO io.opentelemetry.exporter.logging.LoggingSpanExporter - 'HEAD' : a0c6408c729048ab206e5a2aa6793d19 3cba50aa6bb6a51c CLIENT [tracer: io.opentelemetry.apache-httpasyncclient-4.1:3.0.0-alpha-SNAPSHOT] AttributesMap{data={url.full=https://localhost:32862/missing-index, server.address=localhost, error.type=404, http.response.status_code=404, http.request.method=HEAD, server.port=32862, network.protocol.version=1.1, peer.service=test-peer-service}, capacity=128, totalAddedValues=8} + [otel.javaagent 2026-10-24 23:22:24:529 +0000] [I/O dispatcher 1] INFO io.opentelemetry.javaagent.testing.exporter.OtlpInMemorySpanExporter - Exporting span SpanData{spanContext=ImmutableSpanContext{traceId=a0c6408c729048ab206e5a2aa6793d19, spanId=3cba50aa6bb6a51c, traceFlags=03, traceState=ArrayBasedTraceState{entries=[]}, remote=false, valid=true}, parentSpanContext=ImmutableSpanContext{traceId=a0c6408c729048ab206e5a2aa6793d19, spanId=e659d0aa382a0686, traceFlags=03, traceState=ArrayBasedTraceState{entries=[]}, remote=false, valid=true}, resource=Resource{schemaUrl=https://opentelemetry.io/schemas/1.40.0, entities=[SdkEntity{type=service.instance, id={service.instance.id="28f21fc4-7a94-411f-b38e-1d5c5dfafb9a"}, description={}, schemaUrl=https://opentelemetry.io/schemas/1.40.0}], attributes={service.instance.id="28f21fc4-7a94-411f-b38e-1d5c5dfafb9a", service.name="unknown_service:java", telemetry.distro.name="opentelemetry-javaagent", telemetry.distro.version="3.0.0-SNAPSHOT", telemetry.sdk.language="java", telemetry.sdk.name="opentelemetry", telemetry.sdk.version="1.67.0"}}, instrumentationScopeInfo=InstrumentationScopeInfo{name=io.opentelemetry.apache-httpasyncclient-4.1, version=3.0.0-alpha-SNAPSHOT, schemaUrl=https://opentelemetry.io/schemas/1.41.0, attributes={}}, name=HEAD, kind=CLIENT, startEpochNanos=1792884144432548818, endEpochNanos=1792884144527488445, attributes=AttributesMap{data={url.full=https://localhost:32862/missing-index, server.address=localhost, error.type=404, http.response.status_code=404, http.request.method=HEAD, server.port=32862, network.protocol.version=1.1, peer.service=test-peer-service}, capacity=128, totalAddedValues=8}, totalAttributeCount=8, events=[], totalRecordedEvents=0, links=[], totalRecordedLinks=0, status=ImmutableStatusData{statusCode=ERROR, description=}, hasEnded=true} + [otel.javaagent 2026-10-24 23:22:24:532 +0000] [Test worker] INFO io.opentelemetry.exporter.logging.LoggingSpanExporter - 'HEAD localhost:32862' : a0c6408c729048ab206e5a2aa6793d19 e659d0aa382a0686 CLIENT [tracer: io.opentelemetry.opensearch-rest-1.0:3.0.0-alpha-SNAPSHOT] AttributesMap{data={server.address=localhost, db.system.name=opensearch, error.type=404, db.operation.name=HEAD, db.response.status_code=404, server.port=32862}, capacity=128, totalAddedValues=6} + [otel.javaagent 2026-10-24 23:22:24:546 +0000] [Test worker] INFO io.opentelemetry.javaagent.testing.exporter.OtlpInMemorySpanExporter - Exporting span SpanData{spanContext=ImmutableSpanContext{traceId=a0c6408c729048ab206e5a2aa6793d19, spanId=e659d0aa382a0686, traceFlags=03, traceState=ArrayBasedTraceState{entries=[]}, remote=false, valid=true}, parentSpanContext=ImmutableSpanContext{traceId=00000000000000000000000000000000, spanId=0000000000000000, traceFlags=00, traceState=ArrayBasedTraceState{entries=[]}, remote=false, valid=false}, resource=Resource{schemaUrl=https://opentelemetry.io/schemas/1.40.0, entities=[SdkEntity{type=service.instance, id={service.instance.id="28f21fc4-7a94-411f-b38e-1d5c5dfafb9a"}, description={}, schemaUrl=https://opentelemetry.io/schemas/1.40.0}], attributes={service.instance.id="28f21fc4-7a94-411f-b38e-1d5c5dfafb9a", service.name="unknown_service:java", telemetry.distro.name="opentelemetry-javaagent", telemetry.distro.version="3.0.0-SNAPSHOT", telemetry.sdk.language="java", telemetry.sdk.name="opentelemetry", telemetry.sdk.version="1.67.0"}}, instrumentationScopeInfo=InstrumentationScopeInfo{name=io.opentelemetry.opensearch-rest-1.0, version=3.0.0-alpha-SNAPSHOT, schemaUrl=https://opentelemetry.io/schemas/1.44.0, attributes={}}, name=HEAD localhost:32862, kind=CLIENT, startEpochNanos=1792884144410954272, endEpochNanos=1792884144532496876, attributes=AttributesMap{data={server.address=localhost, db.system.name=opensearch, error.type=404, db.operation.name=HEAD, db.response.status_code=404, server.port=32862}, capacity=128, totalAddedValues=6}, totalAttributeCount=6, events=[], totalRecordedEvents=0, links=[], totalRecordedLinks=0, status=ImmutableStatusData{statusCode=UNSET, description=}, hasEnded=true} + [otel.javaagent 2026-10-24 23:22:24:605 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.instrumentation.testing.InstrumentationTestRunner$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:24:716 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.awaitility.core.ConditionAwaiter$ConditionPoller -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + +> Task :instrumentation:elasticsearch:elasticsearch-rest-5.0:javaagent:test +OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended +[otel.javaagent 2026-10-24 23:22:03:254 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.ExtensionClassLoader - Loaded extension jar file "/tmp/otel-extensions563078951044242000/opentelemetry-agent-exporter-3.0.0-alpha-SNAPSHOT-all.jar" +[otel.javaagent 2026-10-24 23:22:03:277 +0000] [main] INFO io.opentelemetry.javaagent.tooling.VersionLogger - opentelemetry-javaagent - version: 3.0.0-SNAPSHOT +[otel.javaagent 2026-10-24 23:22:03:278 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.VersionLogger - Running on Java 25.0.4.1. JVM OpenJDK 64-Bit Server VM - Eclipse Adoptium - 25.0.4.1+1-LTS +[otel.javaagent 2026-10-24 23:22:03:278 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller - io.opentelemetry.javaagent.tooling.AgentInstaller loaded on io.opentelemetry.javaagent.bootstrap.AgentClassLoader@7daf6ecc +[otel.javaagent 2026-10-24 23:22:03:785 +0000] [main] DEBUG io.opentelemetry.javaagent.testing.exporter.OtlpInMemoryMetricExporter - Setting aggregation temporality to DELTA +[otel.javaagent 2026-10-24 23:22:03:990 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$java$util$concurrent$Callable$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$java$lang$Runnable$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$java$util$concurrent$Future$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$java$util$concurrent$ForkJoinTask$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext] +[otel.javaagent 2026-10-24 23:22:04:001 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$java$util$concurrent$ForkJoinTask$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$java$util$concurrent$Future$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$java$util$concurrent$Callable$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$java$lang$Runnable$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext] +[otel.javaagent 2026-10-24 23:22:04:012 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.ExposeAgentBootstrapListener - Adding module read from module java.base to unnamed module @61c9c3fd +[otel.javaagent 2026-10-24 23:22:04:012 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask -- null +[otel.javaagent 2026-10-24 23:22:04:016 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.FutureTask -- null +[otel.javaagent 2026-10-24 23:22:04:019 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.Executors$RunnableAdapter -- null +[otel.javaagent 2026-10-24 23:22:04:021 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ThreadPoolExecutor$Worker -- null +[otel.javaagent 2026-10-24 23:22:04:123 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.lang.ApplicationShutdownHooks$1 -- null +[otel.javaagent 2026-10-24 23:22:04:198 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller - Loading extension instrumentation-loader [class io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader] +[otel.javaagent 2026-10-24 23:22:04:241 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.56 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_56.incubator.OpenTelemetryApiIncubatorInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:04:243 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.56 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_56.incubator.OpenTelemetryApiIncubatorInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:04:269 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.65 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_65.incubator.OpenTelemetryApiIncubatorInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:04:270 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.63 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_63.OpenTelemetryApiInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:04:271 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.63 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_63.incubator.OpenTelemetryApiIncubatorInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:04:271 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.65 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_65.incubator.OpenTelemetryApiIncubatorInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:04:271 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.63 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_63.OpenTelemetryApiInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:04:272 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.63 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_63.incubator.OpenTelemetryApiIncubatorInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:04:275 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.50 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_50.OpenTelemetryApiInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:04:275 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.50 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_50.incubator.OpenTelemetryApiIncubatorInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:04:276 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.47 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_47.incubator.OpenTelemetryApiIncubatorInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:04:276 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.50 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_50.OpenTelemetryApiInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:04:276 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.50 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_50.incubator.OpenTelemetryApiIncubatorInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:04:276 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.42 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_42.OpenTelemetryApiInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:04:276 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.47 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_47.incubator.OpenTelemetryApiIncubatorInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:04:276 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.42 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_42.OpenTelemetryApiInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:04:280 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.42 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_42.incubator.OpenTelemetryApiIncubatorInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:04:280 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.42 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_42.incubator.OpenTelemetryApiIncubatorInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:04:280 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.40 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.OpenTelemetryApiIncubatorInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:04:281 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.40 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.OpenTelemetryApiIncubatorInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:04:281 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.27 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_27.OpenTelemetryApiInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:04:281 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.27 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_27.OpenTelemetryApiInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:04:282 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.38 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_38.OpenTelemetryApiInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:04:282 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.38 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_38.OpenTelemetryApiInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:04:283 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.38 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_38.incubator.OpenTelemetryApiIncubatorInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:04:283 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.38 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_38.incubator.OpenTelemetryApiIncubatorInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:04:283 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.32 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_32.OpenTelemetryApiInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:04:285 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.32 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_32.incubator.OpenTelemetryApiIncubatorInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:04:285 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.32 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_32.OpenTelemetryApiInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:04:285 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.32 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_32.incubator.OpenTelemetryApiIncubatorInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:04:285 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.31 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_31.incubator.OpenTelemetryApiInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:04:285 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.31 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_31.incubator.OpenTelemetryApiInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:04:286 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.37 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_37.incubator.OpenTelemetryApiInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:04:286 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.37 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_37.incubator.OpenTelemetryApiInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:04:287 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.15 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_15.OpenTelemetryApiInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:04:287 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.15 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_15.OpenTelemetryApiInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:04:287 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.10 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.OpenTelemetryApiInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:04:288 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.10 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.OpenTelemetryApiInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:04:288 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.4 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_4.OpenTelemetryApiInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:04:288 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.4 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_4.OpenTelemetryApiInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:04:289 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.59 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_59.OpenTelemetryApiInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:04:289 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.59 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_59.OpenTelemetryApiInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:04:289 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-instrumentation-api-1.14 [class io.opentelemetry.javaagent.instrumentation.instrumentationapi.v1_14.InstrumentationApiInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:04:290 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-instrumentation-api-1.14 [class io.opentelemetry.javaagent.instrumentation.instrumentationapi.v1_14.InstrumentationApiInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:04:290 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.0 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_0.OpenTelemetryApiInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:04:291 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.0 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_0.OpenTelemetryApiInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:04:293 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.57 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_57.OpenTelemetryApiInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:04:293 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.57 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_57.OpenTelemetryApiInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:04:293 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation executors [class io.opentelemetry.javaagent.instrumentation.executors.ExecutorsInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:04:297 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation executors [class io.opentelemetry.javaagent.instrumentation.executors.ExecutorsInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:04:348 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation internal-application-logger [class io.opentelemetry.javaagent.instrumentation.internal.application.logger.ApplicationLoggingInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:04:348 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation internal-class-loader [class io.opentelemetry.javaagent.instrumentation.internal.classloader.ClassLoaderInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:04:350 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation internal-application-logger is disabled +[otel.javaagent 2026-10-24 23:22:04:350 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation internal-class-loader [class io.opentelemetry.javaagent.instrumentation.internal.classloader.ClassLoaderInstrumentationModule] injects helper classes +[otel.javaagent 2026-10-24 23:22:04:356 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation internal-eclipse-osgi-3.6 [class io.opentelemetry.javaagent.instrumentation.internal.eclipse.osgi.v3_6.EclipseOsgiInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:04:356 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation internal-eclipse-osgi-3.6 [class io.opentelemetry.javaagent.instrumentation.internal.eclipse.osgi.v3_6.EclipseOsgiInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:04:356 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation internal-lambda [class io.opentelemetry.javaagent.instrumentation.internal.lambda.LambdaInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:04:358 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation internal-reflection [class io.opentelemetry.javaagent.instrumentation.internal.reflection.ReflectionInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:04:358 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation internal-lambda [class io.opentelemetry.javaagent.instrumentation.internal.lambda.LambdaInstrumentationModule] injects helper classes +[otel.javaagent 2026-10-24 23:22:04:358 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation internal-reflection [class io.opentelemetry.javaagent.instrumentation.internal.reflection.ReflectionInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:04:359 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation internal-url-class-loader [class io.opentelemetry.javaagent.instrumentation.internal.urlclassloader.UrlClassLoaderInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:04:359 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation internal-url-class-loader [class io.opentelemetry.javaagent.instrumentation.internal.urlclassloader.UrlClassLoaderInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:04:360 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation elasticsearch-rest-5.0 [class io.opentelemetry.javaagent.instrumentation.elasticsearch.rest.v5_0.ElasticsearchRest5InstrumentationModule] +[otel.javaagent 2026-10-24 23:22:04:360 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation elasticsearch-rest-5.0 [class io.opentelemetry.javaagent.instrumentation.elasticsearch.rest.v5_0.ElasticsearchRest5InstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:04:371 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation apache-httpclient-4.0 [class io.opentelemetry.javaagent.instrumentation.apachehttpclient.v4_0.ApacheHttpClientInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:04:371 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation apache-httpclient-4.0 [class io.opentelemetry.javaagent.instrumentation.apachehttpclient.v4_0.ApacheHttpClientInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:04:375 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation apache-httpasyncclient-4.1 [class io.opentelemetry.javaagent.instrumentation.apachehttpasyncclient.v4_1.ApacheHttpAsyncClientInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:04:375 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation apache-httpasyncclient-4.1 [class io.opentelemetry.javaagent.instrumentation.apachehttpasyncclient.v4_1.ApacheHttpAsyncClientInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:04:376 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation elasticsearch-rest-6.4 [class io.opentelemetry.javaagent.instrumentation.elasticsearch.rest.v6_4.ElasticsearchRest6InstrumentationModule] +[otel.javaagent 2026-10-24 23:22:04:377 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation elasticsearch-rest-6.4 [class io.opentelemetry.javaagent.instrumentation.elasticsearch.rest.v6_4.ElasticsearchRest6InstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:04:382 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation elasticsearch-rest-7.0 [class io.opentelemetry.javaagent.instrumentation.elasticsearch.rest.v7_0.ElasticsearchRest7InstrumentationModule] +[otel.javaagent 2026-10-24 23:22:04:383 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation elasticsearch-rest-7.0 [class io.opentelemetry.javaagent.instrumentation.elasticsearch.rest.v7_0.ElasticsearchRest7InstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:04:395 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation deny-unsafe [class io.opentelemetry.javaagent.testing.instrumentation.DenyUnsafeInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:04:396 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-instrumentation-annotations-1.16 [class io.opentelemetry.javaagent.instrumentation.instrumentationannotations.v1_16.AnnotationInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:04:396 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation deny-unsafe is disabled +[otel.javaagent 2026-10-24 23:22:04:396 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-instrumentation-annotations-1.16 [class io.opentelemetry.javaagent.instrumentation.instrumentationannotations.v1_16.AnnotationInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:04:405 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Installed 38 instrumentation(s) +[otel.javaagent 2026-10-24 23:22:04:406 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller - Loading extension test [class io.opentelemetry.javaagent.testing.bytebuddy.TestAgentExtension] +[otel.javaagent 2026-10-24 23:22:04:435 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller - Installed 2 extension(s) +[otel.javaagent 2026-10-24 23:22:04:447 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.javaagent.shaded.io.opentelemetry.context.StrictContextStorage$PendingScopes -- null +[otel.javaagent 2026-10-24 23:22:04:452 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.javaagent.shaded.io.opentelemetry.context.internal.shaded.WeakConcurrentMap -- null +[otel.javaagent 2026-10-24 23:22:04:455 +0000] [main] DEBUG net.bytebuddy.agent.builder.AgentBuilderUtil - Could not decompose matcher failSafe(try(AnnotationInstrumentationModule#WithSpanInstrumentation(declaresMethods(whereOne((isMethod() and declaresAnnotations(whereOne(ofAnnotationType(name(equals(io.opentelemetry.instrumentation.annotations.WithSpan)))))))))) or false) +[otel.javaagent 2026-10-24 23:22:04:455 +0000] [main] DEBUG net.bytebuddy.agent.builder.AgentBuilderUtil - Could not decompose matcher failSafe(try(AnnotationInstrumentationModule#AddingSpanAttributesInstrumentation(declaresMethods(whereOne((isMethod() and declaresAnnotations(whereOne(ofAnnotationType(name(equals(io.opentelemetry.instrumentation.annotations.AddingSpanAttributes))))) and not(declaresAnnotations(whereOne(ofAnnotationType(name(equals(io.opentelemetry.instrumentation.annotations.WithSpan))))))))))) or false) +[otel.javaagent 2026-10-24 23:22:04:492 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: internal-class-loader [class io.opentelemetry.javaagent.instrumentation.internal.classloader.ClassLoaderInstrumentationModule] on io.opentelemetry.javaagent.bootstrap.AgentClassLoader$BootstrapClassLoaderProxy@21b8d17c +[otel.javaagent 2026-10-24 23:22:04:503 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: internal-url-class-loader [class io.opentelemetry.javaagent.instrumentation.internal.urlclassloader.UrlClassLoaderInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@737edcfa +[otel.javaagent 2026-10-24 23:22:04:671 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.net.URLClassLoader -- null +[otel.javaagent 2026-10-24 23:22:04:718 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed jdk.internal.loader.BuiltinClassLoader -- null +[otel.javaagent 2026-10-24 23:22:04:785 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.lang.ClassLoader -- null +[otel.javaagent 2026-10-24 23:22:04:843 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: executors [class io.opentelemetry.javaagent.instrumentation.executors.ExecutorsInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@5e268ce6 +[otel.javaagent 2026-10-24 23:22:04:850 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.RunnableScheduledFuture +[otel.javaagent 2026-10-24 23:22:04:850 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ScheduledFuture +[otel.javaagent 2026-10-24 23:22:04:850 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.RunnableFuture +[otel.javaagent 2026-10-24 23:22:04:860 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.Future +[otel.javaagent 2026-10-24 23:22:04:862 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for java.util.concurrent.ScheduledExecutorService +[otel.javaagent 2026-10-24 23:22:04:862 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for java.util.concurrent.ScheduledExecutorService +[otel.javaagent 2026-10-24 23:22:04:862 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for java.util.concurrent.ExecutorService +[otel.javaagent 2026-10-24 23:22:04:862 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for java.util.concurrent.ExecutorService +[otel.javaagent 2026-10-24 23:22:04:862 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for java.util.concurrent.Executor +[otel.javaagent 2026-10-24 23:22:04:862 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for java.util.concurrent.Executor +[otel.javaagent 2026-10-24 23:22:04:887 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: internal-lambda [class io.opentelemetry.javaagent.instrumentation.internal.lambda.LambdaInstrumentationModule] on io.opentelemetry.javaagent.bootstrap.AgentClassLoader$BootstrapClassLoaderProxy@21b8d17c +[otel.javaagent 2026-10-24 23:22:04:892 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: internal-reflection [class io.opentelemetry.javaagent.instrumentation.internal.reflection.ReflectionInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@518cf84a +[otel.javaagent 2026-10-24 23:22:04:914 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$java$util$concurrent$Callable$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$java$lang$Runnable$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$java$util$concurrent$Future$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$java$util$concurrent$ForkJoinTask$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext] +[otel.javaagent 2026-10-24 23:22:04:918 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$java$util$concurrent$ForkJoinTask$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$java$util$concurrent$Future$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$java$util$concurrent$Callable$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$java$lang$Runnable$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext] +[otel.javaagent 2026-10-24 23:22:04:939 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ThreadPoolExecutor$Worker -- null +[otel.javaagent 2026-10-24 23:22:04:948 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.Executors$RunnableAdapter -- null +[otel.javaagent 2026-10-24 23:22:04:958 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.Callable -- null +[otel.javaagent 2026-10-24 23:22:04:974 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask -- null +[otel.javaagent 2026-10-24 23:22:04:990 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.FutureTask -- null +[otel.javaagent 2026-10-24 23:22:04:993 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.RunnableScheduledFuture +[otel.javaagent 2026-10-24 23:22:04:997 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.RunnableScheduledFuture -- null +[otel.javaagent 2026-10-24 23:22:04:997 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.RunnableFuture +[otel.javaagent 2026-10-24 23:22:05:000 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.RunnableFuture -- null +[otel.javaagent 2026-10-24 23:22:05:082 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ScheduledThreadPoolExecutor -- null +[otel.javaagent 2026-10-24 23:22:05:130 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ThreadPoolExecutor -- null +[otel.javaagent 2026-10-24 23:22:05:137 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinWorkerThread -- null +[otel.javaagent 2026-10-24 23:22:05:145 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask -- null +[otel.javaagent 2026-10-24 23:22:05:148 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedRunnable -- null +[otel.javaagent 2026-10-24 23:22:05:148 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$AdaptedRunnable +[otel.javaagent 2026-10-24 23:22:05:154 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedRunnable -- null +[otel.javaagent 2026-10-24 23:22:05:156 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedCallable -- null +[otel.javaagent 2026-10-24 23:22:05:173 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$AdaptedRunnableAction +[otel.javaagent 2026-10-24 23:22:05:175 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedCallable -- null +[otel.javaagent 2026-10-24 23:22:05:175 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedRunnableAction -- null +[otel.javaagent 2026-10-24 23:22:05:195 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$AdaptedInterruptibleRunnable +[otel.javaagent 2026-10-24 23:22:05:196 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedRunnableAction -- null +[otel.javaagent 2026-10-24 23:22:05:196 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedInterruptibleRunnable -- null +[otel.javaagent 2026-10-24 23:22:05:213 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedInterruptibleRunnable -- null +[otel.javaagent 2026-10-24 23:22:05:220 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$InterruptibleTask +[otel.javaagent 2026-10-24 23:22:05:244 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$AdaptedInterruptibleCallable +[otel.javaagent 2026-10-24 23:22:05:245 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$InterruptibleTask -- null +[otel.javaagent 2026-10-24 23:22:05:245 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedInterruptibleCallable -- null +[otel.javaagent 2026-10-24 23:22:05:265 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedInterruptibleCallable -- null +[otel.javaagent 2026-10-24 23:22:05:275 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.DelayScheduler -- null +[otel.javaagent 2026-10-24 23:22:05:343 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinPool -- null +[otel.javaagent 2026-10-24 23:22:05:349 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$RunnableExecuteAction -- null +[otel.javaagent 2026-10-24 23:22:05:365 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$RunnableExecuteAction -- null +[otel.javaagent 2026-10-24 23:22:05:366 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.DelayScheduler$ScheduledForkJoinTask -- null +[otel.javaagent 2026-10-24 23:22:05:362 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.DelayScheduler$ScheduledForkJoinTask +[otel.javaagent 2026-10-24 23:22:05:379 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.DelayScheduler$ScheduledForkJoinTask -- null +[otel.javaagent 2026-10-24 23:22:05:380 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$CallableWithTimeout -- null +[otel.javaagent 2026-10-24 23:22:05:384 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$CallableWithTimeout +[otel.javaagent 2026-10-24 23:22:05:390 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$CallableWithTimeout -- null +[otel.javaagent 2026-10-24 23:22:05:436 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.AbstractExecutorService -- null +[otel.javaagent 2026-10-24 23:22:05:438 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.instrumentation.internal.lambda.LambdaTransformerHelper] +[otel.javaagent 2026-10-24 23:22:05:447 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.lang.invoke.InnerClassLambdaMetafactory -- null +[otel.javaagent 2026-10-24 23:22:05:454 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed jdk.internal.reflect.Reflection -- null +[otel.javaagent 2026-10-24 23:22:05:463 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.lang.VirtualThread -- null +[otel.javaagent 2026-10-24 23:22:05:465 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed jdk.internal.misc.CarrierThread -- null +[otel.javaagent 2026-10-24 23:22:05:474 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.lang.Class -- null +[otel.javaagent 2026-10-24 23:22:05:513 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$InterruptibleTask +[otel.javaagent 2026-10-24 23:22:05:519 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$CallableWithTimeout +[otel.javaagent 2026-10-24 23:22:05:533 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.DelayScheduler$ScheduledForkJoinTask +[otel.javaagent 2026-10-24 23:22:05:534 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$CallableWithTimeout -- null +[otel.javaagent 2026-10-24 23:22:05:545 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.DelayScheduler$ScheduledForkJoinTask -- null +[otel.javaagent 2026-10-24 23:22:05:556 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$RunnableExecuteAction -- null +[otel.javaagent 2026-10-24 23:22:05:557 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$AdaptedInterruptibleCallable +[otel.javaagent 2026-10-24 23:22:05:563 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedInterruptibleCallable -- null +[otel.javaagent 2026-10-24 23:22:05:565 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$AdaptedInterruptibleRunnable +[otel.javaagent 2026-10-24 23:22:05:574 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedInterruptibleRunnable -- null +[otel.javaagent 2026-10-24 23:22:05:575 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$InterruptibleTask +[otel.javaagent 2026-10-24 23:22:05:583 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$InterruptibleTask -- null +[otel.javaagent 2026-10-24 23:22:05:584 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$AdaptedRunnableAction +[otel.javaagent 2026-10-24 23:22:05:590 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedRunnableAction -- null +[otel.javaagent 2026-10-24 23:22:05:596 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedCallable -- null +[otel.javaagent 2026-10-24 23:22:05:597 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$AdaptedRunnable +[otel.javaagent 2026-10-24 23:22:05:602 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedRunnable -- null +[otel.javaagent 2026-10-24 23:22:05:690 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: internal-class-loader [class io.opentelemetry.javaagent.instrumentation.internal.classloader.ClassLoaderInstrumentationModule] on jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc +[otel.javaagent 2026-10-24 23:22:05:710 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed worker.org.gradle.internal.classloader.FilteringClassLoader -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc +[otel.javaagent 2026-10-24 23:22:05:741 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed worker.org.gradle.internal.classloader.FilteringClassLoader$RetrieveSystemPackagesClassLoader -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + +Gradle Test Executor 27 STANDARD_ERROR + [otel.javaagent 2026-10-24 23:22:06:455 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: executors [class io.opentelemetry.javaagent.instrumentation.executors.ExecutorsInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@79d7035 + [otel.javaagent 2026-10-24 23:22:06:483 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.junit.platform.commons.util.ReflectionUtils$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:06:487 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.junit.platform.commons.function.Try$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:06:519 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: elasticsearch-rest-5.0 [class io.opentelemetry.javaagent.instrumentation.elasticsearch.rest.v5_0.ElasticsearchRest5InstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@36f6e521 + [otel.javaagent 2026-10-24 23:22:06:520 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$org$elasticsearch$client$RestClient$io$opentelemetry$javaagent$shaded$instrumentation$api$incubator$semconv$db$internal$DbServerTarget] + [otel.javaagent 2026-10-24 23:22:06:520 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$org$elasticsearch$client$RestClient$io$opentelemetry$javaagent$shaded$instrumentation$api$incubator$semconv$db$internal$DbServerTarget] + [otel.javaagent 2026-10-24 23:22:06:520 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$org$elasticsearch$client$RestClient$io$opentelemetry$javaagent$shaded$instrumentation$api$incubator$semconv$db$internal$DbServerTarget] + [otel.javaagent 2026-10-24 23:22:06:520 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$org$elasticsearch$client$RestClient$io$opentelemetry$javaagent$shaded$instrumentation$api$incubator$semconv$db$internal$DbServerTarget] + [otel.javaagent 2026-10-24 23:22:06:521 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$org$elasticsearch$client$RestClient$io$opentelemetry$javaagent$shaded$instrumentation$api$incubator$semconv$db$internal$DbServerTarget, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$org$elasticsearch$client$Request$io$opentelemetry$javaagent$instrumentation$elasticsearch$rest$common$v5_0$ElasticsearchEndpointDefinition] + [otel.javaagent 2026-10-24 23:22:06:521 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$org$elasticsearch$client$RestClient$io$opentelemetry$javaagent$shaded$instrumentation$api$incubator$semconv$db$internal$DbServerTarget, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$org$elasticsearch$client$Request$io$opentelemetry$javaagent$instrumentation$elasticsearch$rest$common$v5_0$ElasticsearchEndpointDefinition] + [otel.javaagent 2026-10-24 23:22:06:524 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.elasticsearch.client.RestClient -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:06:826 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:06:908 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.junit.platform.commons.util.ReflectionUtils$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:07:078 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed ch.qos.logback.core.hook.ShutdownHook -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:07:255 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.56 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_56.incubator.OpenTelemetryApiIncubatorInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@4baf997 + [otel.javaagent 2026-10-24 23:22:07:309 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.65 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_65.incubator.OpenTelemetryApiIncubatorInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@7493d937 + [otel.javaagent 2026-10-24 23:22:07:317 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.63 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_63.OpenTelemetryApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@3db1ce78 + [otel.javaagent 2026-10-24 23:22:07:334 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.27 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_27.OpenTelemetryApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@4276ad40 + [otel.javaagent 2026-10-24 23:22:07:349 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.38 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_38.incubator.OpenTelemetryApiIncubatorInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@619c3546 + [otel.javaagent 2026-10-24 23:22:07:366 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.32 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_32.OpenTelemetryApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@349312d5 + [otel.javaagent 2026-10-24 23:22:07:382 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.15 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_15.OpenTelemetryApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@7d64a960 + [otel.javaagent 2026-10-24 23:22:07:403 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.10 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.OpenTelemetryApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@fcd0e8d + [otel.javaagent 2026-10-24 23:22:07:416 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.4 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_4.OpenTelemetryApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@36e409e0 + [otel.javaagent 2026-10-24 23:22:07:416 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.59 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_59.OpenTelemetryApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@7adae08e + [otel.javaagent 2026-10-24 23:22:07:425 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.0 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_0.OpenTelemetryApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@17c53dfb + [otel.javaagent 2026-10-24 23:22:07:425 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.57 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_57.OpenTelemetryApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@5c8b10b4 + [otel.javaagent 2026-10-24 23:22:07:452 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.api.GlobalOpenTelemetry -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + +ElasticsearchRest5Test STANDARD_ERROR + [otel.javaagent 2026-10-24 23:22:07:818 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for org.testcontainers.utility.LazyFuture + [otel.javaagent 2026-10-24 23:22:07:822 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for org.testcontainers.images.RemoteDockerImage + [otel.javaagent 2026-10-24 23:22:07:827 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.images.RemoteDockerImage -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:07:868 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture + [otel.javaagent 2026-10-24 23:22:07:879 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$Completion + [otel.javaagent 2026-10-24 23:22:07:881 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture -- null + [otel.javaagent 2026-10-24 23:22:07:895 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$Completion -- null + [otel.javaagent 2026-10-24 23:22:07:900 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$BiCompletion -- null + [otel.javaagent 2026-10-24 23:22:07:900 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniCompletion + [otel.javaagent 2026-10-24 23:22:07:905 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniCompletion -- null + [otel.javaagent 2026-10-24 23:22:07:905 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$CoCompletion + [otel.javaagent 2026-10-24 23:22:07:908 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$CoCompletion -- null + [otel.javaagent 2026-10-24 23:22:07:915 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$BiRelay -- null + [otel.javaagent 2026-10-24 23:22:07:915 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$Signaller + [otel.javaagent 2026-10-24 23:22:07:921 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$Signaller -- null + [otel.javaagent 2026-10-24 23:22:07:921 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniApply + [otel.javaagent 2026-10-24 23:22:07:931 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniApply -- null + [otel.javaagent 2026-10-24 23:22:07:931 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniAccept + [otel.javaagent 2026-10-24 23:22:07:936 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniAccept -- null + [otel.javaagent 2026-10-24 23:22:07:936 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniRun + [otel.javaagent 2026-10-24 23:22:07:939 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniRun -- null + [otel.javaagent 2026-10-24 23:22:07:943 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$BiApply -- null + [otel.javaagent 2026-10-24 23:22:07:943 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$BiAccept + [otel.javaagent 2026-10-24 23:22:07:946 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$BiAccept -- null + [otel.javaagent 2026-10-24 23:22:07:946 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$BiRun + [otel.javaagent 2026-10-24 23:22:07:957 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$OrApply + [otel.javaagent 2026-10-24 23:22:07:959 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$BiRun -- null + [otel.javaagent 2026-10-24 23:22:07:965 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$OrApply -- null + [otel.javaagent 2026-10-24 23:22:07:966 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$OrAccept + [otel.javaagent 2026-10-24 23:22:07:975 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$OrAccept -- null + [otel.javaagent 2026-10-24 23:22:07:975 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$OrRun + [otel.javaagent 2026-10-24 23:22:07:984 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$OrRun -- null + [otel.javaagent 2026-10-24 23:22:07:984 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniCompose + [otel.javaagent 2026-10-24 23:22:07:990 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniCompose -- null + [otel.javaagent 2026-10-24 23:22:07:992 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniRelay + [otel.javaagent 2026-10-24 23:22:08:000 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniRelay -- null + [otel.javaagent 2026-10-24 23:22:08:000 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniWhenComplete + [otel.javaagent 2026-10-24 23:22:08:008 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniWhenComplete -- null + [otel.javaagent 2026-10-24 23:22:08:009 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniHandle + [otel.javaagent 2026-10-24 23:22:08:035 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniExceptionally + [otel.javaagent 2026-10-24 23:22:08:036 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniHandle -- null + [otel.javaagent 2026-10-24 23:22:08:041 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniExceptionally -- null + [otel.javaagent 2026-10-24 23:22:08:042 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniComposeExceptionally + [otel.javaagent 2026-10-24 23:22:08:048 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$MinimalStage + [otel.javaagent 2026-10-24 23:22:08:049 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniComposeExceptionally -- null + [otel.javaagent 2026-10-24 23:22:08:049 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$MinimalStage -- null + [otel.javaagent 2026-10-24 23:22:08:049 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$AnyOf + [otel.javaagent 2026-10-24 23:22:08:054 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$AnyOf -- null + [otel.javaagent 2026-10-24 23:22:08:225 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.RecursiveTask + [otel.javaagent 2026-10-24 23:22:08:228 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.RecursiveTask -- null + [otel.javaagent 2026-10-24 23:22:08:248 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.shaded.com.fasterxml.jackson.databind.util.internal.PrivateMaxEntriesMap$AddTask -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:08:379 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.dockerclient.DockerClientProviderStrategy$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:08:403 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for java.util.concurrent.Executors$AutoShutdownDelegatedExecutorService + [otel.javaagent 2026-10-24 23:22:08:403 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for java.util.concurrent.Executors$AutoShutdownDelegatedExecutorService + [otel.javaagent 2026-10-24 23:22:08:429 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.Executors$DelegatedExecutorService -- null + [otel.javaagent 2026-10-24 23:22:08:432 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.Executors$AutoShutdownDelegatedExecutorService$$Lambda -- null + [otel.javaagent 2026-10-24 23:22:08:434 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.shaded.org.awaitility.core.ConditionAwaiter$ConditionPoller -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:08:725 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for com.github.dockerjava.zerodep.shaded.org.apache.hc.core5.concurrent.BasicFuture + [otel.javaagent 2026-10-24 23:22:08:726 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed com.github.dockerjava.zerodep.shaded.org.apache.hc.core5.concurrent.BasicFuture -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:08:728 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for com.github.dockerjava.zerodep.shaded.org.apache.hc.core5.pool.StrictConnPool$1 + [otel.javaagent 2026-10-24 23:22:08:730 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed com.github.dockerjava.zerodep.shaded.org.apache.hc.core5.pool.StrictConnPool$1 -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:09:031 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.containers.GenericContainer$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:09:404 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.containers.GenericContainer$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:09:411 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for org.testcontainers.shaded.org.awaitility.core.SameThreadExecutorService + [otel.javaagent 2026-10-24 23:22:09:411 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for org.testcontainers.shaded.org.awaitility.core.SameThreadExecutorService + [otel.javaagent 2026-10-24 23:22:09:666 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.shaded.com.github.dockerjava.core.DefaultInvocationBuilder$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:09:688 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.utility.RyukResourceReaper$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:09:695 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.utility.RyukResourceReaper$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:09:753 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.utility.MountableFile$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:09:763 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.containers.ContainerState$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:15:970 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: apache-httpasyncclient-4.1 [class io.opentelemetry.javaagent.instrumentation.apachehttpasyncclient.v4_1.ApacheHttpAsyncClientInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@5ef7ae2f + [otel.javaagent 2026-10-24 23:22:15:976 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.nio.client.HttpAsyncClient -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:15:978 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.impl.nio.client.CloseableHttpAsyncClient -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:15:982 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.nio.client.HttpPipeliningClient -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:15:986 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.impl.nio.client.CloseableHttpPipeliningClient -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:15:989 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.impl.nio.client.CloseableHttpAsyncClientBase -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:15:993 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.impl.nio.client.InternalHttpAsyncClient -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:16:019 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:16:055 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.impl.nio.client.CloseableHttpAsyncClientBase$1 -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + +ElasticsearchRest5Test > recordsFailureResponseStatus() STANDARD_ERROR + [otel.javaagent 2026-10-24 23:22:16:254 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for org.apache.http.concurrent.BasicFuture + [otel.javaagent 2026-10-24 23:22:16:259 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.concurrent.BasicFuture -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:16:639 +0000] [I/O dispatcher 1] INFO io.opentelemetry.exporter.logging.LoggingSpanExporter - 'HEAD' : 613e2511baff427d4f128af6214733e8 74778ff9f07289ae CLIENT [tracer: io.opentelemetry.apache-httpasyncclient-4.1:3.0.0-alpha-SNAPSHOT] AttributesMap{data={server.address=localhost, server.port=32865, error.type=404, http.request.method=HEAD, http.response.status_code=404, network.protocol.version=1.1, peer.service=test-peer-service, url.full=http://localhost:32865/missing-index}, capacity=128, totalAddedValues=8} + [otel.javaagent 2026-10-24 23:22:16:641 +0000] [I/O dispatcher 1] INFO io.opentelemetry.javaagent.testing.exporter.OtlpInMemorySpanExporter - Exporting span SpanData{spanContext=ImmutableSpanContext{traceId=613e2511baff427d4f128af6214733e8, spanId=74778ff9f07289ae, traceFlags=03, traceState=ArrayBasedTraceState{entries=[]}, remote=false, valid=true}, parentSpanContext=ImmutableSpanContext{traceId=613e2511baff427d4f128af6214733e8, spanId=2d2866486208589d, traceFlags=03, traceState=ArrayBasedTraceState{entries=[]}, remote=false, valid=true}, resource=Resource{schemaUrl=https://opentelemetry.io/schemas/1.40.0, entities=[SdkEntity{type=service.instance, id={service.instance.id="0bb70945-5f15-41ab-9885-c974bb34cde4"}, description={}, schemaUrl=https://opentelemetry.io/schemas/1.40.0}], attributes={service.instance.id="0bb70945-5f15-41ab-9885-c974bb34cde4", service.name="unknown_service:java", telemetry.distro.name="opentelemetry-javaagent", telemetry.distro.version="3.0.0-SNAPSHOT", telemetry.sdk.language="java", telemetry.sdk.name="opentelemetry", telemetry.sdk.version="1.67.0"}}, instrumentationScopeInfo=InstrumentationScopeInfo{name=io.opentelemetry.apache-httpasyncclient-4.1, version=3.0.0-alpha-SNAPSHOT, schemaUrl=https://opentelemetry.io/schemas/1.41.0, attributes={}}, name=HEAD, kind=CLIENT, startEpochNanos=1792884136296091233, endEpochNanos=1792884136639184686, attributes=AttributesMap{data={server.address=localhost, server.port=32865, error.type=404, http.request.method=HEAD, http.response.status_code=404, network.protocol.version=1.1, peer.service=test-peer-service, url.full=http://localhost:32865/missing-index}, capacity=128, totalAddedValues=8}, totalAttributeCount=8, events=[], totalRecordedEvents=0, links=[], totalRecordedLinks=0, status=ImmutableStatusData{statusCode=ERROR, description=}, hasEnded=true} + [otel.javaagent 2026-10-24 23:22:16:656 +0000] [I/O dispatcher 1] INFO io.opentelemetry.exporter.logging.LoggingSpanExporter - 'localhost:32865' : 613e2511baff427d4f128af6214733e8 2d2866486208589d CLIENT [tracer: io.opentelemetry.elasticsearch-rest-5.0:3.0.0-alpha-SNAPSHOT] AttributesMap{data={server.address=localhost, server.port=32865, error.type=404, http.request.method=HEAD, db.system.name=elasticsearch, db.response.status_code=404, url.full=http://localhost:32865/missing-index}, capacity=128, totalAddedValues=7} + [otel.javaagent 2026-10-24 23:22:16:656 +0000] [I/O dispatcher 1] INFO io.opentelemetry.javaagent.testing.exporter.OtlpInMemorySpanExporter - Exporting span SpanData{spanContext=ImmutableSpanContext{traceId=613e2511baff427d4f128af6214733e8, spanId=2d2866486208589d, traceFlags=03, traceState=ArrayBasedTraceState{entries=[]}, remote=false, valid=true}, parentSpanContext=ImmutableSpanContext{traceId=00000000000000000000000000000000, spanId=0000000000000000, traceFlags=00, traceState=ArrayBasedTraceState{entries=[]}, remote=false, valid=false}, resource=Resource{schemaUrl=https://opentelemetry.io/schemas/1.40.0, entities=[SdkEntity{type=service.instance, id={service.instance.id="0bb70945-5f15-41ab-9885-c974bb34cde4"}, description={}, schemaUrl=https://opentelemetry.io/schemas/1.40.0}], attributes={service.instance.id="0bb70945-5f15-41ab-9885-c974bb34cde4", service.name="unknown_service:java", telemetry.distro.name="opentelemetry-javaagent", telemetry.distro.version="3.0.0-SNAPSHOT", telemetry.sdk.language="java", telemetry.sdk.name="opentelemetry", telemetry.sdk.version="1.67.0"}}, instrumentationScopeInfo=InstrumentationScopeInfo{name=io.opentelemetry.elasticsearch-rest-5.0, version=3.0.0-alpha-SNAPSHOT, schemaUrl=https://opentelemetry.io/schemas/1.44.0, attributes={}}, name=localhost:32865, kind=CLIENT, startEpochNanos=1792884136225791407, endEpochNanos=1792884136656033646, attributes=AttributesMap{data={server.address=localhost, server.port=32865, error.type=404, http.request.method=HEAD, db.system.name=elasticsearch, db.response.status_code=404, url.full=http://localhost:32865/missing-index}, capacity=128, totalAddedValues=7}, totalAttributeCount=7, events=[], totalRecordedEvents=0, links=[], totalRecordedLinks=0, status=ImmutableStatusData{statusCode=UNSET, description=}, hasEnded=true} + [otel.javaagent 2026-10-24 23:22:16:711 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.instrumentation.testing.InstrumentationTestRunner$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:16:812 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.awaitility.core.ConditionAwaiter$ConditionPoller -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:26:783 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.context.internal.shaded.AbstractWeakConcurrentMap -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:26:784 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.context.internal.shaded.WeakConcurrentMap -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:26:829 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.context.StrictContextStorage$PendingScopes -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:26:829 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.context.ContextStorageWrappers -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:26:835 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.context.ArrayBasedContext -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:26:843 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-instrumentation-api-1.14 [class io.opentelemetry.javaagent.instrumentation.instrumentationapi.v1_14.InstrumentationApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@6e111aeb + [otel.javaagent 2026-10-24 23:22:26:850 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.instrumentation.api.internal.HttpRouteState -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:26:854 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.instrumentation.api.internal.SpanKey -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:26:858 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.instrumentation.testing.util.ContextStorageCloser$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + +ElasticsearchRest5Test > recordsFailureResponseStatus() FAILED + org.opentest4j.AssertionFailedError: [Span 1] Expected span to have name but was + at app//io.opentelemetry.javaagent.instrumentation.elasticsearch.rest.v5_0.ElasticsearchRest5Test.lambda$recordsFailureResponseStatus$2(ElasticsearchRest5Test.java:117) + at app//io.opentelemetry.sdk.testing.assertj.TraceAssert.hasSpansSatisfyingExactly(TraceAssert.java:65) + at app//io.opentelemetry.sdk.testing.assertj.TraceAssert.hasSpansSatisfyingExactly(TraceAssert.java:49) + at app//io.opentelemetry.javaagent.instrumentation.elasticsearch.rest.v5_0.ElasticsearchRest5Test.lambda$recordsFailureResponseStatus$0(ElasticsearchRest5Test.java:103) + at app//io.opentelemetry.sdk.testing.assertj.TracesAssert.hasTracesSatisfyingExactly(TracesAssert.java:108) + at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.doAssertTraces(InstrumentationTestRunner.java:191) + at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.lambda$waitAndAssertTraces$0(InstrumentationTestRunner.java:177) + at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.awaitUntilAsserted(InstrumentationTestRunner.java:497) + at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.awaitUntilAsserted(InstrumentationTestRunner.java:480) + at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.waitAndAssertTraces(InstrumentationTestRunner.java:177) + at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.waitAndAssertTraces(InstrumentationTestRunner.java:167) + at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.waitAndAssertTraces(InstrumentationTestRunner.java:163) + at app//io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension.waitAndAssertTraces(InstrumentationExtension.java:167) + at app//io.opentelemetry.javaagent.instrumentation.elasticsearch.rest.v5_0.ElasticsearchRest5Test.recordsFailureResponseStatus(ElasticsearchRest5Test.java:101) + +ElasticsearchRest5Test > elasticsearchStatus() STANDARD_ERROR + [otel.javaagent 2026-10-24 23:22:26:888 +0000] [I/O dispatcher 1] INFO io.opentelemetry.exporter.logging.LoggingSpanExporter - 'GET' : 43316ae11ab7ff9b05d912c383854294 43f5fa830c1678ef CLIENT [tracer: io.opentelemetry.apache-httpasyncclient-4.1:3.0.0-alpha-SNAPSHOT] AttributesMap{data={server.address=localhost, server.port=32865, http.request.method=GET, http.response.status_code=200, network.protocol.version=1.1, peer.service=test-peer-service, url.full=http://localhost:32865/_cluster/health}, capacity=128, totalAddedValues=7} + [otel.javaagent 2026-10-24 23:22:26:888 +0000] [I/O dispatcher 1] INFO io.opentelemetry.javaagent.testing.exporter.OtlpInMemorySpanExporter - Exporting span SpanData{spanContext=ImmutableSpanContext{traceId=43316ae11ab7ff9b05d912c383854294, spanId=43f5fa830c1678ef, traceFlags=03, traceState=ArrayBasedTraceState{entries=[]}, remote=false, valid=true}, parentSpanContext=ImmutableSpanContext{traceId=43316ae11ab7ff9b05d912c383854294, spanId=809b2b57a317f9d2, traceFlags=03, traceState=ArrayBasedTraceState{entries=[]}, remote=false, valid=true}, resource=Resource{schemaUrl=https://opentelemetry.io/schemas/1.40.0, entities=[SdkEntity{type=service.instance, id={service.instance.id="0bb70945-5f15-41ab-9885-c974bb34cde4"}, description={}, schemaUrl=https://opentelemetry.io/schemas/1.40.0}], attributes={service.instance.id="0bb70945-5f15-41ab-9885-c974bb34cde4", service.name="unknown_service:java", telemetry.distro.name="opentelemetry-javaagent", telemetry.distro.version="3.0.0-SNAPSHOT", telemetry.sdk.language="java", telemetry.sdk.name="opentelemetry", telemetry.sdk.version="1.67.0"}}, instrumentationScopeInfo=InstrumentationScopeInfo{name=io.opentelemetry.apache-httpasyncclient-4.1, version=3.0.0-alpha-SNAPSHOT, schemaUrl=https://opentelemetry.io/schemas/1.41.0, attributes={}}, name=GET, kind=CLIENT, startEpochNanos=1792884146880764503, endEpochNanos=1792884146888287731, attributes=AttributesMap{data={server.address=localhost, server.port=32865, http.request.method=GET, http.response.status_code=200, network.protocol.version=1.1, peer.service=test-peer-service, url.full=http://localhost:32865/_cluster/health}, capacity=128, totalAddedValues=7}, totalAttributeCount=7, events=[], totalRecordedEvents=0, links=[], totalRecordedLinks=0, status=ImmutableStatusData{statusCode=UNSET, description=}, hasEnded=true} + [otel.javaagent 2026-10-24 23:22:26:889 +0000] [I/O dispatcher 1] INFO io.opentelemetry.exporter.logging.LoggingSpanExporter - 'localhost:32865' : 43316ae11ab7ff9b05d912c383854294 809b2b57a317f9d2 CLIENT [tracer: io.opentelemetry.elasticsearch-rest-5.0:3.0.0-alpha-SNAPSHOT] AttributesMap{data={server.address=localhost, server.port=32865, db.system.name=elasticsearch, http.request.method=GET, url.full=http://localhost:32865/_cluster/health}, capacity=128, totalAddedValues=5} + [otel.javaagent 2026-10-24 23:22:26:889 +0000] [I/O dispatcher 1] INFO io.opentelemetry.javaagent.testing.exporter.OtlpInMemorySpanExporter - Exporting span SpanData{spanContext=ImmutableSpanContext{traceId=43316ae11ab7ff9b05d912c383854294, spanId=809b2b57a317f9d2, traceFlags=03, traceState=ArrayBasedTraceState{entries=[]}, remote=false, valid=true}, parentSpanContext=ImmutableSpanContext{traceId=00000000000000000000000000000000, spanId=0000000000000000, traceFlags=00, traceState=ArrayBasedTraceState{entries=[]}, remote=false, valid=false}, resource=Resource{schemaUrl=https://opentelemetry.io/schemas/1.40.0, entities=[SdkEntity{type=service.instance, id={service.instance.id="0bb70945-5f15-41ab-9885-c974bb34cde4"}, description={}, schemaUrl=https://opentelemetry.io/schemas/1.40.0}], attributes={service.instance.id="0bb70945-5f15-41ab-9885-c974bb34cde4", service.name="unknown_service:java", telemetry.distro.name="opentelemetry-javaagent", telemetry.distro.version="3.0.0-SNAPSHOT", telemetry.sdk.language="java", telemetry.sdk.name="opentelemetry", telemetry.sdk.version="1.67.0"}}, instrumentationScopeInfo=InstrumentationScopeInfo{name=io.opentelemetry.elasticsearch-rest-5.0, version=3.0.0-alpha-SNAPSHOT, schemaUrl=https://opentelemetry.io/schemas/1.44.0, attributes={}}, name=localhost:32865, kind=CLIENT, startEpochNanos=1792884146880171060, endEpochNanos=1792884146889142198, attributes=AttributesMap{data={server.address=localhost, server.port=32865, db.system.name=elasticsearch, http.request.method=GET, url.full=http://localhost:32865/_cluster/health}, capacity=128, totalAddedValues=5}, totalAttributeCount=5, events=[], totalRecordedEvents=0, links=[], totalRecordedLinks=0, status=ImmutableStatusData{statusCode=UNSET, description=}, hasEnded=true} + [otel.javaagent 2026-10-24 23:22:26:899 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed com.fasterxml.jackson.databind.util.internal.PrivateMaxEntriesMap$AddTask -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + +ElasticsearchRest5Test > elasticsearchStatus() FAILED + org.opentest4j.AssertionFailedError: [Span 1] Expected span to have name but was + at app//io.opentelemetry.javaagent.instrumentation.elasticsearch.rest.v5_0.ElasticsearchRest5Test.lambda$elasticsearchStatus$2(ElasticsearchRest5Test.java:143) + at app//io.opentelemetry.sdk.testing.assertj.TraceAssert.hasSpansSatisfyingExactly(TraceAssert.java:65) + at app//io.opentelemetry.sdk.testing.assertj.TraceAssert.hasSpansSatisfyingExactly(TraceAssert.java:49) + at app//io.opentelemetry.javaagent.instrumentation.elasticsearch.rest.v5_0.ElasticsearchRest5Test.lambda$elasticsearchStatus$0(ElasticsearchRest5Test.java:131) + at app//io.opentelemetry.sdk.testing.assertj.TracesAssert.hasTracesSatisfyingExactly(TracesAssert.java:108) + at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.doAssertTraces(InstrumentationTestRunner.java:191) + at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.lambda$waitAndAssertTraces$0(InstrumentationTestRunner.java:177) + at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.awaitUntilAsserted(InstrumentationTestRunner.java:497) + at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.awaitUntilAsserted(InstrumentationTestRunner.java:480) + at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.waitAndAssertTraces(InstrumentationTestRunner.java:177) + at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.waitAndAssertTraces(InstrumentationTestRunner.java:167) + at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.waitAndAssertTraces(InstrumentationTestRunner.java:163) + at app//io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension.waitAndAssertTraces(InstrumentationExtension.java:167) + at app//io.opentelemetry.javaagent.instrumentation.elasticsearch.rest.v5_0.ElasticsearchRest5Test.elasticsearchStatus(ElasticsearchRest5Test.java:129) +OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended +[otel.javaagent 2026-10-24 23:22:37:407 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.ExtensionClassLoader - Loaded extension jar file "/tmp/otel-extensions402883469329093552/opentelemetry-agent-exporter-3.0.0-alpha-SNAPSHOT-all.jar" +[otel.javaagent 2026-10-24 23:22:37:417 +0000] [main] INFO io.opentelemetry.javaagent.tooling.VersionLogger - opentelemetry-javaagent - version: 3.0.0-SNAPSHOT +[otel.javaagent 2026-10-24 23:22:37:417 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.VersionLogger - Running on Java 25.0.4.1. JVM OpenJDK 64-Bit Server VM - Eclipse Adoptium - 25.0.4.1+1-LTS +[otel.javaagent 2026-10-24 23:22:37:417 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller - io.opentelemetry.javaagent.tooling.AgentInstaller loaded on io.opentelemetry.javaagent.bootstrap.AgentClassLoader@7daf6ecc +[otel.javaagent 2026-10-24 23:22:37:716 +0000] [main] DEBUG io.opentelemetry.javaagent.testing.exporter.OtlpInMemoryMetricExporter - Setting aggregation temporality to DELTA +[otel.javaagent 2026-10-24 23:22:37:824 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$java$util$concurrent$Callable$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$java$lang$Runnable$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$java$util$concurrent$Future$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$java$util$concurrent$ForkJoinTask$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext] +[otel.javaagent 2026-10-24 23:22:37:830 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$java$util$concurrent$ForkJoinTask$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$java$util$concurrent$Future$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$java$util$concurrent$Callable$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$java$lang$Runnable$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext] +[otel.javaagent 2026-10-24 23:22:37:835 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.ExposeAgentBootstrapListener - Adding module read from module java.base to unnamed module @61c9c3fd +[otel.javaagent 2026-10-24 23:22:37:835 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask -- null +[otel.javaagent 2026-10-24 23:22:37:839 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.FutureTask -- null +[otel.javaagent 2026-10-24 23:22:37:839 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.Executors$RunnableAdapter -- null +[otel.javaagent 2026-10-24 23:22:37:840 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ThreadPoolExecutor$Worker -- null +[otel.javaagent 2026-10-24 23:22:37:885 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.lang.ApplicationShutdownHooks$1 -- null +[otel.javaagent 2026-10-24 23:22:37:920 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller - Loading extension instrumentation-loader [class io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader] +[otel.javaagent 2026-10-24 23:22:37:949 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.56 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_56.incubator.OpenTelemetryApiIncubatorInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:37:949 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.56 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_56.incubator.OpenTelemetryApiIncubatorInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:37:963 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.65 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_65.incubator.OpenTelemetryApiIncubatorInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:37:963 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.65 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_65.incubator.OpenTelemetryApiIncubatorInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:37:964 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.63 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_63.OpenTelemetryApiInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:37:964 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.63 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_63.OpenTelemetryApiInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:37:964 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.63 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_63.incubator.OpenTelemetryApiIncubatorInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:37:964 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.63 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_63.incubator.OpenTelemetryApiIncubatorInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:37:965 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.50 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_50.OpenTelemetryApiInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:37:965 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.50 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_50.OpenTelemetryApiInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:37:965 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.50 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_50.incubator.OpenTelemetryApiIncubatorInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:37:965 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.50 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_50.incubator.OpenTelemetryApiIncubatorInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:37:966 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.47 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_47.incubator.OpenTelemetryApiIncubatorInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:37:966 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.47 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_47.incubator.OpenTelemetryApiIncubatorInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:37:966 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.42 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_42.OpenTelemetryApiInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:37:966 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.42 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_42.OpenTelemetryApiInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:37:966 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.42 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_42.incubator.OpenTelemetryApiIncubatorInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:37:967 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.42 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_42.incubator.OpenTelemetryApiIncubatorInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:37:967 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.40 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.OpenTelemetryApiIncubatorInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:37:968 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.40 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.OpenTelemetryApiIncubatorInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:37:969 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.27 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_27.OpenTelemetryApiInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:37:969 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.27 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_27.OpenTelemetryApiInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:37:969 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.38 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_38.OpenTelemetryApiInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:37:969 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.38 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_38.OpenTelemetryApiInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:37:970 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.38 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_38.incubator.OpenTelemetryApiIncubatorInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:37:970 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.38 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_38.incubator.OpenTelemetryApiIncubatorInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:37:971 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.32 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_32.OpenTelemetryApiInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:37:971 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.32 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_32.OpenTelemetryApiInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:37:971 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.32 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_32.incubator.OpenTelemetryApiIncubatorInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:37:971 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.32 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_32.incubator.OpenTelemetryApiIncubatorInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:37:971 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.31 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_31.incubator.OpenTelemetryApiInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:37:972 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.31 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_31.incubator.OpenTelemetryApiInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:37:972 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.37 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_37.incubator.OpenTelemetryApiInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:37:972 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.37 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_37.incubator.OpenTelemetryApiInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:37:972 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.15 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_15.OpenTelemetryApiInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:37:973 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.10 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.OpenTelemetryApiInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:37:973 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.15 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_15.OpenTelemetryApiInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:37:973 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.10 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.OpenTelemetryApiInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:37:973 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.4 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_4.OpenTelemetryApiInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:37:974 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.4 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_4.OpenTelemetryApiInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:37:974 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.59 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_59.OpenTelemetryApiInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:37:974 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.59 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_59.OpenTelemetryApiInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:37:974 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-instrumentation-api-1.14 [class io.opentelemetry.javaagent.instrumentation.instrumentationapi.v1_14.InstrumentationApiInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:37:974 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-instrumentation-api-1.14 [class io.opentelemetry.javaagent.instrumentation.instrumentationapi.v1_14.InstrumentationApiInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:37:975 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.0 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_0.OpenTelemetryApiInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:37:975 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.0 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_0.OpenTelemetryApiInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:37:976 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.57 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_57.OpenTelemetryApiInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:37:976 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.57 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_57.OpenTelemetryApiInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:37:977 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation executors [class io.opentelemetry.javaagent.instrumentation.executors.ExecutorsInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:37:977 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation executors [class io.opentelemetry.javaagent.instrumentation.executors.ExecutorsInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:37:998 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation internal-application-logger [class io.opentelemetry.javaagent.instrumentation.internal.application.logger.ApplicationLoggingInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:37:998 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation internal-class-loader [class io.opentelemetry.javaagent.instrumentation.internal.classloader.ClassLoaderInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:37:998 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation internal-application-logger is disabled +[otel.javaagent 2026-10-24 23:22:37:998 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation internal-class-loader [class io.opentelemetry.javaagent.instrumentation.internal.classloader.ClassLoaderInstrumentationModule] injects helper classes +[otel.javaagent 2026-10-24 23:22:38:001 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation internal-eclipse-osgi-3.6 [class io.opentelemetry.javaagent.instrumentation.internal.eclipse.osgi.v3_6.EclipseOsgiInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:38:001 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation internal-eclipse-osgi-3.6 [class io.opentelemetry.javaagent.instrumentation.internal.eclipse.osgi.v3_6.EclipseOsgiInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:38:002 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation internal-lambda [class io.opentelemetry.javaagent.instrumentation.internal.lambda.LambdaInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:38:002 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation internal-lambda [class io.opentelemetry.javaagent.instrumentation.internal.lambda.LambdaInstrumentationModule] injects helper classes +[otel.javaagent 2026-10-24 23:22:38:003 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation internal-reflection [class io.opentelemetry.javaagent.instrumentation.internal.reflection.ReflectionInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:38:003 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation internal-reflection [class io.opentelemetry.javaagent.instrumentation.internal.reflection.ReflectionInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:38:004 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation internal-url-class-loader [class io.opentelemetry.javaagent.instrumentation.internal.urlclassloader.UrlClassLoaderInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:38:004 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation internal-url-class-loader [class io.opentelemetry.javaagent.instrumentation.internal.urlclassloader.UrlClassLoaderInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:38:004 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation elasticsearch-rest-5.0 [class io.opentelemetry.javaagent.instrumentation.elasticsearch.rest.v5_0.ElasticsearchRest5InstrumentationModule] +[otel.javaagent 2026-10-24 23:22:38:004 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation elasticsearch-rest-5.0 [class io.opentelemetry.javaagent.instrumentation.elasticsearch.rest.v5_0.ElasticsearchRest5InstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:38:008 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation apache-httpclient-4.0 [class io.opentelemetry.javaagent.instrumentation.apachehttpclient.v4_0.ApacheHttpClientInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:38:008 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation apache-httpclient-4.0 [class io.opentelemetry.javaagent.instrumentation.apachehttpclient.v4_0.ApacheHttpClientInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:38:009 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation apache-httpasyncclient-4.1 [class io.opentelemetry.javaagent.instrumentation.apachehttpasyncclient.v4_1.ApacheHttpAsyncClientInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:38:009 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation apache-httpasyncclient-4.1 [class io.opentelemetry.javaagent.instrumentation.apachehttpasyncclient.v4_1.ApacheHttpAsyncClientInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:38:009 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation elasticsearch-rest-6.4 [class io.opentelemetry.javaagent.instrumentation.elasticsearch.rest.v6_4.ElasticsearchRest6InstrumentationModule] +[otel.javaagent 2026-10-24 23:22:38:010 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation elasticsearch-rest-6.4 [class io.opentelemetry.javaagent.instrumentation.elasticsearch.rest.v6_4.ElasticsearchRest6InstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:38:013 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation elasticsearch-rest-7.0 [class io.opentelemetry.javaagent.instrumentation.elasticsearch.rest.v7_0.ElasticsearchRest7InstrumentationModule] +[otel.javaagent 2026-10-24 23:22:38:013 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation elasticsearch-rest-7.0 [class io.opentelemetry.javaagent.instrumentation.elasticsearch.rest.v7_0.ElasticsearchRest7InstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:38:019 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation deny-unsafe [class io.opentelemetry.javaagent.testing.instrumentation.DenyUnsafeInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:38:019 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-instrumentation-annotations-1.16 [class io.opentelemetry.javaagent.instrumentation.instrumentationannotations.v1_16.AnnotationInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:38:019 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation deny-unsafe is disabled +[otel.javaagent 2026-10-24 23:22:38:019 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-instrumentation-annotations-1.16 [class io.opentelemetry.javaagent.instrumentation.instrumentationannotations.v1_16.AnnotationInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:38:024 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Installed 38 instrumentation(s) +[otel.javaagent 2026-10-24 23:22:38:024 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller - Loading extension test [class io.opentelemetry.javaagent.testing.bytebuddy.TestAgentExtension] +[otel.javaagent 2026-10-24 23:22:38:033 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller - Installed 2 extension(s) +[otel.javaagent 2026-10-24 23:22:38:037 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.javaagent.shaded.io.opentelemetry.context.StrictContextStorage$PendingScopes -- null +[otel.javaagent 2026-10-24 23:22:38:038 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.javaagent.shaded.io.opentelemetry.context.internal.shaded.WeakConcurrentMap -- null +[otel.javaagent 2026-10-24 23:22:38:040 +0000] [main] DEBUG net.bytebuddy.agent.builder.AgentBuilderUtil - Could not decompose matcher failSafe(try(AnnotationInstrumentationModule#WithSpanInstrumentation(declaresMethods(whereOne((isMethod() and declaresAnnotations(whereOne(ofAnnotationType(name(equals(io.opentelemetry.instrumentation.annotations.WithSpan)))))))))) or false) +[otel.javaagent 2026-10-24 23:22:38:040 +0000] [main] DEBUG net.bytebuddy.agent.builder.AgentBuilderUtil - Could not decompose matcher failSafe(try(AnnotationInstrumentationModule#AddingSpanAttributesInstrumentation(declaresMethods(whereOne((isMethod() and declaresAnnotations(whereOne(ofAnnotationType(name(equals(io.opentelemetry.instrumentation.annotations.AddingSpanAttributes))))) and not(declaresAnnotations(whereOne(ofAnnotationType(name(equals(io.opentelemetry.instrumentation.annotations.WithSpan))))))))))) or false) +[otel.javaagent 2026-10-24 23:22:38:054 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: internal-class-loader [class io.opentelemetry.javaagent.instrumentation.internal.classloader.ClassLoaderInstrumentationModule] on io.opentelemetry.javaagent.bootstrap.AgentClassLoader$BootstrapClassLoaderProxy@21b8d17c +[otel.javaagent 2026-10-24 23:22:38:059 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: internal-url-class-loader [class io.opentelemetry.javaagent.instrumentation.internal.urlclassloader.UrlClassLoaderInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@737edcfa +[otel.javaagent 2026-10-24 23:22:38:123 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.net.URLClassLoader -- null +[otel.javaagent 2026-10-24 23:22:38:135 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed jdk.internal.loader.BuiltinClassLoader -- null +[otel.javaagent 2026-10-24 23:22:38:157 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.lang.ClassLoader -- null +[otel.javaagent 2026-10-24 23:22:38:188 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: executors [class io.opentelemetry.javaagent.instrumentation.executors.ExecutorsInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@5e268ce6 +[otel.javaagent 2026-10-24 23:22:38:192 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.RunnableScheduledFuture +[otel.javaagent 2026-10-24 23:22:38:193 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ScheduledFuture +[otel.javaagent 2026-10-24 23:22:38:193 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.RunnableFuture +[otel.javaagent 2026-10-24 23:22:38:201 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.Future +[otel.javaagent 2026-10-24 23:22:38:202 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for java.util.concurrent.ScheduledExecutorService +[otel.javaagent 2026-10-24 23:22:38:202 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for java.util.concurrent.ScheduledExecutorService +[otel.javaagent 2026-10-24 23:22:38:203 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for java.util.concurrent.ExecutorService +[otel.javaagent 2026-10-24 23:22:38:203 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for java.util.concurrent.ExecutorService +[otel.javaagent 2026-10-24 23:22:38:203 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for java.util.concurrent.Executor +[otel.javaagent 2026-10-24 23:22:38:203 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for java.util.concurrent.Executor +[otel.javaagent 2026-10-24 23:22:38:221 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: internal-lambda [class io.opentelemetry.javaagent.instrumentation.internal.lambda.LambdaInstrumentationModule] on io.opentelemetry.javaagent.bootstrap.AgentClassLoader$BootstrapClassLoaderProxy@21b8d17c +[otel.javaagent 2026-10-24 23:22:38:224 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: internal-reflection [class io.opentelemetry.javaagent.instrumentation.internal.reflection.ReflectionInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@518cf84a +[otel.javaagent 2026-10-24 23:22:38:234 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$java$util$concurrent$Callable$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$java$lang$Runnable$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$java$util$concurrent$Future$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$java$util$concurrent$ForkJoinTask$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext] +[otel.javaagent 2026-10-24 23:22:38:235 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$java$util$concurrent$ForkJoinTask$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$java$util$concurrent$Future$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$java$util$concurrent$Callable$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$java$lang$Runnable$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext] +[otel.javaagent 2026-10-24 23:22:38:241 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ThreadPoolExecutor$Worker -- null +[otel.javaagent 2026-10-24 23:22:38:246 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.Executors$RunnableAdapter -- null +[otel.javaagent 2026-10-24 23:22:38:247 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.Callable -- null +[otel.javaagent 2026-10-24 23:22:38:252 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask -- null +[otel.javaagent 2026-10-24 23:22:38:257 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.FutureTask -- null +[otel.javaagent 2026-10-24 23:22:38:258 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.RunnableScheduledFuture +[otel.javaagent 2026-10-24 23:22:38:260 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.RunnableScheduledFuture -- null +[otel.javaagent 2026-10-24 23:22:38:260 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.RunnableFuture +[otel.javaagent 2026-10-24 23:22:38:262 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.RunnableFuture -- null +[otel.javaagent 2026-10-24 23:22:38:291 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ScheduledThreadPoolExecutor -- null +[otel.javaagent 2026-10-24 23:22:38:324 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ThreadPoolExecutor -- null +[otel.javaagent 2026-10-24 23:22:38:329 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinWorkerThread -- null +[otel.javaagent 2026-10-24 23:22:38:336 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask -- null +[otel.javaagent 2026-10-24 23:22:38:336 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedRunnable -- null +[otel.javaagent 2026-10-24 23:22:38:337 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$AdaptedRunnable +[otel.javaagent 2026-10-24 23:22:38:342 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedRunnable -- null +[otel.javaagent 2026-10-24 23:22:38:343 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedCallable -- null +[otel.javaagent 2026-10-24 23:22:38:348 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedCallable -- null +[otel.javaagent 2026-10-24 23:22:38:349 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedRunnableAction -- null +[otel.javaagent 2026-10-24 23:22:38:349 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$AdaptedRunnableAction +[otel.javaagent 2026-10-24 23:22:38:353 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedRunnableAction -- null +[otel.javaagent 2026-10-24 23:22:38:354 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedInterruptibleRunnable -- null +[otel.javaagent 2026-10-24 23:22:38:355 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$AdaptedInterruptibleRunnable +[otel.javaagent 2026-10-24 23:22:38:358 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedInterruptibleRunnable -- null +[otel.javaagent 2026-10-24 23:22:38:358 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$InterruptibleTask +[otel.javaagent 2026-10-24 23:22:38:363 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$InterruptibleTask -- null +[otel.javaagent 2026-10-24 23:22:38:363 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedInterruptibleCallable -- null +[otel.javaagent 2026-10-24 23:22:38:364 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$AdaptedInterruptibleCallable +[otel.javaagent 2026-10-24 23:22:38:367 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedInterruptibleCallable -- null +[otel.javaagent 2026-10-24 23:22:38:372 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.DelayScheduler -- null +[otel.javaagent 2026-10-24 23:22:38:400 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinPool -- null +[otel.javaagent 2026-10-24 23:22:38:402 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$RunnableExecuteAction -- null +[otel.javaagent 2026-10-24 23:22:38:407 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$RunnableExecuteAction -- null +[otel.javaagent 2026-10-24 23:22:38:408 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.DelayScheduler$ScheduledForkJoinTask -- null +[otel.javaagent 2026-10-24 23:22:38:408 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.DelayScheduler$ScheduledForkJoinTask +[otel.javaagent 2026-10-24 23:22:38:412 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.DelayScheduler$ScheduledForkJoinTask -- null +[otel.javaagent 2026-10-24 23:22:38:413 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$CallableWithTimeout -- null +[otel.javaagent 2026-10-24 23:22:38:413 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$CallableWithTimeout +[otel.javaagent 2026-10-24 23:22:38:417 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$CallableWithTimeout -- null +[otel.javaagent 2026-10-24 23:22:38:438 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.AbstractExecutorService -- null +[otel.javaagent 2026-10-24 23:22:38:439 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.instrumentation.internal.lambda.LambdaTransformerHelper] +[otel.javaagent 2026-10-24 23:22:38:446 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.lang.invoke.InnerClassLambdaMetafactory -- null +[otel.javaagent 2026-10-24 23:22:38:451 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed jdk.internal.reflect.Reflection -- null +[otel.javaagent 2026-10-24 23:22:38:457 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.lang.VirtualThread -- null +[otel.javaagent 2026-10-24 23:22:38:460 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed jdk.internal.misc.CarrierThread -- null +[otel.javaagent 2026-10-24 23:22:38:464 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.lang.Class -- null +[otel.javaagent 2026-10-24 23:22:38:485 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$InterruptibleTask +[otel.javaagent 2026-10-24 23:22:38:488 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$CallableWithTimeout +[otel.javaagent 2026-10-24 23:22:38:493 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$CallableWithTimeout -- null +[otel.javaagent 2026-10-24 23:22:38:494 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.DelayScheduler$ScheduledForkJoinTask +[otel.javaagent 2026-10-24 23:22:38:498 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.DelayScheduler$ScheduledForkJoinTask -- null +[otel.javaagent 2026-10-24 23:22:38:503 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$RunnableExecuteAction -- null +[otel.javaagent 2026-10-24 23:22:38:504 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$AdaptedInterruptibleCallable +[otel.javaagent 2026-10-24 23:22:38:508 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedInterruptibleCallable -- null +[otel.javaagent 2026-10-24 23:22:38:509 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$AdaptedInterruptibleRunnable +[otel.javaagent 2026-10-24 23:22:38:513 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedInterruptibleRunnable -- null +[otel.javaagent 2026-10-24 23:22:38:513 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$InterruptibleTask +[otel.javaagent 2026-10-24 23:22:38:517 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$InterruptibleTask -- null +[otel.javaagent 2026-10-24 23:22:38:518 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$AdaptedRunnableAction +[otel.javaagent 2026-10-24 23:22:38:522 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedRunnableAction -- null +[otel.javaagent 2026-10-24 23:22:38:528 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedCallable -- null +[otel.javaagent 2026-10-24 23:22:38:528 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$AdaptedRunnable +[otel.javaagent 2026-10-24 23:22:38:533 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedRunnable -- null +[otel.javaagent 2026-10-24 23:22:38:562 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: internal-class-loader [class io.opentelemetry.javaagent.instrumentation.internal.classloader.ClassLoaderInstrumentationModule] on jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc +[otel.javaagent 2026-10-24 23:22:38:570 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed worker.org.gradle.internal.classloader.FilteringClassLoader -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc +[otel.javaagent 2026-10-24 23:22:38:581 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed worker.org.gradle.internal.classloader.FilteringClassLoader$RetrieveSystemPackagesClassLoader -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + +Gradle Test Executor 28 STANDARD_ERROR + [otel.javaagent 2026-10-24 23:22:38:897 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: executors [class io.opentelemetry.javaagent.instrumentation.executors.ExecutorsInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@457a5b2d + [otel.javaagent 2026-10-24 23:22:38:908 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.junit.platform.commons.util.ReflectionUtils$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:38:910 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.junit.platform.commons.function.Try$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:38:927 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: elasticsearch-rest-5.0 [class io.opentelemetry.javaagent.instrumentation.elasticsearch.rest.v5_0.ElasticsearchRest5InstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@47a4eee2 + [otel.javaagent 2026-10-24 23:22:38:927 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$org$elasticsearch$client$RestClient$io$opentelemetry$javaagent$shaded$instrumentation$api$incubator$semconv$db$internal$DbServerTarget] + [otel.javaagent 2026-10-24 23:22:38:928 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$org$elasticsearch$client$RestClient$io$opentelemetry$javaagent$shaded$instrumentation$api$incubator$semconv$db$internal$DbServerTarget] + [otel.javaagent 2026-10-24 23:22:38:931 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$org$elasticsearch$client$RestClient$io$opentelemetry$javaagent$shaded$instrumentation$api$incubator$semconv$db$internal$DbServerTarget] + [otel.javaagent 2026-10-24 23:22:38:931 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$org$elasticsearch$client$RestClient$io$opentelemetry$javaagent$shaded$instrumentation$api$incubator$semconv$db$internal$DbServerTarget] + [otel.javaagent 2026-10-24 23:22:38:932 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$org$elasticsearch$client$RestClient$io$opentelemetry$javaagent$shaded$instrumentation$api$incubator$semconv$db$internal$DbServerTarget, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$org$elasticsearch$client$Request$io$opentelemetry$javaagent$instrumentation$elasticsearch$rest$common$v5_0$ElasticsearchEndpointDefinition] + [otel.javaagent 2026-10-24 23:22:38:932 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$org$elasticsearch$client$RestClient$io$opentelemetry$javaagent$shaded$instrumentation$api$incubator$semconv$db$internal$DbServerTarget, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$org$elasticsearch$client$Request$io$opentelemetry$javaagent$instrumentation$elasticsearch$rest$common$v5_0$ElasticsearchEndpointDefinition] + [otel.javaagent 2026-10-24 23:22:38:935 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.elasticsearch.client.RestClient -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:39:027 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:39:058 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.junit.platform.commons.util.ReflectionUtils$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:39:138 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed ch.qos.logback.core.hook.ShutdownHook -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:39:212 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.56 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_56.incubator.OpenTelemetryApiIncubatorInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@100d0218 + [otel.javaagent 2026-10-24 23:22:39:236 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.65 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_65.incubator.OpenTelemetryApiIncubatorInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@56e5c8fb + [otel.javaagent 2026-10-24 23:22:39:241 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.63 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_63.OpenTelemetryApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@41e8d917 + [otel.javaagent 2026-10-24 23:22:39:251 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.27 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_27.OpenTelemetryApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@51f01535 + [otel.javaagent 2026-10-24 23:22:39:259 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.38 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_38.incubator.OpenTelemetryApiIncubatorInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@7f8c48f3 + [otel.javaagent 2026-10-24 23:22:39:266 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.32 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_32.OpenTelemetryApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@58b97c15 + [otel.javaagent 2026-10-24 23:22:39:272 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.15 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_15.OpenTelemetryApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@4b691611 + [otel.javaagent 2026-10-24 23:22:39:278 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.10 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.OpenTelemetryApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@eded048 + [otel.javaagent 2026-10-24 23:22:39:282 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.4 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_4.OpenTelemetryApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@b5de9ac + [otel.javaagent 2026-10-24 23:22:39:283 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.59 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_59.OpenTelemetryApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@31940704 + [otel.javaagent 2026-10-24 23:22:39:288 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.0 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_0.OpenTelemetryApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@5a48d186 + [otel.javaagent 2026-10-24 23:22:39:289 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.57 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_57.OpenTelemetryApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@37ffe4f3 + [otel.javaagent 2026-10-24 23:22:39:300 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.api.GlobalOpenTelemetry -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + +ElasticsearchRest5Test STANDARD_ERROR + [otel.javaagent 2026-10-24 23:22:39:459 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for org.testcontainers.utility.LazyFuture + [otel.javaagent 2026-10-24 23:22:39:460 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for org.testcontainers.images.RemoteDockerImage + [otel.javaagent 2026-10-24 23:22:39:462 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.images.RemoteDockerImage -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:39:478 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture + [otel.javaagent 2026-10-24 23:22:39:481 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture -- null + [otel.javaagent 2026-10-24 23:22:39:483 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$Completion + [otel.javaagent 2026-10-24 23:22:39:487 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$Completion -- null + [otel.javaagent 2026-10-24 23:22:39:490 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$BiCompletion -- null + [otel.javaagent 2026-10-24 23:22:39:491 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniCompletion + [otel.javaagent 2026-10-24 23:22:39:493 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$CoCompletion + [otel.javaagent 2026-10-24 23:22:39:494 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniCompletion -- null + [otel.javaagent 2026-10-24 23:22:39:496 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$CoCompletion -- null + [otel.javaagent 2026-10-24 23:22:39:499 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$BiRelay -- null + [otel.javaagent 2026-10-24 23:22:39:500 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$Signaller + [otel.javaagent 2026-10-24 23:22:39:502 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$Signaller -- null + [otel.javaagent 2026-10-24 23:22:39:502 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniApply + [otel.javaagent 2026-10-24 23:22:39:504 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniApply -- null + [otel.javaagent 2026-10-24 23:22:39:504 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniAccept + [otel.javaagent 2026-10-24 23:22:39:506 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniAccept -- null + [otel.javaagent 2026-10-24 23:22:39:506 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniRun + [otel.javaagent 2026-10-24 23:22:39:508 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniRun -- null + [otel.javaagent 2026-10-24 23:22:39:510 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$BiApply -- null + [otel.javaagent 2026-10-24 23:22:39:510 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$BiAccept + [otel.javaagent 2026-10-24 23:22:39:512 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$BiAccept -- null + [otel.javaagent 2026-10-24 23:22:39:512 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$BiRun + [otel.javaagent 2026-10-24 23:22:39:515 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$BiRun -- null + [otel.javaagent 2026-10-24 23:22:39:515 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$OrApply + [otel.javaagent 2026-10-24 23:22:39:518 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$OrApply -- null + [otel.javaagent 2026-10-24 23:22:39:518 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$OrAccept + [otel.javaagent 2026-10-24 23:22:39:520 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$OrAccept -- null + [otel.javaagent 2026-10-24 23:22:39:520 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$OrRun + [otel.javaagent 2026-10-24 23:22:39:522 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$OrRun -- null + [otel.javaagent 2026-10-24 23:22:39:523 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniCompose + [otel.javaagent 2026-10-24 23:22:39:525 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniCompose -- null + [otel.javaagent 2026-10-24 23:22:39:525 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniRelay + [otel.javaagent 2026-10-24 23:22:39:527 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniRelay -- null + [otel.javaagent 2026-10-24 23:22:39:527 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniWhenComplete + [otel.javaagent 2026-10-24 23:22:39:529 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniWhenComplete -- null + [otel.javaagent 2026-10-24 23:22:39:529 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniHandle + [otel.javaagent 2026-10-24 23:22:39:531 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniHandle -- null + [otel.javaagent 2026-10-24 23:22:39:531 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniExceptionally + [otel.javaagent 2026-10-24 23:22:39:538 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniComposeExceptionally + [otel.javaagent 2026-10-24 23:22:39:538 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniExceptionally -- null + [otel.javaagent 2026-10-24 23:22:39:541 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniComposeExceptionally -- null + [otel.javaagent 2026-10-24 23:22:39:542 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$MinimalStage + [otel.javaagent 2026-10-24 23:22:39:543 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$MinimalStage -- null + [otel.javaagent 2026-10-24 23:22:39:544 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$AnyOf + [otel.javaagent 2026-10-24 23:22:39:547 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$AnyOf -- null + [otel.javaagent 2026-10-24 23:22:39:675 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.RecursiveTask + [otel.javaagent 2026-10-24 23:22:39:679 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.RecursiveTask -- null + [otel.javaagent 2026-10-24 23:22:39:696 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.shaded.com.fasterxml.jackson.databind.util.internal.PrivateMaxEntriesMap$AddTask -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:39:799 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.dockerclient.DockerClientProviderStrategy$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:39:831 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for java.util.concurrent.Executors$AutoShutdownDelegatedExecutorService + [otel.javaagent 2026-10-24 23:22:39:831 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for java.util.concurrent.Executors$AutoShutdownDelegatedExecutorService + [otel.javaagent 2026-10-24 23:22:39:846 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.Executors$DelegatedExecutorService -- null + [otel.javaagent 2026-10-24 23:22:39:848 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.Executors$AutoShutdownDelegatedExecutorService$$Lambda -- null + [otel.javaagent 2026-10-24 23:22:39:850 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.shaded.org.awaitility.core.ConditionAwaiter$ConditionPoller -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:40:065 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for com.github.dockerjava.zerodep.shaded.org.apache.hc.core5.concurrent.BasicFuture + [otel.javaagent 2026-10-24 23:22:40:066 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed com.github.dockerjava.zerodep.shaded.org.apache.hc.core5.concurrent.BasicFuture -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:40:066 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for com.github.dockerjava.zerodep.shaded.org.apache.hc.core5.pool.StrictConnPool$1 + [otel.javaagent 2026-10-24 23:22:40:066 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed com.github.dockerjava.zerodep.shaded.org.apache.hc.core5.pool.StrictConnPool$1 -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:40:272 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.containers.GenericContainer$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:40:498 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.containers.GenericContainer$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:40:502 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for org.testcontainers.shaded.org.awaitility.core.SameThreadExecutorService + [otel.javaagent 2026-10-24 23:22:40:502 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for org.testcontainers.shaded.org.awaitility.core.SameThreadExecutorService + [otel.javaagent 2026-10-24 23:22:40:609 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.shaded.com.github.dockerjava.core.DefaultInvocationBuilder$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:40:662 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.utility.RyukResourceReaper$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:40:665 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.utility.RyukResourceReaper$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:40:693 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.utility.MountableFile$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:40:699 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.containers.ContainerState$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:44:000 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: apache-httpasyncclient-4.1 [class io.opentelemetry.javaagent.instrumentation.apachehttpasyncclient.v4_1.ApacheHttpAsyncClientInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@f13e0a2 + [otel.javaagent 2026-10-24 23:22:44:004 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.nio.client.HttpAsyncClient -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:44:005 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.impl.nio.client.CloseableHttpAsyncClient -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:44:012 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.nio.client.HttpPipeliningClient -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:44:015 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.impl.nio.client.CloseableHttpPipeliningClient -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:44:018 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.impl.nio.client.CloseableHttpAsyncClientBase -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:44:027 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.impl.nio.client.InternalHttpAsyncClient -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:44:050 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:44:081 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.impl.nio.client.CloseableHttpAsyncClientBase$1 -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + +ElasticsearchRest5Test > recordsFailureResponseStatus() STANDARD_ERROR + [otel.javaagent 2026-10-24 23:22:44:177 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for org.apache.http.concurrent.BasicFuture + [otel.javaagent 2026-10-24 23:22:44:179 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.concurrent.BasicFuture -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:44:451 +0000] [I/O dispatcher 1] INFO io.opentelemetry.exporter.logging.LoggingSpanExporter - 'HEAD' : 8141d57f080bbe024eb6fe309a762e86 fdd2088bb1228d2d CLIENT [tracer: io.opentelemetry.apache-httpasyncclient-4.1:3.0.0-alpha-SNAPSHOT] AttributesMap{data={server.address=localhost, server.port=32868, error.type=404, http.request.method=HEAD, http.response.status_code=404, network.protocol.version=1.1, peer.service=test-peer-service, url.full=http://localhost:32868/missing-index}, capacity=128, totalAddedValues=8} + [otel.javaagent 2026-10-24 23:22:44:452 +0000] [I/O dispatcher 1] INFO io.opentelemetry.javaagent.testing.exporter.OtlpInMemorySpanExporter - Exporting span SpanData{spanContext=ImmutableSpanContext{traceId=8141d57f080bbe024eb6fe309a762e86, spanId=fdd2088bb1228d2d, traceFlags=03, traceState=ArrayBasedTraceState{entries=[]}, remote=false, valid=true}, parentSpanContext=ImmutableSpanContext{traceId=8141d57f080bbe024eb6fe309a762e86, spanId=ce084bdc3987cf80, traceFlags=03, traceState=ArrayBasedTraceState{entries=[]}, remote=false, valid=true}, resource=Resource{schemaUrl=https://opentelemetry.io/schemas/1.40.0, entities=[SdkEntity{type=service.instance, id={service.instance.id="00b80a84-5b9e-4151-8c50-90f075550852"}, description={}, schemaUrl=https://opentelemetry.io/schemas/1.40.0}], attributes={service.instance.id="00b80a84-5b9e-4151-8c50-90f075550852", service.name="unknown_service:java", telemetry.distro.name="opentelemetry-javaagent", telemetry.distro.version="3.0.0-SNAPSHOT", telemetry.sdk.language="java", telemetry.sdk.name="opentelemetry", telemetry.sdk.version="1.67.0"}}, instrumentationScopeInfo=InstrumentationScopeInfo{name=io.opentelemetry.apache-httpasyncclient-4.1, version=3.0.0-alpha-SNAPSHOT, schemaUrl=https://opentelemetry.io/schemas/1.41.0, attributes={}}, name=HEAD, kind=CLIENT, startEpochNanos=1792884164193040288, endEpochNanos=1792884164450766243, attributes=AttributesMap{data={server.address=localhost, server.port=32868, error.type=404, http.request.method=HEAD, http.response.status_code=404, network.protocol.version=1.1, peer.service=test-peer-service, url.full=http://localhost:32868/missing-index}, capacity=128, totalAddedValues=8}, totalAttributeCount=8, events=[], totalRecordedEvents=0, links=[], totalRecordedLinks=0, status=ImmutableStatusData{statusCode=ERROR, description=}, hasEnded=true} + [otel.javaagent 2026-10-24 23:22:44:469 +0000] [I/O dispatcher 1] INFO io.opentelemetry.exporter.logging.LoggingSpanExporter - 'localhost:32868' : 8141d57f080bbe024eb6fe309a762e86 ce084bdc3987cf80 CLIENT [tracer: io.opentelemetry.elasticsearch-rest-5.0:3.0.0-alpha-SNAPSHOT] AttributesMap{data={server.address=localhost, server.port=32868, error.type=404, http.request.method=HEAD, db.system.name=elasticsearch, db.response.status_code=404, url.full=http://localhost:32868/missing-index}, capacity=128, totalAddedValues=7} + [otel.javaagent 2026-10-24 23:22:44:469 +0000] [I/O dispatcher 1] INFO io.opentelemetry.javaagent.testing.exporter.OtlpInMemorySpanExporter - Exporting span SpanData{spanContext=ImmutableSpanContext{traceId=8141d57f080bbe024eb6fe309a762e86, spanId=ce084bdc3987cf80, traceFlags=03, traceState=ArrayBasedTraceState{entries=[]}, remote=false, valid=true}, parentSpanContext=ImmutableSpanContext{traceId=00000000000000000000000000000000, spanId=0000000000000000, traceFlags=00, traceState=ArrayBasedTraceState{entries=[]}, remote=false, valid=false}, resource=Resource{schemaUrl=https://opentelemetry.io/schemas/1.40.0, entities=[SdkEntity{type=service.instance, id={service.instance.id="00b80a84-5b9e-4151-8c50-90f075550852"}, description={}, schemaUrl=https://opentelemetry.io/schemas/1.40.0}], attributes={service.instance.id="00b80a84-5b9e-4151-8c50-90f075550852", service.name="unknown_service:java", telemetry.distro.name="opentelemetry-javaagent", telemetry.distro.version="3.0.0-SNAPSHOT", telemetry.sdk.language="java", telemetry.sdk.name="opentelemetry", telemetry.sdk.version="1.67.0"}}, instrumentationScopeInfo=InstrumentationScopeInfo{name=io.opentelemetry.elasticsearch-rest-5.0, version=3.0.0-alpha-SNAPSHOT, schemaUrl=https://opentelemetry.io/schemas/1.44.0, attributes={}}, name=localhost:32868, kind=CLIENT, startEpochNanos=1792884164169812858, endEpochNanos=1792884164469333898, attributes=AttributesMap{data={server.address=localhost, server.port=32868, error.type=404, http.request.method=HEAD, db.system.name=elasticsearch, db.response.status_code=404, url.full=http://localhost:32868/missing-index}, capacity=128, totalAddedValues=7}, totalAttributeCount=7, events=[], totalRecordedEvents=0, links=[], totalRecordedLinks=0, status=ImmutableStatusData{statusCode=UNSET, description=}, hasEnded=true} + [otel.javaagent 2026-10-24 23:22:44:507 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.instrumentation.testing.InstrumentationTestRunner$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:44:621 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.awaitility.core.ConditionAwaiter$ConditionPoller -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:54:593 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.context.internal.shaded.AbstractWeakConcurrentMap -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:54:594 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.context.internal.shaded.WeakConcurrentMap -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:54:601 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.context.StrictContextStorage$PendingScopes -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:54:607 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.context.ContextStorageWrappers -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:54:612 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.context.ArrayBasedContext -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:54:656 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-instrumentation-api-1.14 [class io.opentelemetry.javaagent.instrumentation.instrumentationapi.v1_14.InstrumentationApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@55a5eea3 + [otel.javaagent 2026-10-24 23:22:54:662 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.instrumentation.api.internal.HttpRouteState -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:54:679 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.instrumentation.api.internal.SpanKey -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:54:679 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.instrumentation.testing.util.ContextStorageCloser$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + +ElasticsearchRest5Test > recordsFailureResponseStatus() FAILED + org.opentest4j.AssertionFailedError: [Span 1] Expected span to have name but was + at app//io.opentelemetry.javaagent.instrumentation.elasticsearch.rest.v5_0.ElasticsearchRest5Test.lambda$recordsFailureResponseStatus$2(ElasticsearchRest5Test.java:117) + at app//io.opentelemetry.sdk.testing.assertj.TraceAssert.hasSpansSatisfyingExactly(TraceAssert.java:65) + at app//io.opentelemetry.sdk.testing.assertj.TraceAssert.hasSpansSatisfyingExactly(TraceAssert.java:49) + at app//io.opentelemetry.javaagent.instrumentation.elasticsearch.rest.v5_0.ElasticsearchRest5Test.lambda$recordsFailureResponseStatus$0(ElasticsearchRest5Test.java:103) + at app//io.opentelemetry.sdk.testing.assertj.TracesAssert.hasTracesSatisfyingExactly(TracesAssert.java:108) + at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.doAssertTraces(InstrumentationTestRunner.java:191) + at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.lambda$waitAndAssertTraces$0(InstrumentationTestRunner.java:177) + at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.awaitUntilAsserted(InstrumentationTestRunner.java:497) + at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.awaitUntilAsserted(InstrumentationTestRunner.java:480) + at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.waitAndAssertTraces(InstrumentationTestRunner.java:177) + at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.waitAndAssertTraces(InstrumentationTestRunner.java:167) + at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.waitAndAssertTraces(InstrumentationTestRunner.java:163) + at app//io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension.waitAndAssertTraces(InstrumentationExtension.java:167) + at app//io.opentelemetry.javaagent.instrumentation.elasticsearch.rest.v5_0.ElasticsearchRest5Test.recordsFailureResponseStatus(ElasticsearchRest5Test.java:101) + +> Task :instrumentation:opensearch:opensearch-rest-1.0:javaagent:test + [otel.javaagent 2026-10-24 23:22:34:694 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.context.internal.shaded.AbstractWeakConcurrentMap -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:34:697 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.context.internal.shaded.WeakConcurrentMap -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:34:697 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.context.StrictContextStorage$PendingScopes -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:34:700 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.context.ContextStorageWrappers -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:34:703 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.context.ArrayBasedContext -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:34:710 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-instrumentation-api-1.14 [class io.opentelemetry.javaagent.instrumentation.instrumentationapi.v1_14.InstrumentationApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@1ecd09d5 + [otel.javaagent 2026-10-24 23:22:34:712 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.instrumentation.api.internal.HttpRouteState -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:34:716 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.instrumentation.api.internal.SpanKey -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:34:719 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.instrumentation.testing.util.ContextStorageCloser$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + +OpenSearchRestTest > recordsFailureResponseStatus() FAILED + org.opentest4j.AssertionFailedError: [Span 1] Expected span to have name but was + at app//io.opentelemetry.javaagent.instrumentation.opensearch.rest.common.AbstractOpenSearchRestTest.lambda$recordsFailureResponseStatus$2(AbstractOpenSearchRestTest.java:107) + at app//io.opentelemetry.sdk.testing.assertj.TraceAssert.hasSpansSatisfyingExactly(TraceAssert.java:65) + at app//io.opentelemetry.sdk.testing.assertj.TraceAssert.hasSpansSatisfyingExactly(TraceAssert.java:49) + at app//io.opentelemetry.javaagent.instrumentation.opensearch.rest.common.AbstractOpenSearchRestTest.lambda$recordsFailureResponseStatus$0(AbstractOpenSearchRestTest.java:93) + at app//io.opentelemetry.sdk.testing.assertj.TracesAssert.hasTracesSatisfyingExactly(TracesAssert.java:108) + at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.doAssertTraces(InstrumentationTestRunner.java:191) + at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.lambda$waitAndAssertTraces$0(InstrumentationTestRunner.java:177) + at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.awaitUntilAsserted(InstrumentationTestRunner.java:497) + at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.awaitUntilAsserted(InstrumentationTestRunner.java:480) + at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.waitAndAssertTraces(InstrumentationTestRunner.java:177) + at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.waitAndAssertTraces(InstrumentationTestRunner.java:167) + at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.waitAndAssertTraces(InstrumentationTestRunner.java:163) + at app//io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension.waitAndAssertTraces(InstrumentationExtension.java:167) + at app//io.opentelemetry.javaagent.instrumentation.opensearch.rest.common.AbstractOpenSearchRestTest.recordsFailureResponseStatus(AbstractOpenSearchRestTest.java:91) + at java.base@25.0.4.1/java.lang.reflect.Method.invoke(Method.java:565) + at java.base@25.0.4.1/java.util.ArrayList.forEach(ArrayList.java:1604) + at java.base@25.0.4.1/java.util.ArrayList.forEach(ArrayList.java:1604) + +OpenSearchRestTest > shouldGetStatusWithTraces() STANDARD_ERROR + [otel.javaagent 2026-10-24 23:22:34:752 +0000] [I/O dispatcher 1] INFO io.opentelemetry.exporter.logging.LoggingSpanExporter - 'GET' : 61bf1322c71034621751c66f7c2d977f 221d48d947f2c13f CLIENT [tracer: io.opentelemetry.apache-httpasyncclient-4.1:3.0.0-alpha-SNAPSHOT] AttributesMap{data={url.full=https://localhost:32862/_cluster/health, server.address=localhost, http.response.status_code=200, http.request.method=GET, server.port=32862, network.protocol.version=1.1, peer.service=test-peer-service}, capacity=128, totalAddedValues=7} + [otel.javaagent 2026-10-24 23:22:34:752 +0000] [I/O dispatcher 1] INFO io.opentelemetry.javaagent.testing.exporter.OtlpInMemorySpanExporter - Exporting span SpanData{spanContext=ImmutableSpanContext{traceId=61bf1322c71034621751c66f7c2d977f, spanId=221d48d947f2c13f, traceFlags=03, traceState=ArrayBasedTraceState{entries=[]}, remote=false, valid=true}, parentSpanContext=ImmutableSpanContext{traceId=61bf1322c71034621751c66f7c2d977f, spanId=29c663537051bf8d, traceFlags=03, traceState=ArrayBasedTraceState{entries=[]}, remote=false, valid=true}, resource=Resource{schemaUrl=https://opentelemetry.io/schemas/1.40.0, entities=[SdkEntity{type=service.instance, id={service.instance.id="28f21fc4-7a94-411f-b38e-1d5c5dfafb9a"}, description={}, schemaUrl=https://opentelemetry.io/schemas/1.40.0}], attributes={service.instance.id="28f21fc4-7a94-411f-b38e-1d5c5dfafb9a", service.name="unknown_service:java", telemetry.distro.name="opentelemetry-javaagent", telemetry.distro.version="3.0.0-SNAPSHOT", telemetry.sdk.language="java", telemetry.sdk.name="opentelemetry", telemetry.sdk.version="1.67.0"}}, instrumentationScopeInfo=InstrumentationScopeInfo{name=io.opentelemetry.apache-httpasyncclient-4.1, version=3.0.0-alpha-SNAPSHOT, schemaUrl=https://opentelemetry.io/schemas/1.41.0, attributes={}}, name=GET, kind=CLIENT, startEpochNanos=1792884154738154201, endEpochNanos=1792884154751947154, attributes=AttributesMap{data={url.full=https://localhost:32862/_cluster/health, server.address=localhost, http.response.status_code=200, http.request.method=GET, server.port=32862, network.protocol.version=1.1, peer.service=test-peer-service}, capacity=128, totalAddedValues=7}, totalAttributeCount=7, events=[], totalRecordedEvents=0, links=[], totalRecordedLinks=0, status=ImmutableStatusData{statusCode=UNSET, description=}, hasEnded=true} + [otel.javaagent 2026-10-24 23:22:34:752 +0000] [Test worker] INFO io.opentelemetry.exporter.logging.LoggingSpanExporter - 'GET localhost:32862' : 61bf1322c71034621751c66f7c2d977f 29c663537051bf8d CLIENT [tracer: io.opentelemetry.opensearch-rest-1.0:3.0.0-alpha-SNAPSHOT] AttributesMap{data={server.address=localhost, db.system.name=opensearch, db.operation.name=GET, server.port=32862}, capacity=128, totalAddedValues=4} + [otel.javaagent 2026-10-24 23:22:34:752 +0000] [Test worker] INFO io.opentelemetry.javaagent.testing.exporter.OtlpInMemorySpanExporter - Exporting span SpanData{spanContext=ImmutableSpanContext{traceId=61bf1322c71034621751c66f7c2d977f, spanId=29c663537051bf8d, traceFlags=03, traceState=ArrayBasedTraceState{entries=[]}, remote=false, valid=true}, parentSpanContext=ImmutableSpanContext{traceId=00000000000000000000000000000000, spanId=0000000000000000, traceFlags=00, traceState=ArrayBasedTraceState{entries=[]}, remote=false, valid=false}, resource=Resource{schemaUrl=https://opentelemetry.io/schemas/1.40.0, entities=[SdkEntity{type=service.instance, id={service.instance.id="28f21fc4-7a94-411f-b38e-1d5c5dfafb9a"}, description={}, schemaUrl=https://opentelemetry.io/schemas/1.40.0}], attributes={service.instance.id="28f21fc4-7a94-411f-b38e-1d5c5dfafb9a", service.name="unknown_service:java", telemetry.distro.name="opentelemetry-javaagent", telemetry.distro.version="3.0.0-SNAPSHOT", telemetry.sdk.language="java", telemetry.sdk.name="opentelemetry", telemetry.sdk.version="1.67.0"}}, instrumentationScopeInfo=InstrumentationScopeInfo{name=io.opentelemetry.opensearch-rest-1.0, version=3.0.0-alpha-SNAPSHOT, schemaUrl=https://opentelemetry.io/schemas/1.44.0, attributes={}}, name=GET localhost:32862, kind=CLIENT, startEpochNanos=1792884154737437582, endEpochNanos=1792884154752003704, attributes=AttributesMap{data={server.address=localhost, db.system.name=opensearch, db.operation.name=GET, server.port=32862}, capacity=128, totalAddedValues=4}, totalAttributeCount=4, events=[], totalRecordedEvents=0, links=[], totalRecordedLinks=0, status=ImmutableStatusData{statusCode=UNSET, description=}, hasEnded=true} + +OpenSearchRestTest > shouldGetStatusWithTraces() FAILED + org.opentest4j.AssertionFailedError: [Span 1] Expected span to have name but was + at app//io.opentelemetry.javaagent.instrumentation.opensearch.rest.common.AbstractOpenSearchRestTest.lambda$shouldGetStatusWithTraces$2(AbstractOpenSearchRestTest.java:128) + at app//io.opentelemetry.sdk.testing.assertj.TraceAssert.hasSpansSatisfyingExactly(TraceAssert.java:65) + at app//io.opentelemetry.sdk.testing.assertj.TraceAssert.hasSpansSatisfyingExactly(TraceAssert.java:49) + at app//io.opentelemetry.javaagent.instrumentation.opensearch.rest.common.AbstractOpenSearchRestTest.lambda$shouldGetStatusWithTraces$0(AbstractOpenSearchRestTest.java:118) + at app//io.opentelemetry.sdk.testing.assertj.TracesAssert.hasTracesSatisfyingExactly(TracesAssert.java:108) + at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.doAssertTraces(InstrumentationTestRunner.java:191) + at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.lambda$waitAndAssertTraces$0(InstrumentationTestRunner.java:177) + at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.awaitUntilAsserted(InstrumentationTestRunner.java:497) + at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.awaitUntilAsserted(InstrumentationTestRunner.java:480) + at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.waitAndAssertTraces(InstrumentationTestRunner.java:177) + at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.waitAndAssertTraces(InstrumentationTestRunner.java:167) + at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.waitAndAssertTraces(InstrumentationTestRunner.java:163) + at app//io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension.waitAndAssertTraces(InstrumentationExtension.java:167) + at app//io.opentelemetry.javaagent.instrumentation.opensearch.rest.common.AbstractOpenSearchRestTest.shouldGetStatusWithTraces(AbstractOpenSearchRestTest.java:116) + at java.base@25.0.4.1/java.lang.reflect.Method.invoke(Method.java:565) + at java.base@25.0.4.1/java.util.ArrayList.forEach(ArrayList.java:1604) + at java.base@25.0.4.1/java.util.ArrayList.forEach(ArrayList.java:1604) +OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended +[otel.javaagent 2026-10-24 23:22:45:305 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.ExtensionClassLoader - Loaded extension jar file "/tmp/otel-extensions16140003030239743488/opentelemetry-agent-exporter-3.0.0-alpha-SNAPSHOT-all.jar" +[otel.javaagent 2026-10-24 23:22:45:319 +0000] [main] INFO io.opentelemetry.javaagent.tooling.VersionLogger - opentelemetry-javaagent - version: 3.0.0-SNAPSHOT +[otel.javaagent 2026-10-24 23:22:45:319 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.VersionLogger - Running on Java 25.0.4.1. JVM OpenJDK 64-Bit Server VM - Eclipse Adoptium - 25.0.4.1+1-LTS +[otel.javaagent 2026-10-24 23:22:45:319 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller - io.opentelemetry.javaagent.tooling.AgentInstaller loaded on io.opentelemetry.javaagent.bootstrap.AgentClassLoader@5010be6 +[otel.javaagent 2026-10-24 23:22:45:621 +0000] [main] DEBUG io.opentelemetry.javaagent.testing.exporter.OtlpInMemoryMetricExporter - Setting aggregation temporality to DELTA +[otel.javaagent 2026-10-24 23:22:45:729 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$java$util$concurrent$Callable$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$java$lang$Runnable$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$java$util$concurrent$Future$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$java$util$concurrent$ForkJoinTask$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext] +[otel.javaagent 2026-10-24 23:22:45:735 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$java$util$concurrent$ForkJoinTask$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$java$util$concurrent$Future$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$java$util$concurrent$Callable$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$java$lang$Runnable$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext] +[otel.javaagent 2026-10-24 23:22:45:741 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.ExposeAgentBootstrapListener - Adding module read from module java.base to unnamed module @1253e7cb +[otel.javaagent 2026-10-24 23:22:45:741 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask -- null +[otel.javaagent 2026-10-24 23:22:45:744 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.FutureTask -- null +[otel.javaagent 2026-10-24 23:22:45:745 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.Executors$RunnableAdapter -- null +[otel.javaagent 2026-10-24 23:22:45:747 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ThreadPoolExecutor$Worker -- null +[otel.javaagent 2026-10-24 23:22:45:793 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.lang.ApplicationShutdownHooks$1 -- null +[otel.javaagent 2026-10-24 23:22:45:822 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller - Loading extension instrumentation-loader [class io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader] +[otel.javaagent 2026-10-24 23:22:45:855 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.56 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_56.incubator.OpenTelemetryApiIncubatorInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:45:855 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.56 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_56.incubator.OpenTelemetryApiIncubatorInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:45:873 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.65 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_65.incubator.OpenTelemetryApiIncubatorInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:45:873 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.65 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_65.incubator.OpenTelemetryApiIncubatorInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:45:874 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.63 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_63.OpenTelemetryApiInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:45:874 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.63 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_63.OpenTelemetryApiInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:45:874 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.63 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_63.incubator.OpenTelemetryApiIncubatorInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:45:874 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.63 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_63.incubator.OpenTelemetryApiIncubatorInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:45:875 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.50 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_50.OpenTelemetryApiInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:45:875 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.50 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_50.OpenTelemetryApiInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:45:875 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.50 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_50.incubator.OpenTelemetryApiIncubatorInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:45:875 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.50 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_50.incubator.OpenTelemetryApiIncubatorInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:45:876 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.47 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_47.incubator.OpenTelemetryApiIncubatorInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:45:876 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.47 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_47.incubator.OpenTelemetryApiIncubatorInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:45:876 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.42 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_42.OpenTelemetryApiInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:45:877 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.42 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_42.OpenTelemetryApiInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:45:877 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.42 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_42.incubator.OpenTelemetryApiIncubatorInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:45:877 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.42 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_42.incubator.OpenTelemetryApiIncubatorInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:45:877 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.40 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.OpenTelemetryApiIncubatorInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:45:878 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.27 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_27.OpenTelemetryApiInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:45:878 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.40 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.OpenTelemetryApiIncubatorInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:45:878 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.27 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_27.OpenTelemetryApiInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:45:878 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.38 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_38.OpenTelemetryApiInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:45:878 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.38 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_38.OpenTelemetryApiInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:45:879 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.38 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_38.incubator.OpenTelemetryApiIncubatorInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:45:879 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.38 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_38.incubator.OpenTelemetryApiIncubatorInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:45:879 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.32 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_32.OpenTelemetryApiInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:45:880 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.32 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_32.incubator.OpenTelemetryApiIncubatorInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:45:880 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.32 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_32.OpenTelemetryApiInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:45:880 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.32 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_32.incubator.OpenTelemetryApiIncubatorInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:45:880 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.31 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_31.incubator.OpenTelemetryApiInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:45:880 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.31 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_31.incubator.OpenTelemetryApiInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:45:881 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.37 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_37.incubator.OpenTelemetryApiInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:45:881 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.37 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_37.incubator.OpenTelemetryApiInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:45:881 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.15 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_15.OpenTelemetryApiInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:45:881 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.15 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_15.OpenTelemetryApiInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:45:882 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.10 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.OpenTelemetryApiInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:45:882 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.10 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.OpenTelemetryApiInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:45:882 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.4 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_4.OpenTelemetryApiInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:45:882 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.4 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_4.OpenTelemetryApiInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:45:883 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.59 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_59.OpenTelemetryApiInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:45:883 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.59 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_59.OpenTelemetryApiInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:45:883 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-instrumentation-api-1.14 [class io.opentelemetry.javaagent.instrumentation.instrumentationapi.v1_14.InstrumentationApiInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:45:883 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-instrumentation-api-1.14 [class io.opentelemetry.javaagent.instrumentation.instrumentationapi.v1_14.InstrumentationApiInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:45:884 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.0 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_0.OpenTelemetryApiInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:45:884 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.0 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_0.OpenTelemetryApiInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:45:886 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.57 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_57.OpenTelemetryApiInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:45:886 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.57 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_57.OpenTelemetryApiInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:45:886 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation executors [class io.opentelemetry.javaagent.instrumentation.executors.ExecutorsInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:45:887 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation executors [class io.opentelemetry.javaagent.instrumentation.executors.ExecutorsInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:45:907 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation internal-application-logger [class io.opentelemetry.javaagent.instrumentation.internal.application.logger.ApplicationLoggingInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:45:908 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation internal-class-loader [class io.opentelemetry.javaagent.instrumentation.internal.classloader.ClassLoaderInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:45:908 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation internal-application-logger is disabled +[otel.javaagent 2026-10-24 23:22:45:908 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation internal-class-loader [class io.opentelemetry.javaagent.instrumentation.internal.classloader.ClassLoaderInstrumentationModule] injects helper classes +[otel.javaagent 2026-10-24 23:22:45:910 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation internal-eclipse-osgi-3.6 [class io.opentelemetry.javaagent.instrumentation.internal.eclipse.osgi.v3_6.EclipseOsgiInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:45:910 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation internal-eclipse-osgi-3.6 [class io.opentelemetry.javaagent.instrumentation.internal.eclipse.osgi.v3_6.EclipseOsgiInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:45:910 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation internal-lambda [class io.opentelemetry.javaagent.instrumentation.internal.lambda.LambdaInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:45:910 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation internal-lambda [class io.opentelemetry.javaagent.instrumentation.internal.lambda.LambdaInstrumentationModule] injects helper classes +[otel.javaagent 2026-10-24 23:22:45:911 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation internal-reflection [class io.opentelemetry.javaagent.instrumentation.internal.reflection.ReflectionInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:45:912 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation internal-reflection [class io.opentelemetry.javaagent.instrumentation.internal.reflection.ReflectionInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:45:912 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation internal-url-class-loader [class io.opentelemetry.javaagent.instrumentation.internal.urlclassloader.UrlClassLoaderInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:45:913 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation internal-url-class-loader [class io.opentelemetry.javaagent.instrumentation.internal.urlclassloader.UrlClassLoaderInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:45:913 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opensearch-rest-1.0 [class io.opentelemetry.javaagent.instrumentation.opensearch.rest.v1_0.OpenSearchRestInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:45:913 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opensearch-rest-1.0 [class io.opentelemetry.javaagent.instrumentation.opensearch.rest.v1_0.OpenSearchRestInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:45:918 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opensearch-rest-3.0 [class io.opentelemetry.javaagent.instrumentation.opensearch.rest.v3_0.OpenSearchRestInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:45:918 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opensearch-rest-3.0 [class io.opentelemetry.javaagent.instrumentation.opensearch.rest.v3_0.OpenSearchRestInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:45:922 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation apache-httpclient-4.0 [class io.opentelemetry.javaagent.instrumentation.apachehttpclient.v4_0.ApacheHttpClientInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:45:922 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation apache-httpclient-4.0 [class io.opentelemetry.javaagent.instrumentation.apachehttpclient.v4_0.ApacheHttpClientInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:45:923 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation apache-httpasyncclient-4.1 [class io.opentelemetry.javaagent.instrumentation.apachehttpasyncclient.v4_1.ApacheHttpAsyncClientInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:45:923 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation apache-httpasyncclient-4.1 [class io.opentelemetry.javaagent.instrumentation.apachehttpasyncclient.v4_1.ApacheHttpAsyncClientInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:45:924 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation deny-unsafe [class io.opentelemetry.javaagent.testing.instrumentation.DenyUnsafeInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:45:924 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation deny-unsafe is disabled +[otel.javaagent 2026-10-24 23:22:45:924 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-instrumentation-annotations-1.16 [class io.opentelemetry.javaagent.instrumentation.instrumentationannotations.v1_16.AnnotationInstrumentationModule] +[otel.javaagent 2026-10-24 23:22:45:924 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-instrumentation-annotations-1.16 [class io.opentelemetry.javaagent.instrumentation.instrumentationannotations.v1_16.AnnotationInstrumentationModule] isolates helper classes +[otel.javaagent 2026-10-24 23:22:45:930 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Installed 37 instrumentation(s) +[otel.javaagent 2026-10-24 23:22:45:930 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller - Loading extension test [class io.opentelemetry.javaagent.testing.bytebuddy.TestAgentExtension] +[otel.javaagent 2026-10-24 23:22:45:943 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller - Installed 2 extension(s) +[otel.javaagent 2026-10-24 23:22:45:946 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.javaagent.shaded.io.opentelemetry.context.StrictContextStorage$PendingScopes -- null +[otel.javaagent 2026-10-24 23:22:45:948 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.javaagent.shaded.io.opentelemetry.context.internal.shaded.WeakConcurrentMap -- null +[otel.javaagent 2026-10-24 23:22:45:949 +0000] [main] DEBUG net.bytebuddy.agent.builder.AgentBuilderUtil - Could not decompose matcher failSafe(try(AnnotationInstrumentationModule#WithSpanInstrumentation(declaresMethods(whereOne((isMethod() and declaresAnnotations(whereOne(ofAnnotationType(name(equals(io.opentelemetry.instrumentation.annotations.WithSpan)))))))))) or false) +[otel.javaagent 2026-10-24 23:22:45:950 +0000] [main] DEBUG net.bytebuddy.agent.builder.AgentBuilderUtil - Could not decompose matcher failSafe(try(AnnotationInstrumentationModule#AddingSpanAttributesInstrumentation(declaresMethods(whereOne((isMethod() and declaresAnnotations(whereOne(ofAnnotationType(name(equals(io.opentelemetry.instrumentation.annotations.AddingSpanAttributes))))) and not(declaresAnnotations(whereOne(ofAnnotationType(name(equals(io.opentelemetry.instrumentation.annotations.WithSpan))))))))))) or false) +[otel.javaagent 2026-10-24 23:22:45:962 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: internal-class-loader [class io.opentelemetry.javaagent.instrumentation.internal.classloader.ClassLoaderInstrumentationModule] on io.opentelemetry.javaagent.bootstrap.AgentClassLoader$BootstrapClassLoaderProxy@377dca04 +[otel.javaagent 2026-10-24 23:22:45:969 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: internal-url-class-loader [class io.opentelemetry.javaagent.instrumentation.internal.urlclassloader.UrlClassLoaderInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@7d2a6eac +[otel.javaagent 2026-10-24 23:22:46:031 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.net.URLClassLoader -- null +[otel.javaagent 2026-10-24 23:22:46:047 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed jdk.internal.loader.BuiltinClassLoader -- null +[otel.javaagent 2026-10-24 23:22:46:070 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.lang.ClassLoader -- null +[otel.javaagent 2026-10-24 23:22:46:097 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: executors [class io.opentelemetry.javaagent.instrumentation.executors.ExecutorsInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@34dc85a +[otel.javaagent 2026-10-24 23:22:46:102 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.RunnableScheduledFuture +[otel.javaagent 2026-10-24 23:22:46:103 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ScheduledFuture +[otel.javaagent 2026-10-24 23:22:46:103 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.RunnableFuture +[otel.javaagent 2026-10-24 23:22:46:111 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.Future +[otel.javaagent 2026-10-24 23:22:46:112 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for java.util.concurrent.ScheduledExecutorService +[otel.javaagent 2026-10-24 23:22:46:112 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for java.util.concurrent.ScheduledExecutorService +[otel.javaagent 2026-10-24 23:22:46:113 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for java.util.concurrent.ExecutorService +[otel.javaagent 2026-10-24 23:22:46:113 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for java.util.concurrent.ExecutorService +[otel.javaagent 2026-10-24 23:22:46:113 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for java.util.concurrent.Executor +[otel.javaagent 2026-10-24 23:22:46:113 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for java.util.concurrent.Executor +[otel.javaagent 2026-10-24 23:22:46:133 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: internal-lambda [class io.opentelemetry.javaagent.instrumentation.internal.lambda.LambdaInstrumentationModule] on io.opentelemetry.javaagent.bootstrap.AgentClassLoader$BootstrapClassLoaderProxy@377dca04 +[otel.javaagent 2026-10-24 23:22:46:136 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: internal-reflection [class io.opentelemetry.javaagent.instrumentation.internal.reflection.ReflectionInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@773e2eb5 +[otel.javaagent 2026-10-24 23:22:46:145 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$java$util$concurrent$Callable$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$java$lang$Runnable$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$java$util$concurrent$Future$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$java$util$concurrent$ForkJoinTask$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext] +[otel.javaagent 2026-10-24 23:22:46:146 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$java$util$concurrent$ForkJoinTask$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$java$util$concurrent$Future$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$java$util$concurrent$Callable$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$java$lang$Runnable$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext] +[otel.javaagent 2026-10-24 23:22:46:155 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ThreadPoolExecutor$Worker -- null +[otel.javaagent 2026-10-24 23:22:46:157 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.Executors$RunnableAdapter -- null +[otel.javaagent 2026-10-24 23:22:46:160 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.Callable -- null +[otel.javaagent 2026-10-24 23:22:46:167 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask -- null +[otel.javaagent 2026-10-24 23:22:46:173 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.FutureTask -- null +[otel.javaagent 2026-10-24 23:22:46:174 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.RunnableScheduledFuture +[otel.javaagent 2026-10-24 23:22:46:176 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.RunnableScheduledFuture -- null +[otel.javaagent 2026-10-24 23:22:46:176 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.RunnableFuture +[otel.javaagent 2026-10-24 23:22:46:178 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.RunnableFuture -- null +[otel.javaagent 2026-10-24 23:22:46:212 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ScheduledThreadPoolExecutor -- null +[otel.javaagent 2026-10-24 23:22:46:248 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ThreadPoolExecutor -- null +[otel.javaagent 2026-10-24 23:22:46:253 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinWorkerThread -- null +[otel.javaagent 2026-10-24 23:22:46:260 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask -- null +[otel.javaagent 2026-10-24 23:22:46:262 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$AdaptedRunnable +[otel.javaagent 2026-10-24 23:22:46:263 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedRunnable -- null +[otel.javaagent 2026-10-24 23:22:46:268 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedRunnable -- null +[otel.javaagent 2026-10-24 23:22:46:269 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedCallable -- null +[otel.javaagent 2026-10-24 23:22:46:274 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedCallable -- null +[otel.javaagent 2026-10-24 23:22:46:275 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedRunnableAction -- null +[otel.javaagent 2026-10-24 23:22:46:275 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$AdaptedRunnableAction +[otel.javaagent 2026-10-24 23:22:46:280 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedRunnableAction -- null +[otel.javaagent 2026-10-24 23:22:46:280 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedInterruptibleRunnable -- null +[otel.javaagent 2026-10-24 23:22:46:281 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$AdaptedInterruptibleRunnable +[otel.javaagent 2026-10-24 23:22:46:284 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedInterruptibleRunnable -- null +[otel.javaagent 2026-10-24 23:22:46:284 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$InterruptibleTask +[otel.javaagent 2026-10-24 23:22:46:289 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$InterruptibleTask -- null +[otel.javaagent 2026-10-24 23:22:46:290 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedInterruptibleCallable -- null +[otel.javaagent 2026-10-24 23:22:46:290 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$AdaptedInterruptibleCallable +[otel.javaagent 2026-10-24 23:22:46:295 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedInterruptibleCallable -- null +[otel.javaagent 2026-10-24 23:22:46:297 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.DelayScheduler -- null +[otel.javaagent 2026-10-24 23:22:46:332 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinPool -- null +[otel.javaagent 2026-10-24 23:22:46:335 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$RunnableExecuteAction -- null +[otel.javaagent 2026-10-24 23:22:46:340 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$RunnableExecuteAction -- null +[otel.javaagent 2026-10-24 23:22:46:341 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.DelayScheduler$ScheduledForkJoinTask -- null +[otel.javaagent 2026-10-24 23:22:46:341 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.DelayScheduler$ScheduledForkJoinTask +[otel.javaagent 2026-10-24 23:22:46:345 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.DelayScheduler$ScheduledForkJoinTask -- null +[otel.javaagent 2026-10-24 23:22:46:346 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$CallableWithTimeout -- null +[otel.javaagent 2026-10-24 23:22:46:346 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$CallableWithTimeout +[otel.javaagent 2026-10-24 23:22:46:349 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$CallableWithTimeout -- null +[otel.javaagent 2026-10-24 23:22:46:366 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.AbstractExecutorService -- null +[otel.javaagent 2026-10-24 23:22:46:367 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.instrumentation.internal.lambda.LambdaTransformerHelper] +[otel.javaagent 2026-10-24 23:22:46:372 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.lang.invoke.InnerClassLambdaMetafactory -- null +[otel.javaagent 2026-10-24 23:22:46:377 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed jdk.internal.reflect.Reflection -- null +[otel.javaagent 2026-10-24 23:22:46:381 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.lang.VirtualThread -- null +[otel.javaagent 2026-10-24 23:22:46:383 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed jdk.internal.misc.CarrierThread -- null +[otel.javaagent 2026-10-24 23:22:46:386 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.lang.Class -- null +[otel.javaagent 2026-10-24 23:22:46:406 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$InterruptibleTask +[otel.javaagent 2026-10-24 23:22:46:410 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$CallableWithTimeout +[otel.javaagent 2026-10-24 23:22:46:415 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$CallableWithTimeout -- null +[otel.javaagent 2026-10-24 23:22:46:415 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.DelayScheduler$ScheduledForkJoinTask +[otel.javaagent 2026-10-24 23:22:46:420 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.DelayScheduler$ScheduledForkJoinTask -- null +[otel.javaagent 2026-10-24 23:22:46:425 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$AdaptedInterruptibleCallable +[otel.javaagent 2026-10-24 23:22:46:426 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$RunnableExecuteAction -- null +[otel.javaagent 2026-10-24 23:22:46:429 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedInterruptibleCallable -- null +[otel.javaagent 2026-10-24 23:22:46:429 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$AdaptedInterruptibleRunnable +[otel.javaagent 2026-10-24 23:22:46:434 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedInterruptibleRunnable -- null +[otel.javaagent 2026-10-24 23:22:46:434 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$InterruptibleTask +[otel.javaagent 2026-10-24 23:22:46:438 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$InterruptibleTask -- null +[otel.javaagent 2026-10-24 23:22:46:438 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$AdaptedRunnableAction +[otel.javaagent 2026-10-24 23:22:46:443 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedRunnableAction -- null +[otel.javaagent 2026-10-24 23:22:46:446 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedCallable -- null +[otel.javaagent 2026-10-24 23:22:46:447 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$AdaptedRunnable +[otel.javaagent 2026-10-24 23:22:46:451 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedRunnable -- null +[otel.javaagent 2026-10-24 23:22:46:470 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: internal-class-loader [class io.opentelemetry.javaagent.instrumentation.internal.classloader.ClassLoaderInstrumentationModule] on jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc +[otel.javaagent 2026-10-24 23:22:46:479 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed worker.org.gradle.internal.classloader.FilteringClassLoader -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc +[otel.javaagent 2026-10-24 23:22:46:487 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed worker.org.gradle.internal.classloader.FilteringClassLoader$RetrieveSystemPackagesClassLoader -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + +Gradle Test Executor 29 STANDARD_ERROR + [otel.javaagent 2026-10-24 23:22:46:795 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: executors [class io.opentelemetry.javaagent.instrumentation.executors.ExecutorsInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@59018eed + [otel.javaagent 2026-10-24 23:22:46:808 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.junit.platform.commons.util.ReflectionUtils$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:46:810 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.junit.platform.commons.function.Try$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:46:824 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opensearch-rest-1.0 [class io.opentelemetry.javaagent.instrumentation.opensearch.rest.v1_0.OpenSearchRestInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@7c1503a3 + [otel.javaagent 2026-10-24 23:22:46:825 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$org$opensearch$client$RestClient$io$opentelemetry$javaagent$shaded$instrumentation$api$incubator$semconv$db$internal$DbServerTarget] + [otel.javaagent 2026-10-24 23:22:46:825 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$org$opensearch$client$RestClient$io$opentelemetry$javaagent$shaded$instrumentation$api$incubator$semconv$db$internal$DbServerTarget] + [otel.javaagent 2026-10-24 23:22:46:829 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$org$opensearch$client$RestClient$io$opentelemetry$javaagent$shaded$instrumentation$api$incubator$semconv$db$internal$DbServerTarget] + [otel.javaagent 2026-10-24 23:22:46:830 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$org$opensearch$client$RestClient$io$opentelemetry$javaagent$shaded$instrumentation$api$incubator$semconv$db$internal$DbServerTarget] + [otel.javaagent 2026-10-24 23:22:46:833 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.opensearch.client.RestClient -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:46:917 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:46:943 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.junit.platform.commons.util.ReflectionUtils$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:47:008 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed ch.qos.logback.core.hook.ShutdownHook -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:47:076 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.56 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_56.incubator.OpenTelemetryApiIncubatorInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@328e4ec2 + [otel.javaagent 2026-10-24 23:22:47:098 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.65 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_65.incubator.OpenTelemetryApiIncubatorInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@18d30e7 + [otel.javaagent 2026-10-24 23:22:47:103 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.63 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_63.OpenTelemetryApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@3b57f915 + [otel.javaagent 2026-10-24 23:22:47:114 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.27 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_27.OpenTelemetryApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@5d717f19 + [otel.javaagent 2026-10-24 23:22:47:122 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.38 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_38.incubator.OpenTelemetryApiIncubatorInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@7c3c453b + [otel.javaagent 2026-10-24 23:22:47:131 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.32 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_32.OpenTelemetryApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@77cddc0c + [otel.javaagent 2026-10-24 23:22:47:138 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.15 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_15.OpenTelemetryApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@7dd45c93 + [otel.javaagent 2026-10-24 23:22:47:146 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.10 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.OpenTelemetryApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@62108cd3 + [otel.javaagent 2026-10-24 23:22:47:149 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.4 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_4.OpenTelemetryApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@d120d7c + [otel.javaagent 2026-10-24 23:22:47:150 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.59 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_59.OpenTelemetryApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@521ba38f + [otel.javaagent 2026-10-24 23:22:47:157 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.0 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_0.OpenTelemetryApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@247bbfba + [otel.javaagent 2026-10-24 23:22:47:158 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.57 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_57.OpenTelemetryApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@13908f9c + [otel.javaagent 2026-10-24 23:22:47:168 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.api.GlobalOpenTelemetry -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + +OpenSearchRestTest STANDARD_ERROR + [otel.javaagent 2026-10-24 23:22:47:234 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for org.testcontainers.utility.LazyFuture + [otel.javaagent 2026-10-24 23:22:47:247 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for org.testcontainers.images.RemoteDockerImage + [otel.javaagent 2026-10-24 23:22:47:250 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.images.RemoteDockerImage -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:47:282 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture + [otel.javaagent 2026-10-24 23:22:47:293 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture -- null + [otel.javaagent 2026-10-24 23:22:47:296 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$Completion + [otel.javaagent 2026-10-24 23:22:47:302 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$Completion -- null + [otel.javaagent 2026-10-24 23:22:47:318 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$BiCompletion -- null + [otel.javaagent 2026-10-24 23:22:47:318 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniCompletion + [otel.javaagent 2026-10-24 23:22:47:327 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniCompletion -- null + [otel.javaagent 2026-10-24 23:22:47:328 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$CoCompletion + [otel.javaagent 2026-10-24 23:22:47:336 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$CoCompletion -- null + [otel.javaagent 2026-10-24 23:22:47:337 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$Signaller + [otel.javaagent 2026-10-24 23:22:47:342 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$Signaller -- null + [otel.javaagent 2026-10-24 23:22:47:343 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniApply + [otel.javaagent 2026-10-24 23:22:47:347 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniApply -- null + [otel.javaagent 2026-10-24 23:22:47:348 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniAccept + [otel.javaagent 2026-10-24 23:22:47:354 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniRun + [otel.javaagent 2026-10-24 23:22:47:355 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniAccept -- null + [otel.javaagent 2026-10-24 23:22:47:358 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniRun -- null + [otel.javaagent 2026-10-24 23:22:47:363 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$BiAccept + [otel.javaagent 2026-10-24 23:22:47:363 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$BiApply -- null + [otel.javaagent 2026-10-24 23:22:47:368 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$BiAccept -- null + [otel.javaagent 2026-10-24 23:22:47:368 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$BiRun + [otel.javaagent 2026-10-24 23:22:47:372 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$BiRun -- null + [otel.javaagent 2026-10-24 23:22:47:373 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$OrApply + [otel.javaagent 2026-10-24 23:22:47:376 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$OrApply -- null + [otel.javaagent 2026-10-24 23:22:47:376 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$OrAccept + [otel.javaagent 2026-10-24 23:22:47:379 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$OrAccept -- null + [otel.javaagent 2026-10-24 23:22:47:379 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$OrRun + [otel.javaagent 2026-10-24 23:22:47:382 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$OrRun -- null + [otel.javaagent 2026-10-24 23:22:47:383 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniCompose + [otel.javaagent 2026-10-24 23:22:47:386 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniCompose -- null + [otel.javaagent 2026-10-24 23:22:47:386 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniRelay + [otel.javaagent 2026-10-24 23:22:47:389 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniRelay -- null + [otel.javaagent 2026-10-24 23:22:47:389 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniWhenComplete + [otel.javaagent 2026-10-24 23:22:47:392 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniWhenComplete -- null + [otel.javaagent 2026-10-24 23:22:47:392 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniHandle + [otel.javaagent 2026-10-24 23:22:47:394 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniHandle -- null + [otel.javaagent 2026-10-24 23:22:47:395 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniExceptionally + [otel.javaagent 2026-10-24 23:22:47:397 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniExceptionally -- null + [otel.javaagent 2026-10-24 23:22:47:398 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniComposeExceptionally + [otel.javaagent 2026-10-24 23:22:47:400 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniComposeExceptionally -- null + [otel.javaagent 2026-10-24 23:22:47:400 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$MinimalStage + [otel.javaagent 2026-10-24 23:22:47:401 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$MinimalStage -- null + [otel.javaagent 2026-10-24 23:22:47:401 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$AnyOf + [otel.javaagent 2026-10-24 23:22:47:403 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$AnyOf -- null + [otel.javaagent 2026-10-24 23:22:47:407 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$BiRelay -- null + [otel.javaagent 2026-10-24 23:22:47:556 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.RecursiveTask + [otel.javaagent 2026-10-24 23:22:47:560 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.RecursiveTask -- null + [otel.javaagent 2026-10-24 23:22:47:581 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.shaded.com.fasterxml.jackson.databind.util.internal.PrivateMaxEntriesMap$AddTask -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:47:664 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.dockerclient.DockerClientProviderStrategy$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:47:678 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for java.util.concurrent.Executors$AutoShutdownDelegatedExecutorService + [otel.javaagent 2026-10-24 23:22:47:678 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for java.util.concurrent.Executors$AutoShutdownDelegatedExecutorService + [otel.javaagent 2026-10-24 23:22:47:692 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.Executors$DelegatedExecutorService -- null + [otel.javaagent 2026-10-24 23:22:47:694 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.Executors$AutoShutdownDelegatedExecutorService$$Lambda -- null + [otel.javaagent 2026-10-24 23:22:47:696 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.shaded.org.awaitility.core.ConditionAwaiter$ConditionPoller -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:47:949 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for com.github.dockerjava.zerodep.shaded.org.apache.hc.core5.concurrent.BasicFuture + [otel.javaagent 2026-10-24 23:22:47:952 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed com.github.dockerjava.zerodep.shaded.org.apache.hc.core5.concurrent.BasicFuture -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:47:953 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for com.github.dockerjava.zerodep.shaded.org.apache.hc.core5.pool.StrictConnPool$1 + [otel.javaagent 2026-10-24 23:22:47:960 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed com.github.dockerjava.zerodep.shaded.org.apache.hc.core5.pool.StrictConnPool$1 -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:48:172 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.containers.GenericContainer$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:48:608 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.containers.GenericContainer$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:48:609 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for org.testcontainers.shaded.org.awaitility.core.SameThreadExecutorService + [otel.javaagent 2026-10-24 23:22:48:610 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for org.testcontainers.shaded.org.awaitility.core.SameThreadExecutorService + [otel.javaagent 2026-10-24 23:22:48:733 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.shaded.com.github.dockerjava.core.DefaultInvocationBuilder$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:48:765 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.utility.RyukResourceReaper$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:48:768 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.utility.RyukResourceReaper$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:49:182 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.containers.wait.strategy.HttpWaitStrategy$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:49:184 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.rnorth.ducttape.unreliables.Unreliables$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:22:49:187 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.containers.wait.strategy.HttpWaitStrategy$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:23:00:957 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: apache-httpasyncclient-4.1 [class io.opentelemetry.javaagent.instrumentation.apachehttpasyncclient.v4_1.ApacheHttpAsyncClientInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@7a364e1c + [otel.javaagent 2026-10-24 23:23:00:959 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.nio.client.HttpAsyncClient -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:23:00:961 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.impl.nio.client.CloseableHttpAsyncClient -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:23:00:966 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.nio.client.HttpPipeliningClient -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:23:00:969 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.impl.nio.client.CloseableHttpPipeliningClient -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:23:00:971 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.impl.nio.client.CloseableHttpAsyncClientBase -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:23:00:974 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.impl.nio.client.InternalHttpAsyncClient -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:23:00:998 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:23:01:020 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.impl.nio.client.CloseableHttpAsyncClientBase$1 -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + +OpenSearchRestTest > recordsFailureResponseStatus() STANDARD_ERROR + [otel.javaagent 2026-10-24 23:23:01:078 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for org.apache.http.concurrent.BasicFuture + [otel.javaagent 2026-10-24 23:23:01:079 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.concurrent.BasicFuture -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:23:01:104 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for org.apache.http.nio.pool.AbstractNIOConnPool$3 + [otel.javaagent 2026-10-24 23:23:01:106 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.nio.pool.AbstractNIOConnPool$3 -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:23:01:106 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager$2 + [otel.javaagent 2026-10-24 23:23:01:110 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager$2 -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:23:01:111 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for org.apache.http.impl.nio.client.FutureWrapper + [otel.javaagent 2026-10-24 23:23:01:111 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.impl.nio.client.FutureWrapper -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:23:01:196 +0000] [I/O dispatcher 1] INFO io.opentelemetry.exporter.logging.LoggingSpanExporter - 'HEAD' : bc9d5c2f57ab40b44ab9d61f73ecd5a5 82ff008888680f7c CLIENT [tracer: io.opentelemetry.apache-httpasyncclient-4.1:3.0.0-alpha-SNAPSHOT] AttributesMap{data={url.full=https://localhost:32871/missing-index, server.address=localhost, error.type=404, http.response.status_code=404, http.request.method=HEAD, server.port=32871, network.protocol.version=1.1, peer.service=test-peer-service}, capacity=128, totalAddedValues=8} + [otel.javaagent 2026-10-24 23:23:01:197 +0000] [I/O dispatcher 1] INFO io.opentelemetry.javaagent.testing.exporter.OtlpInMemorySpanExporter - Exporting span SpanData{spanContext=ImmutableSpanContext{traceId=bc9d5c2f57ab40b44ab9d61f73ecd5a5, spanId=82ff008888680f7c, traceFlags=03, traceState=ArrayBasedTraceState{entries=[]}, remote=false, valid=true}, parentSpanContext=ImmutableSpanContext{traceId=bc9d5c2f57ab40b44ab9d61f73ecd5a5, spanId=0d22b5db25e03c01, traceFlags=03, traceState=ArrayBasedTraceState{entries=[]}, remote=false, valid=true}, resource=Resource{schemaUrl=https://opentelemetry.io/schemas/1.40.0, entities=[SdkEntity{type=service.instance, id={service.instance.id="f9f37671-dfcf-498e-bcaa-92ca690bcc00"}, description={}, schemaUrl=https://opentelemetry.io/schemas/1.40.0}], attributes={service.instance.id="f9f37671-dfcf-498e-bcaa-92ca690bcc00", service.name="unknown_service:java", telemetry.distro.name="opentelemetry-javaagent", telemetry.distro.version="3.0.0-SNAPSHOT", telemetry.sdk.language="java", telemetry.sdk.name="opentelemetry", telemetry.sdk.version="1.67.0"}}, instrumentationScopeInfo=InstrumentationScopeInfo{name=io.opentelemetry.apache-httpasyncclient-4.1, version=3.0.0-alpha-SNAPSHOT, schemaUrl=https://opentelemetry.io/schemas/1.41.0, attributes={}}, name=HEAD, kind=CLIENT, startEpochNanos=1792884181094773705, endEpochNanos=1792884181195788712, attributes=AttributesMap{data={url.full=https://localhost:32871/missing-index, server.address=localhost, error.type=404, http.response.status_code=404, http.request.method=HEAD, server.port=32871, network.protocol.version=1.1, peer.service=test-peer-service}, capacity=128, totalAddedValues=8}, totalAttributeCount=8, events=[], totalRecordedEvents=0, links=[], totalRecordedLinks=0, status=ImmutableStatusData{statusCode=ERROR, description=}, hasEnded=true} + [otel.javaagent 2026-10-24 23:23:01:199 +0000] [Test worker] INFO io.opentelemetry.exporter.logging.LoggingSpanExporter - 'HEAD localhost:32871' : bc9d5c2f57ab40b44ab9d61f73ecd5a5 0d22b5db25e03c01 CLIENT [tracer: io.opentelemetry.opensearch-rest-1.0:3.0.0-alpha-SNAPSHOT] AttributesMap{data={server.address=localhost, db.system.name=opensearch, error.type=404, db.operation.name=HEAD, db.response.status_code=404, server.port=32871}, capacity=128, totalAddedValues=6} + [otel.javaagent 2026-10-24 23:23:01:215 +0000] [Test worker] INFO io.opentelemetry.javaagent.testing.exporter.OtlpInMemorySpanExporter - Exporting span SpanData{spanContext=ImmutableSpanContext{traceId=bc9d5c2f57ab40b44ab9d61f73ecd5a5, spanId=0d22b5db25e03c01, traceFlags=03, traceState=ArrayBasedTraceState{entries=[]}, remote=false, valid=true}, parentSpanContext=ImmutableSpanContext{traceId=00000000000000000000000000000000, spanId=0000000000000000, traceFlags=00, traceState=ArrayBasedTraceState{entries=[]}, remote=false, valid=false}, resource=Resource{schemaUrl=https://opentelemetry.io/schemas/1.40.0, entities=[SdkEntity{type=service.instance, id={service.instance.id="f9f37671-dfcf-498e-bcaa-92ca690bcc00"}, description={}, schemaUrl=https://opentelemetry.io/schemas/1.40.0}], attributes={service.instance.id="f9f37671-dfcf-498e-bcaa-92ca690bcc00", service.name="unknown_service:java", telemetry.distro.name="opentelemetry-javaagent", telemetry.distro.version="3.0.0-SNAPSHOT", telemetry.sdk.language="java", telemetry.sdk.name="opentelemetry", telemetry.sdk.version="1.67.0"}}, instrumentationScopeInfo=InstrumentationScopeInfo{name=io.opentelemetry.opensearch-rest-1.0, version=3.0.0-alpha-SNAPSHOT, schemaUrl=https://opentelemetry.io/schemas/1.44.0, attributes={}}, name=HEAD localhost:32871, kind=CLIENT, startEpochNanos=1792884181069622677, endEpochNanos=1792884181199417504, attributes=AttributesMap{data={server.address=localhost, db.system.name=opensearch, error.type=404, db.operation.name=HEAD, db.response.status_code=404, server.port=32871}, capacity=128, totalAddedValues=6}, totalAttributeCount=6, events=[], totalRecordedEvents=0, links=[], totalRecordedLinks=0, status=ImmutableStatusData{statusCode=UNSET, description=}, hasEnded=true} + [otel.javaagent 2026-10-24 23:23:01:263 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.instrumentation.testing.InstrumentationTestRunner$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:23:01:382 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.awaitility.core.ConditionAwaiter$ConditionPoller -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:23:11:370 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.context.internal.shaded.AbstractWeakConcurrentMap -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:23:11:373 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.context.internal.shaded.WeakConcurrentMap -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:23:11:378 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.context.StrictContextStorage$PendingScopes -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:23:11:383 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.context.ContextStorageWrappers -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:23:11:392 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.context.ArrayBasedContext -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:23:11:421 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-instrumentation-api-1.14 [class io.opentelemetry.javaagent.instrumentation.instrumentationapi.v1_14.InstrumentationApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@5bc1903 + [otel.javaagent 2026-10-24 23:23:11:428 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.instrumentation.api.internal.HttpRouteState -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:23:11:439 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.instrumentation.api.internal.SpanKey -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + [otel.javaagent 2026-10-24 23:23:11:449 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.instrumentation.testing.util.ContextStorageCloser$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc + +OpenSearchRestTest > recordsFailureResponseStatus() FAILED + org.opentest4j.AssertionFailedError: [Span 1] Expected span to have name but was + at app//io.opentelemetry.javaagent.instrumentation.opensearch.rest.common.AbstractOpenSearchRestTest.lambda$recordsFailureResponseStatus$2(AbstractOpenSearchRestTest.java:107) + at app//io.opentelemetry.sdk.testing.assertj.TraceAssert.hasSpansSatisfyingExactly(TraceAssert.java:65) + at app//io.opentelemetry.sdk.testing.assertj.TraceAssert.hasSpansSatisfyingExactly(TraceAssert.java:49) + at app//io.opentelemetry.javaagent.instrumentation.opensearch.rest.common.AbstractOpenSearchRestTest.lambda$recordsFailureResponseStatus$0(AbstractOpenSearchRestTest.java:93) + at app//io.opentelemetry.sdk.testing.assertj.TracesAssert.hasTracesSatisfyingExactly(TracesAssert.java:108) + at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.doAssertTraces(InstrumentationTestRunner.java:191) + at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.lambda$waitAndAssertTraces$0(InstrumentationTestRunner.java:177) + at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.awaitUntilAsserted(InstrumentationTestRunner.java:497) + at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.awaitUntilAsserted(InstrumentationTestRunner.java:480) + at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.waitAndAssertTraces(InstrumentationTestRunner.java:177) + at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.waitAndAssertTraces(InstrumentationTestRunner.java:167) + at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.waitAndAssertTraces(InstrumentationTestRunner.java:163) + at app//io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension.waitAndAssertTraces(InstrumentationExtension.java:167) + at app//io.opentelemetry.javaagent.instrumentation.opensearch.rest.common.AbstractOpenSearchRestTest.recordsFailureResponseStatus(AbstractOpenSearchRestTest.java:91) + at java.base@25.0.4.1/java.lang.reflect.Method.invoke(Method.java:565) + at java.base@25.0.4.1/java.util.ArrayList.forEach(ArrayList.java:1604) + at java.base@25.0.4.1/java.util.ArrayList.forEach(ArrayList.java:1604) + +OpenSearchRestTest > shouldGetStatusWithTraces() STANDARD_ERROR + [otel.javaagent 2026-10-24 23:23:11:508 +0000] [Test worker] INFO io.opentelemetry.exporter.logging.LoggingSpanExporter - 'GET localhost:32871' : fe6b9ed9d4d9195eb166c0d998783fc8 ab92d7d033308894 CLIENT [tracer: io.opentelemetry.opensearch-rest-1.0:3.0.0-alpha-SNAPSHOT] AttributesMap{data={server.address=localhost, db.system.name=opensearch, db.operation.name=GET, server.port=32871}, capacity=128, totalAddedValues=4} + [otel.javaagent 2026-10-24 23:23:11:508 +0000] [Test worker] INFO io.opentelemetry.javaagent.testing.exporter.OtlpInMemorySpanExporter - Exporting span SpanData{spanContext=ImmutableSpanContext{traceId=fe6b9ed9d4d9195eb166c0d998783fc8, spanId=ab92d7d033308894, traceFlags=03, traceState=ArrayBasedTraceState{entries=[]}, remote=false, valid=true}, parentSpanContext=ImmutableSpanContext{traceId=00000000000000000000000000000000, spanId=0000000000000000, traceFlags=00, traceState=ArrayBasedTraceState{entries=[]}, remote=false, valid=false}, resource=Resource{schemaUrl=https://opentelemetry.io/schemas/1.40.0, entities=[SdkEntity{type=service.instance, id={service.instance.id="f9f37671-dfcf-498e-bcaa-92ca690bcc00"}, description={}, schemaUrl=https://opentelemetry.io/schemas/1.40.0}], attributes={service.instance.id="f9f37671-dfcf-498e-bcaa-92ca690bcc00", service.name="unknown_service:java", telemetry.distro.name="opentelemetry-javaagent", telemetry.distro.version="3.0.0-SNAPSHOT", telemetry.sdk.language="java", telemetry.sdk.name="opentelemetry", telemetry.sdk.version="1.67.0"}}, instrumentationScopeInfo=InstrumentationScopeInfo{name=io.opentelemetry.opensearch-rest-1.0, version=3.0.0-alpha-SNAPSHOT, schemaUrl=https://opentelemetry.io/schemas/1.44.0, attributes={}}, name=GET localhost:32871, kind=CLIENT, startEpochNanos=1792884191486832625, endEpochNanos=1792884191508225587, attributes=AttributesMap{data={server.address=localhost, db.system.name=opensearch, db.operation.name=GET, server.port=32871}, capacity=128, totalAddedValues=4}, totalAttributeCount=4, events=[], totalRecordedEvents=0, links=[], totalRecordedLinks=0, status=ImmutableStatusData{statusCode=UNSET, description=}, hasEnded=true} + [otel.javaagent 2026-10-24 23:23:11:508 +0000] [I/O dispatcher 1] INFO io.opentelemetry.exporter.logging.LoggingSpanExporter - 'GET' : fe6b9ed9d4d9195eb166c0d998783fc8 fe87214284d120b3 CLIENT [tracer: io.opentelemetry.apache-httpasyncclient-4.1:3.0.0-alpha-SNAPSHOT] AttributesMap{data={url.full=https://localhost:32871/_cluster/health, server.address=localhost, http.response.status_code=200, http.request.method=GET, server.port=32871, network.protocol.version=1.1, peer.service=test-peer-service}, capacity=128, totalAddedValues=7} + [otel.javaagent 2026-10-24 23:23:11:511 +0000] [I/O dispatcher 1] INFO io.opentelemetry.javaagent.testing.exporter.OtlpInMemorySpanExporter - Exporting span SpanData{spanContext=ImmutableSpanContext{traceId=fe6b9ed9d4d9195eb166c0d998783fc8, spanId=fe87214284d120b3, traceFlags=03, traceState=ArrayBasedTraceState{entries=[]}, remote=false, valid=true}, parentSpanContext=ImmutableSpanContext{traceId=fe6b9ed9d4d9195eb166c0d998783fc8, spanId=ab92d7d033308894, traceFlags=03, traceState=ArrayBasedTraceState{entries=[]}, remote=false, valid=true}, resource=Resource{schemaUrl=https://opentelemetry.io/schemas/1.40.0, entities=[SdkEntity{type=service.instance, id={service.instance.id="f9f37671-dfcf-498e-bcaa-92ca690bcc00"}, description={}, schemaUrl=https://opentelemetry.io/schemas/1.40.0}], attributes={service.instance.id="f9f37671-dfcf-498e-bcaa-92ca690bcc00", service.name="unknown_service:java", telemetry.distro.name="opentelemetry-javaagent", telemetry.distro.version="3.0.0-SNAPSHOT", telemetry.sdk.language="java", telemetry.sdk.name="opentelemetry", telemetry.sdk.version="1.67.0"}}, instrumentationScopeInfo=InstrumentationScopeInfo{name=io.opentelemetry.apache-httpasyncclient-4.1, version=3.0.0-alpha-SNAPSHOT, schemaUrl=https://opentelemetry.io/schemas/1.41.0, attributes={}}, name=GET, kind=CLIENT, startEpochNanos=1792884191487459348, endEpochNanos=1792884191508911118, attributes=AttributesMap{data={url.full=https://localhost:32871/_cluster/health, server.address=localhost, http.response.status_code=200, http.request.method=GET, server.port=32871, network.protocol.version=1.1, peer.service=test-peer-service}, capacity=128, totalAddedValues=7}, totalAttributeCount=7, events=[], totalRecordedEvents=0, links=[], totalRecordedLinks=0, status=ImmutableStatusData{statusCode=UNSET, description=}, hasEnded=true} diff --git a/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/internal/DynamoDbAttributesGetter.java b/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/internal/DynamoDbAttributesGetter.java index 6a3e6a8dbacd..39ef9b4481f9 100644 --- a/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/internal/DynamoDbAttributesGetter.java +++ b/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/internal/DynamoDbAttributesGetter.java @@ -66,6 +66,15 @@ public Long getDbOperationBatchSize(ExecutionAttributes executionAttributes) { return extractBatchSize(operation, executionAttributes); } + @Override + @Nullable + public String getDbResponseStatusCode( + ExecutionAttributes executionAttributes, + @Nullable Response response, + @Nullable Throwable error) { + return getErrorType(executionAttributes, response, error); + } + @Override @Nullable public String getErrorType( diff --git a/instrumentation/aws-sdk/aws-sdk-2.2/library/src/test/java/io/opentelemetry/instrumentation/awssdk/v2_2/internal/DynamoDbErrorsTest.java b/instrumentation/aws-sdk/aws-sdk-2.2/library/src/test/java/io/opentelemetry/instrumentation/awssdk/v2_2/internal/DynamoDbErrorsTest.java index 2ab3c48791a9..5a9cac83a561 100644 --- a/instrumentation/aws-sdk/aws-sdk-2.2/library/src/test/java/io/opentelemetry/instrumentation/awssdk/v2_2/internal/DynamoDbErrorsTest.java +++ b/instrumentation/aws-sdk/aws-sdk-2.2/library/src/test/java/io/opentelemetry/instrumentation/awssdk/v2_2/internal/DynamoDbErrorsTest.java @@ -9,6 +9,7 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.semconv.DbAttributes.DB_COLLECTION_NAME; import static io.opentelemetry.semconv.DbAttributes.DB_OPERATION_NAME; +import static io.opentelemetry.semconv.DbAttributes.DB_RESPONSE_STATUS_CODE; import static io.opentelemetry.semconv.DbAttributes.DB_SYSTEM_NAME; import static io.opentelemetry.semconv.ErrorAttributes.ERROR_TYPE; import static io.opentelemetry.semconv.HttpAttributes.HTTP_REQUEST_METHOD; @@ -37,11 +38,14 @@ import io.opentelemetry.testing.internal.armeria.common.HttpStatus; import io.opentelemetry.testing.internal.armeria.common.MediaType; import io.opentelemetry.testing.internal.armeria.testing.junit5.server.mock.MockWebServerExtension; +import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; import software.amazon.awssdk.auth.credentials.AwsBasicCredentials; import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider; +import software.amazon.awssdk.awscore.exception.AwsErrorDetails; +import software.amazon.awssdk.awscore.exception.AwsServiceException; import software.amazon.awssdk.core.client.config.ClientOverrideConfiguration; import software.amazon.awssdk.core.retry.RetryPolicy; import software.amazon.awssdk.regions.Region; @@ -54,6 +58,31 @@ class DynamoDbErrorsTest { @RegisterExtension static final InstrumentationExtension testing = LibraryInstrumentationExtension.create(); + @Test + void responseStatusOmitsExceptionFallbackAndMissingCodes() { + DynamoDbAttributesGetter getter = new DynamoDbAttributesGetter(); + AwsServiceException serviceError = + AwsServiceException.builder() + .awsErrorDetails( + AwsErrorDetails.builder().errorCode("ResourceNotFoundException").build()) + .build(); + assertThat(getter.getDbResponseStatusCode(null, null, serviceError)) + .isEqualTo("ResourceNotFoundException"); + assertThat(getter.getDbResponseStatusCode(null, null, AwsServiceException.builder().build())) + .isNull(); + assertThat( + getter.getDbResponseStatusCode( + null, + null, + AwsServiceException.builder() + .awsErrorDetails(AwsErrorDetails.builder().build()) + .build())) + .isNull(); + assertThat(getter.getDbResponseStatusCode(null, null, new IllegalStateException("failed"))) + .isNull(); + assertThat(getter.getDbResponseStatusCode(null, null, null)).isNull(); + } + @ParameterizedTest @ValueSource(booleans = {false, true}) @SuppressWarnings("deprecation") // using deprecated semconv @@ -108,6 +137,7 @@ void sdkProtocolOutcome(boolean missingItem) { equalTo(DB_COLLECTION_NAME, "items"), equalTo(DB_OPERATION_NAME, "GetItem"), equalTo(HTTP_RESPONSE_STATUS_CODE, missingItem ? 200L : null), + equalTo(DB_RESPONSE_STATUS_CODE, errorType), equalTo(ERROR_TYPE, errorType), equalTo(SERVER_ADDRESS, "127.0.0.1"), equalTo(SERVER_PORT, server.httpPort()), diff --git a/instrumentation/clickhouse/clickhouse-client-common-0.5/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/clickhouse/client/common/v0_5/ClickHouseAttributesGetter.java b/instrumentation/clickhouse/clickhouse-client-common-0.5/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/clickhouse/client/common/v0_5/ClickHouseAttributesGetter.java index f2ec41790ddb..c68ff740f713 100644 --- a/instrumentation/clickhouse/clickhouse-client-common-0.5/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/clickhouse/client/common/v0_5/ClickHouseAttributesGetter.java +++ b/instrumentation/clickhouse/clickhouse-client-common-0.5/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/clickhouse/client/common/v0_5/ClickHouseAttributesGetter.java @@ -56,6 +56,13 @@ public String getDbNamespace(ClickHouseDbRequest request) { @Override public String getErrorType( ClickHouseDbRequest request, @Nullable Void response, @Nullable Throwable error) { + return getDbResponseStatusCode(request, null, error); + } + + @Nullable + @Override + public String getDbResponseStatusCode( + ClickHouseDbRequest request, @Nullable Void response, @Nullable Throwable error) { return errorCodeExtractor.apply(error); } diff --git a/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv1/v0_5/ClickHouseClientV1Test.java b/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv1/v0_5/ClickHouseClientV1Test.java index 31c5dfc29ce8..9447af25f9d5 100644 --- a/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv1/v0_5/ClickHouseClientV1Test.java +++ b/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv1/v0_5/ClickHouseClientV1Test.java @@ -10,6 +10,7 @@ import static io.opentelemetry.semconv.DbAttributes.DB_NAMESPACE; import static io.opentelemetry.semconv.DbAttributes.DB_QUERY_SUMMARY; import static io.opentelemetry.semconv.DbAttributes.DB_QUERY_TEXT; +import static io.opentelemetry.semconv.DbAttributes.DB_RESPONSE_STATUS_CODE; import static io.opentelemetry.semconv.DbAttributes.DB_SYSTEM_NAME; import static io.opentelemetry.semconv.ErrorAttributes.ERROR_TYPE; import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_ADDRESS; @@ -367,7 +368,8 @@ void testExecuteAndWaitThrowsException() { equalTo(NETWORK_PEER_PORT, (long) port), equalTo(DB_QUERY_TEXT, "select * from non_existent_table"), equalTo(DB_QUERY_SUMMARY, "select non_existent_table"), - equalTo(ERROR_TYPE, "60")))); + equalTo(ERROR_TYPE, "60"), + equalTo(DB_RESPONSE_STATUS_CODE, "60")))); assertDurationMetric( testing, diff --git a/instrumentation/clickhouse/clickhouse-client-v2-0.8/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv2/v0_8/ClickHouseClientV2Test.java b/instrumentation/clickhouse/clickhouse-client-v2-0.8/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv2/v0_8/ClickHouseClientV2Test.java index 7ffcef8a89f2..03ea39a1bbd4 100644 --- a/instrumentation/clickhouse/clickhouse-client-v2-0.8/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv2/v0_8/ClickHouseClientV2Test.java +++ b/instrumentation/clickhouse/clickhouse-client-v2-0.8/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv2/v0_8/ClickHouseClientV2Test.java @@ -10,6 +10,7 @@ import static io.opentelemetry.semconv.DbAttributes.DB_NAMESPACE; import static io.opentelemetry.semconv.DbAttributes.DB_QUERY_SUMMARY; import static io.opentelemetry.semconv.DbAttributes.DB_QUERY_TEXT; +import static io.opentelemetry.semconv.DbAttributes.DB_RESPONSE_STATUS_CODE; import static io.opentelemetry.semconv.DbAttributes.DB_SYSTEM_NAME; import static io.opentelemetry.semconv.ErrorAttributes.ERROR_TYPE; import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_ADDRESS; @@ -329,7 +330,8 @@ void testQueryThrowsServerException() { equalTo(NETWORK_PEER_PORT, (long) port), equalTo(DB_QUERY_TEXT, "select * from non_existent_table"), equalTo(DB_QUERY_SUMMARY, "select non_existent_table"), - equalTo(ERROR_TYPE, "60")))); + equalTo(ERROR_TYPE, "60"), + equalTo(DB_RESPONSE_STATUS_CODE, "60")))); assertDurationMetric( testing, diff --git a/instrumentation/elasticsearch/elasticsearch-rest-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/v5_0/ElasticsearchRest5Test.java b/instrumentation/elasticsearch/elasticsearch-rest-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/v5_0/ElasticsearchRest5Test.java index 45ec52f71966..ad0e55182ace 100644 --- a/instrumentation/elasticsearch/elasticsearch-rest-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/v5_0/ElasticsearchRest5Test.java +++ b/instrumentation/elasticsearch/elasticsearch-rest-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/v5_0/ElasticsearchRest5Test.java @@ -12,7 +12,9 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.semconv.DbAttributes.DB_QUERY_TEXT; +import static io.opentelemetry.semconv.DbAttributes.DB_RESPONSE_STATUS_CODE; import static io.opentelemetry.semconv.DbAttributes.DB_SYSTEM_NAME; +import static io.opentelemetry.semconv.ErrorAttributes.ERROR_TYPE; import static io.opentelemetry.semconv.HttpAttributes.HTTP_REQUEST_METHOD; import static io.opentelemetry.semconv.HttpAttributes.HTTP_RESPONSE_STATUS_CODE; import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PROTOCOL_VERSION; @@ -29,6 +31,7 @@ import io.opentelemetry.instrumentation.testing.internal.AutoCleanupExtension; import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; +import io.opentelemetry.sdk.trace.data.StatusData; import java.io.IOException; import java.util.Map; import java.util.concurrent.CountDownLatch; @@ -90,6 +93,31 @@ static void setup() { cleanup.deferAfterAll(client); } + @Test + void recordsFailureResponseStatus() throws IOException { + // HEAD requests return 404 responses without throwing. + Response response = client.performRequest("HEAD", "/missing-index"); + assertThat(response.getStatusLine().getStatusCode()).isEqualTo(404); + + testing.waitAndAssertTraces( + trace -> + trace.hasSpansSatisfyingExactly( + span -> + span.hasName(httpHost.getHostName() + ":" + httpHost.getPort()) + .hasKind(SpanKind.CLIENT) + .hasNoParent() + .hasStatus(StatusData.unset()) + .hasAttributesSatisfyingExactly( + equalTo(DB_SYSTEM_NAME, ELASTICSEARCH), + equalTo(DB_RESPONSE_STATUS_CODE, "404"), + equalTo(ERROR_TYPE, "404"), + equalTo(HTTP_REQUEST_METHOD, "HEAD"), + equalTo(SERVER_ADDRESS, httpHost.getHostName()), + equalTo(SERVER_PORT, httpHost.getPort()), + equalTo(URL_FULL, httpHost.toURI() + "/missing-index")), + span -> span.hasName("GET").hasKind(SpanKind.CLIENT).hasParent(trace.getSpan(0)))); + } + @Test void elasticsearchStatus() throws IOException { Response response = client.performRequest("GET", "_cluster/health"); @@ -113,7 +141,7 @@ void elasticsearchStatus() throws IOException { equalTo(SERVER_PORT, httpHost.getPort()), equalTo(URL_FULL, httpHost.toURI() + "/_cluster/health")), span -> - span.hasName("GET") + span.hasName("HEAD") .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( diff --git a/instrumentation/elasticsearch/elasticsearch-rest-common-5.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/common/v5_0/ElasticsearchDbAttributesGetterTest.java b/instrumentation/elasticsearch/elasticsearch-rest-common-5.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/common/v5_0/ElasticsearchDbAttributesGetterTest.java index 61dc923e279c..4d03b5ad5c46 100644 --- a/instrumentation/elasticsearch/elasticsearch-rest-common-5.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/common/v5_0/ElasticsearchDbAttributesGetterTest.java +++ b/instrumentation/elasticsearch/elasticsearch-rest-common-5.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/common/v5_0/ElasticsearchDbAttributesGetterTest.java @@ -8,6 +8,8 @@ import static java.nio.charset.StandardCharsets.UTF_8; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.params.provider.Arguments.argumentSet; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; import java.io.ByteArrayInputStream; import java.io.IOException; @@ -17,9 +19,12 @@ import java.util.function.UnaryOperator; import java.util.stream.Stream; import org.apache.http.HttpEntity; +import org.apache.http.ProtocolVersion; import org.apache.http.entity.ContentType; import org.apache.http.entity.InputStreamEntity; import org.apache.http.entity.StringEntity; +import org.apache.http.message.BasicStatusLine; +import org.elasticsearch.client.Response; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; @@ -32,6 +37,31 @@ class ElasticsearchDbAttributesGetterTest { "{\"query\":{\"match\":{\"title\":\"secret user data\"}}}"; private static final String SANITIZED_BODY = "{\"query\":{\"match\":{\"title\":\"?\"}}}"; + @ParameterizedTest + @ValueSource(ints = {99, 200, 302, 404, 503}) + void recordsResponseStatusOnlyForFailureCodes(int statusCode) { + ElasticsearchDbAttributesGetter getter = new ElasticsearchDbAttributesGetter(null); + ElasticsearchRestRequest request = searchRequest(null); + Response response = mock(Response.class); + when(response.getStatusLine()) + .thenReturn(new BasicStatusLine(new ProtocolVersion("HTTP", 1, 1), statusCode, "")); + + assertThat(getter.getDbResponseStatusCode(request, response, null)) + .isEqualTo(statusCode >= 400 || statusCode < 100 ? Integer.toString(statusCode) : null); + assertThat(getter.getErrorType(request, response, null)) + .isEqualTo(statusCode >= 400 || statusCode < 100 ? Integer.toString(statusCode) : null); + } + + @Test + void omitsResponseStatusWithoutResponse() { + ElasticsearchDbAttributesGetter getter = new ElasticsearchDbAttributesGetter(null); + ElasticsearchRestRequest request = searchRequest(null); + + assertThat(getter.getDbResponseStatusCode(request, null, null)).isNull(); + assertThat(getter.getDbResponseStatusCode(request, null, new IOException("connection failed"))) + .isNull(); + } + /** Records the bodies it is given and returns whatever it was configured to return. */ private static class RecordingSanitizer implements UnaryOperator { final List sanitized = new ArrayList<>(); diff --git a/instrumentation/elasticsearch/elasticsearch-rest-common-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/common/v5_0/ElasticsearchDbAttributesGetter.java b/instrumentation/elasticsearch/elasticsearch-rest-common-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/common/v5_0/ElasticsearchDbAttributesGetter.java index 16d195d3ff8f..ebefb8466772 100644 --- a/instrumentation/elasticsearch/elasticsearch-rest-common-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/common/v5_0/ElasticsearchDbAttributesGetter.java +++ b/instrumentation/elasticsearch/elasticsearch-rest-common-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/common/v5_0/ElasticsearchDbAttributesGetter.java @@ -148,6 +148,13 @@ public String getErrorType( return null; } + @Override + @Nullable + public String getDbResponseStatusCode( + ElasticsearchRestRequest request, @Nullable Response response, @Nullable Throwable error) { + return getErrorType(request, response, error); + } + @Override @Nullable public String getServerAddress(ElasticsearchRestRequest request) { diff --git a/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcAttributesGetter.java b/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcAttributesGetter.java index 8e013cc63445..ad1899a5b5d2 100644 --- a/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcAttributesGetter.java +++ b/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcAttributesGetter.java @@ -52,6 +52,13 @@ public Long getDbOperationBatchSize(DbRequest request) { @Override public String getErrorType( DbRequest request, @Nullable Void response, @Nullable Throwable error) { + return getDbResponseStatusCode(request, null, error); + } + + @Nullable + @Override + public String getDbResponseStatusCode( + DbRequest request, @Nullable Void response, @Nullable Throwable error) { if (error instanceof SQLException) { SQLException sqlException = (SQLException) error; int errorCode = sqlException.getErrorCode(); diff --git a/instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/datasource/JdbcTelemetryTest.java b/instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/datasource/JdbcTelemetryTest.java index 14a24beb32a2..167086474d62 100644 --- a/instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/datasource/JdbcTelemetryTest.java +++ b/instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/datasource/JdbcTelemetryTest.java @@ -12,6 +12,7 @@ import static io.opentelemetry.semconv.DbAttributes.DB_OPERATION_BATCH_SIZE; import static io.opentelemetry.semconv.DbAttributes.DB_OPERATION_NAME; import static io.opentelemetry.semconv.DbAttributes.DB_QUERY_TEXT; +import static io.opentelemetry.semconv.DbAttributes.DB_RESPONSE_STATUS_CODE; import static io.opentelemetry.semconv.DbAttributes.DB_SYSTEM_NAME; import static io.opentelemetry.semconv.DbAttributes.DbSystemNameValues.POSTGRESQL; import static io.opentelemetry.semconv.ErrorAttributes.ERROR_TYPE; @@ -170,7 +171,12 @@ void error(int errorCode, String sqlState, String expectedErrorType) throws SQLE equalTo(DB_QUERY_TEXT, "SELECT ?;"), equalTo(DB_QUERY_SUMMARY, "SELECT"), equalTo(SERVER_ADDRESS, "127.0.0.1"), - equalTo(ERROR_TYPE, expectedErrorType)))); + equalTo(ERROR_TYPE, expectedErrorType), + equalTo( + DB_RESPONSE_STATUS_CODE, + expectedErrorType.equals(SQLException.class.getName()) + ? null + : expectedErrorType)))); assertDurationMetric( testing, diff --git a/instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcAttributesGetterTest.java b/instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcAttributesGetterTest.java index d7c955c8eeca..ba87c11e51c6 100644 --- a/instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcAttributesGetterTest.java +++ b/instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcAttributesGetterTest.java @@ -79,6 +79,20 @@ void getErrorTypeNormalizesVendorCode(int errorCode, String sqlState, String exp attributesGetter.getErrorType( request, null, new SQLException("test", sqlState, errorCode))) .isEqualTo(expectedErrorType); + assertThat( + attributesGetter.getDbResponseStatusCode( + request, null, new SQLException("test", sqlState, errorCode))) + .isEqualTo(expectedErrorType); + } + + @Test + void omitsResponseStatusWithoutSqlException() { + DbRequest request = + DbRequest.create(DbInfo.builder().dbSystemName(POSTGRESQL).build(), "SELECT 1", false); + + assertThat(attributesGetter.getDbResponseStatusCode(request, null, null)).isNull(); + assertThat(attributesGetter.getDbResponseStatusCode(request, null, new IllegalStateException())) + .isNull(); } private static Stream errorCodes() { diff --git a/instrumentation/jdbc/testing/src/main/java/io/opentelemetry/instrumentation/jdbc/testing/AbstractJdbcInstrumentationTest.java b/instrumentation/jdbc/testing/src/main/java/io/opentelemetry/instrumentation/jdbc/testing/AbstractJdbcInstrumentationTest.java index 388be9ba4e34..21c6e145f753 100644 --- a/instrumentation/jdbc/testing/src/main/java/io/opentelemetry/instrumentation/jdbc/testing/AbstractJdbcInstrumentationTest.java +++ b/instrumentation/jdbc/testing/src/main/java/io/opentelemetry/instrumentation/jdbc/testing/AbstractJdbcInstrumentationTest.java @@ -18,6 +18,7 @@ import static io.opentelemetry.semconv.DbAttributes.DB_OPERATION_NAME; import static io.opentelemetry.semconv.DbAttributes.DB_QUERY_SUMMARY; import static io.opentelemetry.semconv.DbAttributes.DB_QUERY_TEXT; +import static io.opentelemetry.semconv.DbAttributes.DB_RESPONSE_STATUS_CODE; import static io.opentelemetry.semconv.DbAttributes.DB_STORED_PROCEDURE_NAME; import static io.opentelemetry.semconv.DbAttributes.DB_SYSTEM_NAME; import static io.opentelemetry.semconv.ErrorAttributes.ERROR_TYPE; @@ -2155,7 +2156,10 @@ void testFailedTransaction(String operation, ThrowingConsumer transa equalTo(DB_SYSTEM_NAME, "h2database"), equalTo(DB_NAMESPACE, DATABASE_NAME_LOWER), equalTo(DB_OPERATION_NAME, operation), - equalTo(ERROR_TYPE, Integer.toString(error.getErrorCode()))))); + equalTo(ERROR_TYPE, Integer.toString(error.getErrorCode())), + equalTo( + DB_RESPONSE_STATUS_CODE, + Integer.toString(error.getErrorCode()))))); if (emitExceptionAsLogs()) { testing() diff --git a/instrumentation/lettuce/lettuce-4.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceDbAttributesGetterTest.java b/instrumentation/lettuce/lettuce-4.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceDbAttributesGetterTest.java index 0ccd5c82199a..ac1029a05057 100644 --- a/instrumentation/lettuce/lettuce-4.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceDbAttributesGetterTest.java +++ b/instrumentation/lettuce/lettuce-4.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceDbAttributesGetterTest.java @@ -7,6 +7,8 @@ import static org.assertj.core.api.Assertions.assertThat; +import com.lambdaworks.redis.RedisCommandExecutionException; +import com.lambdaworks.redis.RedisCommandTimeoutException; import com.lambdaworks.redis.codec.Utf8StringCodec; import com.lambdaworks.redis.output.StatusOutput; import com.lambdaworks.redis.protocol.Command; @@ -19,6 +21,21 @@ class LettuceDbAttributesGetterTest { private final LettuceDbAttributesGetter getter = new LettuceDbAttributesGetter(); + @Test + void responseStatusUsesOnlyServerErrorPrefixes() { + LettuceBatchAttributesGetter batchGetter = new LettuceBatchAttributesGetter(); + Throwable serverError = new RedisCommandExecutionException("WRONGTYPE detail"); + Throwable clientError = new RedisCommandTimeoutException("WRONGTYPE client timeout"); + Throwable blankError = new RedisCommandExecutionException(" "); + + assertThat(getter.getDbResponseStatusCode(null, null, serverError)).isEqualTo("WRONGTYPE"); + assertThat(batchGetter.getDbResponseStatusCode(null, null, serverError)).isEqualTo("WRONGTYPE"); + for (Throwable error : new Throwable[] {null, clientError, blankError}) { + assertThat(getter.getDbResponseStatusCode(null, null, error)).isNull(); + assertThat(batchGetter.getDbResponseStatusCode(null, null, error)).isNull(); + } + } + @Test void commandUsesConfiguredTarget() { RedisCommand command = command(); diff --git a/instrumentation/lettuce/lettuce-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceBatchAttributesGetter.java b/instrumentation/lettuce/lettuce-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceBatchAttributesGetter.java index fdf9b4003136..daacd1ba1c9f 100644 --- a/instrumentation/lettuce/lettuce-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceBatchAttributesGetter.java +++ b/instrumentation/lettuce/lettuce-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceBatchAttributesGetter.java @@ -42,6 +42,13 @@ public Long getDbOperationBatchSize(LettuceBatchRequest request) { return request.getBatchSize(); } + @Nullable + @Override + public String getDbResponseStatusCode( + LettuceBatchRequest request, @Nullable Void response, @Nullable Throwable error) { + return LettuceRedisErrorType.getErrorType(error); + } + @Nullable @Override public String getErrorType( diff --git a/instrumentation/lettuce/lettuce-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceDbAttributesGetter.java b/instrumentation/lettuce/lettuce-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceDbAttributesGetter.java index 49e395830d46..91b641e0c870 100644 --- a/instrumentation/lettuce/lettuce-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceDbAttributesGetter.java +++ b/instrumentation/lettuce/lettuce-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceDbAttributesGetter.java @@ -39,6 +39,13 @@ public String getDbOperationName(RedisCommand request) { return request.getType().name(); } + @Nullable + @Override + public String getDbResponseStatusCode( + RedisCommand request, @Nullable Void response, @Nullable Throwable error) { + return LettuceRedisErrorType.getErrorType(error); + } + @Nullable @Override public String getErrorType( diff --git a/instrumentation/lettuce/lettuce-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceAsyncClientTest.java b/instrumentation/lettuce/lettuce-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceAsyncClientTest.java index 2259ff42e42c..6f10986be9ec 100644 --- a/instrumentation/lettuce/lettuce-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceAsyncClientTest.java +++ b/instrumentation/lettuce/lettuce-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceAsyncClientTest.java @@ -15,6 +15,7 @@ import static io.opentelemetry.semconv.DbAttributes.DB_NAMESPACE; import static io.opentelemetry.semconv.DbAttributes.DB_OPERATION_BATCH_SIZE; import static io.opentelemetry.semconv.DbAttributes.DB_OPERATION_NAME; +import static io.opentelemetry.semconv.DbAttributes.DB_RESPONSE_STATUS_CODE; import static io.opentelemetry.semconv.DbAttributes.DB_SYSTEM_NAME; import static io.opentelemetry.semconv.ErrorAttributes.ERROR_TYPE; import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_ADDRESS; @@ -223,6 +224,7 @@ void testCommandServerErrorUsesRedisErrorType() throws Exception { equalTo(SERVER_PORT, port), equalTo(NETWORK_PEER_ADDRESS, ip), equalTo(NETWORK_PEER_PORT, Long.valueOf(port)), + equalTo(DB_RESPONSE_STATUS_CODE, "WRONGTYPE"), equalTo(ERROR_TYPE, "WRONGTYPE")))); assertErrorTypeMetric("io.opentelemetry.lettuce-4.0", "WRONGTYPE", 1); @@ -772,6 +774,7 @@ void deferredFlushCommand(BatchScenario scenario) throws Exception { equalTo(NETWORK_PEER_ADDRESS, ip), equalTo(NETWORK_PEER_PORT, Long.valueOf(port)), equalTo(DB_OPERATION_BATCH_SIZE, scenario.batchSize), + equalTo(DB_RESPONSE_STATUS_CODE, scenario.errorType), equalTo(ERROR_TYPE, scenario.errorType)))); assertErrorTypeMetric("io.opentelemetry.lettuce-4.0", scenario.errorType, 1); diff --git a/instrumentation/lettuce/lettuce-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceBatchAttributesGetter.java b/instrumentation/lettuce/lettuce-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceBatchAttributesGetter.java index f7cf298e2fe3..cb6d2752821d 100644 --- a/instrumentation/lettuce/lettuce-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceBatchAttributesGetter.java +++ b/instrumentation/lettuce/lettuce-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceBatchAttributesGetter.java @@ -42,6 +42,13 @@ public Long getDbOperationBatchSize(LettuceBatchRequest request) { return request.getBatchSize(); } + @Nullable + @Override + public String getDbResponseStatusCode( + LettuceBatchRequest request, @Nullable Void response, @Nullable Throwable error) { + return LettuceRedisErrorType.getErrorType(error); + } + @Nullable @Override public String getErrorType( diff --git a/instrumentation/lettuce/lettuce-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceDbAttributesGetter.java b/instrumentation/lettuce/lettuce-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceDbAttributesGetter.java index 5c6f008d52d2..273425156c6b 100644 --- a/instrumentation/lettuce/lettuce-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceDbAttributesGetter.java +++ b/instrumentation/lettuce/lettuce-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceDbAttributesGetter.java @@ -56,6 +56,13 @@ public String getDbOperationName(RedisCommand request) { return request.getType().toString(); } + @Nullable + @Override + public String getDbResponseStatusCode( + RedisCommand request, @Nullable Void response, @Nullable Throwable error) { + return LettuceRedisErrorType.getErrorType(error); + } + @Nullable @Override public String getErrorType( diff --git a/instrumentation/lettuce/lettuce-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceAsyncClientTest.java b/instrumentation/lettuce/lettuce-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceAsyncClientTest.java index 0e1c35cf0ca6..e265197a270a 100644 --- a/instrumentation/lettuce/lettuce-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceAsyncClientTest.java +++ b/instrumentation/lettuce/lettuce-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceAsyncClientTest.java @@ -16,6 +16,7 @@ import static io.opentelemetry.semconv.DbAttributes.DB_OPERATION_BATCH_SIZE; import static io.opentelemetry.semconv.DbAttributes.DB_OPERATION_NAME; import static io.opentelemetry.semconv.DbAttributes.DB_QUERY_TEXT; +import static io.opentelemetry.semconv.DbAttributes.DB_RESPONSE_STATUS_CODE; import static io.opentelemetry.semconv.DbAttributes.DB_SYSTEM_NAME; import static io.opentelemetry.semconv.ErrorAttributes.ERROR_TYPE; import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_MESSAGE; @@ -283,6 +284,7 @@ void testCommandServerErrorUsesRedisErrorType() throws Exception { equalTo(DB_NAMESPACE, "0"), equalTo(DB_QUERY_TEXT, "GET TESTHM"), equalTo(DB_OPERATION_NAME, "GET"), + equalTo(DB_RESPONSE_STATUS_CODE, "WRONGTYPE"), equalTo(ERROR_TYPE, "WRONGTYPE")))); assertErrorTypeMetric("io.opentelemetry.lettuce-5.0", "WRONGTYPE", 1); @@ -754,6 +756,7 @@ void deferredFlushCommand(BatchScenario scenario) throws Exception { equalTo(DB_QUERY_TEXT, scenario.queryText), equalTo(DB_OPERATION_NAME, scenario.operationName), equalTo(DB_OPERATION_BATCH_SIZE, scenario.batchSize), + equalTo(DB_RESPONSE_STATUS_CODE, scenario.errorType), equalTo(ERROR_TYPE, scenario.errorType)))); assertErrorTypeMetric("io.opentelemetry.lettuce-5.0", scenario.errorType, 1); diff --git a/instrumentation/lettuce/lettuce-5.0/javaagent/src/unitTests/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceAttributesGetterTest.java b/instrumentation/lettuce/lettuce-5.0/javaagent/src/unitTests/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceAttributesGetterTest.java index 1161c3c5157f..7dadfded986c 100644 --- a/instrumentation/lettuce/lettuce-5.0/javaagent/src/unitTests/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceAttributesGetterTest.java +++ b/instrumentation/lettuce/lettuce-5.0/javaagent/src/unitTests/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceAttributesGetterTest.java @@ -31,6 +31,22 @@ class LettuceAttributesGetterTest { + @Test + void responseStatusUsesOnlyServerErrorPrefixes() { + LettuceDbAttributesGetter getter = new LettuceDbAttributesGetter(); + LettuceBatchAttributesGetter batchGetter = new LettuceBatchAttributesGetter(); + Throwable serverError = new RedisCommandExecutionException("WRONGTYPE detail"); + Throwable clientError = new RedisCommandTimeoutException("WRONGTYPE client timeout"); + Throwable blankError = new RedisCommandExecutionException(" "); + + assertThat(getter.getDbResponseStatusCode(null, null, serverError)).isEqualTo("WRONGTYPE"); + assertThat(batchGetter.getDbResponseStatusCode(null, null, serverError)).isEqualTo("WRONGTYPE"); + for (Throwable error : new Throwable[] {null, clientError, blankError}) { + assertThat(getter.getDbResponseStatusCode(null, null, error)).isNull(); + assertThat(batchGetter.getDbResponseStatusCode(null, null, error)).isNull(); + } + } + @Test void commandWithoutTargetOmitsServerAttributes() { RedisCommand command = command(); diff --git a/instrumentation/lettuce/lettuce-5.1/library/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/LettuceDbAttributesGetter.java b/instrumentation/lettuce/lettuce-5.1/library/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/LettuceDbAttributesGetter.java index cc5a980a7d52..44ca1ec8d0c1 100644 --- a/instrumentation/lettuce/lettuce-5.1/library/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/LettuceDbAttributesGetter.java +++ b/instrumentation/lettuce/lettuce-5.1/library/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/LettuceDbAttributesGetter.java @@ -39,6 +39,13 @@ public String getDbOperationName(LettuceRequest request) { return request.getCommand(); } + @Nullable + @Override + public String getDbResponseStatusCode( + LettuceRequest request, @Nullable LettuceResponse response, @Nullable Throwable error) { + return response == null ? null : response.getRedisErrorType(); + } + @Nullable @Override public String getErrorType( diff --git a/instrumentation/lettuce/lettuce-5.1/library/src/test/java/io/opentelemetry/instrumentation/lettuce/v5_1/LettuceDbAttributesGetterTest.java b/instrumentation/lettuce/lettuce-5.1/library/src/test/java/io/opentelemetry/instrumentation/lettuce/v5_1/LettuceDbAttributesGetterTest.java index 97042287b118..24dc0c69d0a1 100644 --- a/instrumentation/lettuce/lettuce-5.1/library/src/test/java/io/opentelemetry/instrumentation/lettuce/v5_1/LettuceDbAttributesGetterTest.java +++ b/instrumentation/lettuce/lettuce-5.1/library/src/test/java/io/opentelemetry/instrumentation/lettuce/v5_1/LettuceDbAttributesGetterTest.java @@ -22,12 +22,17 @@ void returnsRedisErrorPrefix() { "WRONGTYPE Operation against a key holding the wrong kind of value"); assertThat(getter.getErrorType(null, response, null)).isEqualTo("WRONGTYPE"); + assertThat(getter.getDbResponseStatusCode(null, response, null)).isEqualTo("WRONGTYPE"); } @Test void ignoresClientErrorWithoutResponse() { assertThat(getter.getErrorType(null, null, new RedisCommandTimeoutException("timed out"))) .isNull(); + assertThat( + getter.getDbResponseStatusCode( + null, null, new RedisCommandTimeoutException("timed out"))) + .isNull(); } @Test @@ -35,6 +40,7 @@ void delegatesExceptionFallbackWhenReplyHasNoPrefix() { LettuceResponse response = LettuceResponse.fromErrorMessage(" "); assertThat(getter.getErrorType(null, response, null)).isEqualTo("_OTHER"); + assertThat(getter.getDbResponseStatusCode(null, response, null)).isNull(); assertThat(getter.getErrorType(null, response, new RedisNoScriptException("missing script"))) .isNull(); } @@ -43,11 +49,15 @@ void delegatesExceptionFallbackWhenReplyHasNoPrefix() { void doesNotInventExceptionClassForUnknownFailure() { assertThat(getter.getErrorType(null, LettuceResponse.unknownFailure(), null)) .isEqualTo("_OTHER"); + assertThat(getter.getDbResponseStatusCode(null, LettuceResponse.unknownFailure(), null)) + .isNull(); } @Test void omitsErrorTypeOnSuccess() { assertThat(getter.getErrorType(null, LettuceResponse.fromErrorMessage(null), null)).isNull(); + assertThat(getter.getDbResponseStatusCode(null, LettuceResponse.fromErrorMessage(null), null)) + .isNull(); } @Test @@ -63,5 +73,6 @@ void preservesExceptionFallback() { @Test void ignoresMissingResponse() { assertThat(getter.getErrorType(null, null, null)).isNull(); + assertThat(getter.getDbResponseStatusCode(null, null, null)).isNull(); } } diff --git a/instrumentation/lettuce/lettuce-5.1/testing/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceReactiveClientTest.java b/instrumentation/lettuce/lettuce-5.1/testing/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceReactiveClientTest.java index f99b519c30a2..c4d7fe8f000f 100644 --- a/instrumentation/lettuce/lettuce-5.1/testing/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceReactiveClientTest.java +++ b/instrumentation/lettuce/lettuce-5.1/testing/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceReactiveClientTest.java @@ -9,6 +9,7 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.semconv.DbAttributes.DB_OPERATION_NAME; import static io.opentelemetry.semconv.DbAttributes.DB_QUERY_TEXT; +import static io.opentelemetry.semconv.DbAttributes.DB_RESPONSE_STATUS_CODE; import static io.opentelemetry.semconv.DbAttributes.DB_SYSTEM_NAME; import static io.opentelemetry.semconv.ErrorAttributes.ERROR_TYPE; import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_ADDRESS; @@ -254,8 +255,10 @@ void testLpushWrongTypeCommandSetsSpanStatus() { equalTo(DB_SYSTEM_NAME, REDIS), equalTo(DB_QUERY_TEXT, "LPUSH " + WRONG_TYPE_KEY + " ?"), equalTo(DB_OPERATION_NAME, "LPUSH"), + equalTo(ERROR_TYPE, testLatestDeps() ? "WRONGTYPE" : "_OTHER"), equalTo( - ERROR_TYPE, testLatestDeps() ? "WRONGTYPE" : "_OTHER"))))); + DB_RESPONSE_STATUS_CODE, + testLatestDeps() ? "WRONGTYPE" : null))))); assertCommandMetric("LPUSH", testLatestDeps() ? "WRONGTYPE" : "_OTHER"); } 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 435aa9538ad1..cdf5adf6c1c0 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 @@ -179,6 +179,15 @@ public String getErrorType( CommandStartedEvent request, @Nullable CommandSucceededEvent response, @Nullable Throwable error) { + return getDbResponseStatusCode(request, response, error); + } + + @Nullable + @Override + public String getDbResponseStatusCode( + CommandStartedEvent request, + @Nullable CommandSucceededEvent response, + @Nullable Throwable error) { Integer writeErrorCode = getWriteErrorCode(response); if (writeErrorCode != null) { return writeErrorCode.toString(); diff --git a/instrumentation/mongo/mongo-3.1/library/src/test/java/io/opentelemetry/instrumentation/mongo/v3_1/internal/MongoDbAttributesGetterTest.java b/instrumentation/mongo/mongo-3.1/library/src/test/java/io/opentelemetry/instrumentation/mongo/v3_1/internal/MongoDbAttributesGetterTest.java index b5b9413a1f90..06071edddc54 100644 --- a/instrumentation/mongo/mongo-3.1/library/src/test/java/io/opentelemetry/instrumentation/mongo/v3_1/internal/MongoDbAttributesGetterTest.java +++ b/instrumentation/mongo/mongo-3.1/library/src/test/java/io/opentelemetry/instrumentation/mongo/v3_1/internal/MongoDbAttributesGetterTest.java @@ -37,6 +37,7 @@ import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; +import org.junit.jupiter.params.provider.ValueSource; class MongoDbAttributesGetterTest { @@ -133,6 +134,7 @@ void getErrorTypeReturnsServerCodeOrFallsBack(Throwable error, String expectedEr new MongoDbAttributesGetter(true, DEFAULT_MAX_NORMALIZED_QUERY_LENGTH); assertThat(getter.getErrorType(null, null, error)).isEqualTo(expectedErrorType); + assertThat(getter.getDbResponseStatusCode(null, null, error)).isEqualTo(expectedErrorType); } @Test @@ -148,6 +150,28 @@ void getErrorTypeReturnsWriteConcernErrorCode() { 1); assertThat(getter.getErrorType(null, response, null)).isEqualTo("64"); + assertThat(getter.getDbResponseStatusCode(null, response, null)).isEqualTo("64"); + } + + @ParameterizedTest + @ValueSource( + strings = { + "{\"ok\": 1}", + "{\"ok\": 1, \"writeErrors\": [{\"code\": -3}]}", + "{\"ok\": 1, \"writeConcernError\": {\"code\": 0}}" + }) + void omitsResponseStatusWithoutServerErrorCode(String document) { + MongoDbAttributesGetter getter = + new MongoDbAttributesGetter(true, DEFAULT_MAX_NORMALIZED_QUERY_LENGTH); + CommandSucceededEvent response = + new CommandSucceededEvent( + 1, + new ConnectionDescription(new ServerId(new ClusterId(), new ServerAddress())), + "insert", + BsonDocument.parse(document), + 1); + + assertThat(getter.getDbResponseStatusCode(null, response, null)).isNull(); } @Test 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 abe6cac331f3..97577c0e297d 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 @@ -14,6 +14,7 @@ import static io.opentelemetry.semconv.DbAttributes.DB_NAMESPACE; import static io.opentelemetry.semconv.DbAttributes.DB_OPERATION_NAME; import static io.opentelemetry.semconv.DbAttributes.DB_QUERY_TEXT; +import static io.opentelemetry.semconv.DbAttributes.DB_RESPONSE_STATUS_CODE; import static io.opentelemetry.semconv.DbAttributes.DB_SYSTEM_NAME; import static io.opentelemetry.semconv.ErrorAttributes.ERROR_TYPE; import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_ADDRESS; @@ -183,7 +184,8 @@ private void assertWriteResult(String collectionName, String operation, String e equalTo( NETWORK_PEER_PORT, supportsNetworkPeer() ? Long.valueOf(port) : null), - equalTo(ERROR_TYPE, errorType)); + equalTo(ERROR_TYPE, errorType), + equalTo(DB_RESPONSE_STATUS_CODE, errorType)); })); List> expectedMetricKeys = new ArrayList<>( diff --git a/instrumentation/opensearch/opensearch-java-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/v3_0/OpenSearchAttributesGetter.java b/instrumentation/opensearch/opensearch-java-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/v3_0/OpenSearchAttributesGetter.java index 223d2eff8ebb..ef5538586a18 100644 --- a/instrumentation/opensearch/opensearch-java-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/v3_0/OpenSearchAttributesGetter.java +++ b/instrumentation/opensearch/opensearch-java-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/v3_0/OpenSearchAttributesGetter.java @@ -54,6 +54,13 @@ public String getErrorType( return null; } + @Override + @Nullable + public String getDbResponseStatusCode( + OpenSearchRequest request, @Nullable Void response, @Nullable Throwable error) { + return getErrorType(request, null, error); + } + @Override @Nullable public String getServerAddress(OpenSearchRequest request) { diff --git a/instrumentation/opensearch/opensearch-java-3.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/opensearch/v3_0/OpenSearchApacheHttpClient5TransportTest.java b/instrumentation/opensearch/opensearch-java-3.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/opensearch/v3_0/OpenSearchApacheHttpClient5TransportTest.java index 6d59fd5ada54..da703fa7691d 100644 --- a/instrumentation/opensearch/opensearch-java-3.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/opensearch/v3_0/OpenSearchApacheHttpClient5TransportTest.java +++ b/instrumentation/opensearch/opensearch-java-3.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/opensearch/v3_0/OpenSearchApacheHttpClient5TransportTest.java @@ -7,6 +7,7 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.semconv.DbAttributes.DB_OPERATION_NAME; +import static io.opentelemetry.semconv.DbAttributes.DB_RESPONSE_STATUS_CODE; import static io.opentelemetry.semconv.DbAttributes.DB_SYSTEM_NAME; import static io.opentelemetry.semconv.ErrorAttributes.ERROR_TYPE; import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; @@ -236,7 +237,8 @@ private void assertErrorTypeSpan() { equalTo(DB_OPERATION_NAME, "GET"), equalTo(SERVER_ADDRESS, httpHost.getHost()), equalTo(SERVER_PORT, Long.valueOf(httpHost.getPort())), - equalTo(ERROR_TYPE, "404")), + equalTo(ERROR_TYPE, "404"), + equalTo(DB_RESPONSE_STATUS_CODE, "404")), span -> span.hasName("GET").hasKind(SpanKind.CLIENT).hasParent(trace.getSpan(0)))); } diff --git a/instrumentation/opensearch/opensearch-rest-common-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/v1_0/OpenSearchRestAttributesGetter.java b/instrumentation/opensearch/opensearch-rest-common-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/v1_0/OpenSearchRestAttributesGetter.java index 6ff714f56bfc..e6b736bec7bc 100644 --- a/instrumentation/opensearch/opensearch-rest-common-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/v1_0/OpenSearchRestAttributesGetter.java +++ b/instrumentation/opensearch/opensearch-rest-common-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/v1_0/OpenSearchRestAttributesGetter.java @@ -51,6 +51,15 @@ public String getErrorType( return null; } + @Override + @Nullable + public String getDbResponseStatusCode( + OpenSearchRestRequest request, + @Nullable OpenSearchRestResponse response, + @Nullable Throwable error) { + return getErrorType(request, response, error); + } + @Override @Nullable public String getServerAddress(OpenSearchRestRequest request) { diff --git a/instrumentation/opensearch/opensearch-rest-common-1.0/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/AbstractOpenSearchRestTest.java b/instrumentation/opensearch/opensearch-rest-common-1.0/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/AbstractOpenSearchRestTest.java index e5cf4140e570..0d05c977696c 100644 --- a/instrumentation/opensearch/opensearch-rest-common-1.0/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/AbstractOpenSearchRestTest.java +++ b/instrumentation/opensearch/opensearch-rest-common-1.0/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/AbstractOpenSearchRestTest.java @@ -11,7 +11,9 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.semconv.DbAttributes.DB_OPERATION_NAME; +import static io.opentelemetry.semconv.DbAttributes.DB_RESPONSE_STATUS_CODE; import static io.opentelemetry.semconv.DbAttributes.DB_SYSTEM_NAME; +import static io.opentelemetry.semconv.ErrorAttributes.ERROR_TYPE; import static io.opentelemetry.semconv.HttpAttributes.HTTP_REQUEST_METHOD; import static io.opentelemetry.semconv.HttpAttributes.HTTP_RESPONSE_STATUS_CODE; import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PROTOCOL_VERSION; @@ -24,6 +26,7 @@ import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.instrumentation.testing.internal.AutoCleanupExtension; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; +import io.opentelemetry.sdk.trace.data.StatusData; import java.io.IOException; import java.net.URI; import java.util.concurrent.CountDownLatch; @@ -78,6 +81,33 @@ void setUp() throws Exception { cleanup.deferAfterAll(client); } + @Test + void recordsFailureResponseStatus() throws IOException { + // HEAD requests return 404 responses without throwing. + Request request = new Request("HEAD", "/missing-index"); + Response response = client.performRequest(request); + assertThat(getResponseStatus(response)).isEqualTo(404); + + getTesting() + .waitAndAssertTraces( + trace -> + trace.hasSpansSatisfyingExactly( + span -> + span.hasName("HEAD " + httpHost.getHost() + ":" + httpHost.getPort()) + .hasKind(SpanKind.CLIENT) + .hasNoParent() + .hasStatus(StatusData.unset()) + .hasAttributesSatisfyingExactly( + equalTo(DB_SYSTEM_NAME, OPENSEARCH), + equalTo(DB_OPERATION_NAME, "HEAD"), + equalTo(DB_RESPONSE_STATUS_CODE, "404"), + equalTo(ERROR_TYPE, "404"), + equalTo(SERVER_ADDRESS, httpHost.getHost()), + equalTo(SERVER_PORT, Long.valueOf(httpHost.getPort()))), + span -> + span.hasName("GET").hasKind(SpanKind.CLIENT).hasParent(trace.getSpan(0)))); + } + @Test void shouldGetStatusWithTraces() throws IOException { Response response = client.performRequest(new Request("GET", "_cluster/health")); @@ -96,7 +126,7 @@ void shouldGetStatusWithTraces() throws IOException { equalTo(SERVER_ADDRESS, httpHost.getHost()), equalTo(SERVER_PORT, Long.valueOf(httpHost.getPort()))), span -> - span.hasName("GET") + span.hasName("HEAD") .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( diff --git a/instrumentation/r2dbc-1.0/library/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/internal/R2dbcSqlAttributesGetter.java b/instrumentation/r2dbc-1.0/library/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/internal/R2dbcSqlAttributesGetter.java index db45ec586bc9..5b398ad52dec 100644 --- a/instrumentation/r2dbc-1.0/library/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/internal/R2dbcSqlAttributesGetter.java +++ b/instrumentation/r2dbc-1.0/library/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/internal/R2dbcSqlAttributesGetter.java @@ -51,6 +51,13 @@ public Long getDbOperationBatchSize(DbExecution request) { @Override public String getErrorType( DbExecution request, @Nullable Void response, @Nullable Throwable error) { + return getDbResponseStatusCode(request, null, error); + } + + @Nullable + @Override + public String getDbResponseStatusCode( + DbExecution request, @Nullable Void response, @Nullable Throwable error) { if (error instanceof R2dbcException) { return ((R2dbcException) error).getSqlState(); } diff --git a/instrumentation/r2dbc-1.0/library/src/test/java/io/opentelemetry/instrumentation/r2dbc/v1_0/R2dbcSqlAttributesGetterTest.java b/instrumentation/r2dbc-1.0/library/src/test/java/io/opentelemetry/instrumentation/r2dbc/v1_0/R2dbcSqlAttributesGetterTest.java index a777b79c697e..1876ef56b92f 100644 --- a/instrumentation/r2dbc-1.0/library/src/test/java/io/opentelemetry/instrumentation/r2dbc/v1_0/R2dbcSqlAttributesGetterTest.java +++ b/instrumentation/r2dbc-1.0/library/src/test/java/io/opentelemetry/instrumentation/r2dbc/v1_0/R2dbcSqlAttributesGetterTest.java @@ -18,6 +18,7 @@ import io.r2dbc.proxy.test.MockConnectionInfo; import io.r2dbc.proxy.test.MockQueryExecutionInfo; import io.r2dbc.spi.ConnectionFactoryOptions; +import io.r2dbc.spi.R2dbcBadGrammarException; import java.util.Collection; import java.util.stream.Stream; import org.junit.jupiter.api.Test; @@ -30,6 +31,26 @@ class R2dbcSqlAttributesGetterTest { private final R2dbcSqlAttributesGetter getter = new R2dbcSqlAttributesGetter(); + @ParameterizedTest + @MethodSource("responseStatuses") + void responseStatus(Throwable error, String expectedStatus) { + DbExecution request = + new DbExecution( + queryExecutionInfo(), + ConnectionFactoryOptions.parse("r2dbc:postgresql://localhost/db")); + + assertThat(getter.getDbResponseStatusCode(request, null, error)).isEqualTo(expectedStatus); + assertThat(getter.getErrorType(request, null, error)).isEqualTo(expectedStatus); + } + + private static Stream responseStatuses() { + return Stream.of( + argumentSet("SQLSTATE", new R2dbcBadGrammarException("test", "42601", 42), "42601"), + argumentSet("no SQLSTATE", new R2dbcBadGrammarException("test"), null), + argumentSet("non-database failure", new IllegalStateException("test"), null), + argumentSet("success", null, null)); + } + @Test void rawQueryTextsForSingleQuery() { QueryExecutionInfo queryExecutionInfo = diff --git a/instrumentation/rediscala-1.8/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/rediscala/v1_8/RediscalaAttributesGetterTest.java b/instrumentation/rediscala-1.8/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/rediscala/v1_8/RediscalaAttributesGetterTest.java index a0c49e73df5c..c34b5bc7c6a3 100644 --- a/instrumentation/rediscala-1.8/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/rediscala/v1_8/RediscalaAttributesGetterTest.java +++ b/instrumentation/rediscala-1.8/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/rediscala/v1_8/RediscalaAttributesGetterTest.java @@ -11,11 +11,25 @@ import io.opentelemetry.instrumentation.api.incubator.semconv.db.internal.RedisServerTarget; import org.junit.jupiter.api.Test; +import redis.actors.ReplyErrorException; class RediscalaAttributesGetterTest { private final RediscalaAttributesGetter getter = new RediscalaAttributesGetter(); + @Test + void responseStatusUsesOnlyServerErrorPrefixes() { + assertThat( + getter.getDbResponseStatusCode(null, null, new ReplyErrorException("WRONGTYPE detail"))) + .isEqualTo("WRONGTYPE"); + assertThat(getter.getDbResponseStatusCode(null, null, new ReplyErrorException(" "))).isNull(); + assertThat( + getter.getDbResponseStatusCode( + null, null, new IllegalStateException("WRONGTYPE detail"))) + .isNull(); + assertThat(getter.getDbResponseStatusCode(null, null, null)).isNull(); + } + @Test void requestWithoutTargetDoesNotUseSelectedAddressAsServer() { RediscalaRequest request = request(null); diff --git a/instrumentation/rediscala-1.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rediscala/v1_8/RediscalaAttributesGetter.java b/instrumentation/rediscala-1.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rediscala/v1_8/RediscalaAttributesGetter.java index 9ebaab1353a6..b8c61bf70d61 100644 --- a/instrumentation/rediscala-1.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rediscala/v1_8/RediscalaAttributesGetter.java +++ b/instrumentation/rediscala-1.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rediscala/v1_8/RediscalaAttributesGetter.java @@ -45,6 +45,13 @@ public Long getDbOperationBatchSize(RediscalaRequest request) { return request.getBatchSize(); } + @Nullable + @Override + public String getDbResponseStatusCode( + RediscalaRequest request, @Nullable Void response, @Nullable Throwable error) { + return getErrorType(request, null, error); + } + @Nullable @Override public String getErrorType( diff --git a/instrumentation/rediscala-1.8/javaagent/src/test/scala/io/opentelemetry/javaagent/instrumentation/rediscala/v1_8/RediscalaClientTest.scala b/instrumentation/rediscala-1.8/javaagent/src/test/scala/io/opentelemetry/javaagent/instrumentation/rediscala/v1_8/RediscalaClientTest.scala index c43cb76063bc..f0f9b04a8846 100644 --- a/instrumentation/rediscala-1.8/javaagent/src/test/scala/io/opentelemetry/javaagent/instrumentation/rediscala/v1_8/RediscalaClientTest.scala +++ b/instrumentation/rediscala-1.8/javaagent/src/test/scala/io/opentelemetry/javaagent/instrumentation/rediscala/v1_8/RediscalaClientTest.scala @@ -23,6 +23,7 @@ import io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DbSystemNameIn import io.opentelemetry.semconv.DbAttributes.{ DB_NAMESPACE, DB_OPERATION_NAME, + DB_RESPONSE_STATUS_CODE, DB_SYSTEM_NAME } import io.opentelemetry.semconv.NetworkAttributes.{ @@ -203,7 +204,7 @@ class RediscalaClientTest { } }).isInstanceOf(classOf[ReplyErrorException]) - assertErrorType("LPUSH", "WRONGTYPE") + assertErrorType("LPUSH", "WRONGTYPE", responseStatusCode = "WRONGTYPE") } @Test def testCustomServerErrorPrefixSetsErrorType(): Unit = { @@ -223,7 +224,11 @@ class RediscalaClientTest { } }).isInstanceOf(classOf[ReplyErrorException]) - assertErrorType("EVAL", "Custom.Code!É") + assertErrorType( + "EVAL", + "Custom.Code!É", + responseStatusCode = "Custom.Code!É" + ) } @Test def testClientFailureUsesExceptionClassAsErrorType(): Unit = { @@ -472,7 +477,8 @@ class RediscalaClientTest { private def assertErrorType( operationName: String, errorType: String, - serverPort: JLong = port + serverPort: JLong = port, + responseStatusCode: String = null ): Unit = { testing.waitAndAssertTraces(new Consumer[TraceAssert] { override def accept(trace: TraceAssert): Unit = @@ -495,6 +501,10 @@ class RediscalaClientTest { equalTo(DB_NAMESPACE, defaultDbIndex.toString), equalTo(SERVER_ADDRESS, host), equalTo(SERVER_PORT, serverPort), + equalTo( + DB_RESPONSE_STATUS_CODE, + responseStatusCode + ), equalTo(ERROR_TYPE, errorType) ) } diff --git a/instrumentation/spymemcached-2.12/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/spymemcached/v2_12/SpymemcachedAttributesGetterTest.java b/instrumentation/spymemcached-2.12/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/spymemcached/v2_12/SpymemcachedAttributesGetterTest.java index 65f46a8f6aeb..dbc23795686e 100644 --- a/instrumentation/spymemcached-2.12/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/spymemcached/v2_12/SpymemcachedAttributesGetterTest.java +++ b/instrumentation/spymemcached-2.12/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/spymemcached/v2_12/SpymemcachedAttributesGetterTest.java @@ -26,12 +26,47 @@ import java.util.concurrent.atomic.AtomicReference; import net.spy.memcached.MemcachedConnection; import net.spy.memcached.MemcachedNode; +import net.spy.memcached.internal.OperationFuture; +import net.spy.memcached.ops.OperationStatus; +import net.spy.memcached.ops.StatusCode; import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.EnumSource; class SpymemcachedAttributesGetterTest { private final SpymemcachedAttributesGetter getter = new SpymemcachedAttributesGetter(); + @Test + void responseStatusUsesOnlyExistingServerFailureClassification() { + OperationFuture future = mock(OperationFuture.class); + when(future.getStatus()) + .thenReturn(new OperationStatus(false, "too large", StatusCode.ERR_2BIG)); + assertThat(getter.getDbResponseStatusCode(null, future, null)).isEqualTo("ERR_2BIG"); + assertThat(getter.getErrorType(null, future, null)).isEqualTo("ERR_2BIG"); + + when(future.getStatus()).thenReturn(new OperationStatus(true, "stored", StatusCode.SUCCESS)); + assertThat(getter.getDbResponseStatusCode(null, future, null)).isNull(); + when(future.getStatus()) + .thenReturn(new OperationStatus(false, "cancelled", StatusCode.CANCELLED)); + assertThat(getter.getDbResponseStatusCode(null, future, null)).isNull(); + assertThat(getter.getDbResponseStatusCode(null, null, new IllegalStateException("failed"))) + .isNull(); + assertThat(getter.getDbResponseStatusCode(null, null, null)).isNull(); + } + + @ParameterizedTest + @EnumSource( + value = StatusCode.class, + names = {"TIMEDOUT", "INTERRUPTED", "ERR_CLIENT"}) + void clientStatusesRemainErrorsWithoutResponseStatusCodes(StatusCode code) { + OperationFuture future = mock(OperationFuture.class); + when(future.getStatus()).thenReturn(new OperationStatus(false, "client failure", code)); + + assertThat(getter.getErrorType(null, future, null)).isEqualTo(code.name()); + assertThat(getter.getDbResponseStatusCode(null, future, null)).isNull(); + } + @Test void singleDefaultPortIsOmitted() { SpymemcachedRequest request = request(singletonList(node("one.example", 11211))); diff --git a/instrumentation/spymemcached-2.12/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spymemcached/v2_12/SpymemcachedAttributesGetter.java b/instrumentation/spymemcached-2.12/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spymemcached/v2_12/SpymemcachedAttributesGetter.java index b264dbaafd44..42076b3dfd46 100644 --- a/instrumentation/spymemcached-2.12/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spymemcached/v2_12/SpymemcachedAttributesGetter.java +++ b/instrumentation/spymemcached-2.12/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spymemcached/v2_12/SpymemcachedAttributesGetter.java @@ -38,6 +38,19 @@ public String getDbOperationName(SpymemcachedRequest spymemcachedRequest) { return spymemcachedRequest.getStableOperationName(); } + @Override + @Nullable + public String getDbResponseStatusCode( + SpymemcachedRequest request, @Nullable Object response, @Nullable Throwable error) { + String code = getErrorType(request, response, error); + if (StatusCode.TIMEDOUT.name().equals(code) + || StatusCode.INTERRUPTED.name().equals(code) + || StatusCode.ERR_CLIENT.name().equals(code)) { + return null; + } + return code; + } + @Override @Nullable public String getErrorType( diff --git a/instrumentation/spymemcached-2.12/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spymemcached/v2_12/SpymemcachedTest.java b/instrumentation/spymemcached-2.12/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spymemcached/v2_12/SpymemcachedTest.java index 9b224d154ef4..d713b020bd45 100644 --- a/instrumentation/spymemcached-2.12/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spymemcached/v2_12/SpymemcachedTest.java +++ b/instrumentation/spymemcached-2.12/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spymemcached/v2_12/SpymemcachedTest.java @@ -13,6 +13,7 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; import static io.opentelemetry.semconv.DbAttributes.DB_OPERATION_NAME; import static io.opentelemetry.semconv.DbAttributes.DB_QUERY_TEXT; +import static io.opentelemetry.semconv.DbAttributes.DB_RESPONSE_STATUS_CODE; import static io.opentelemetry.semconv.DbAttributes.DB_SYSTEM_NAME; import static io.opentelemetry.semconv.ErrorAttributes.ERROR_TYPE; import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_MESSAGE; @@ -260,6 +261,7 @@ void storeRejectedAsTooLarge() throws Exception { NETWORK_PEER_ADDRESS, memcachedAddress.getAddress().getHostAddress()), equalTo(NETWORK_PEER_PORT, memcachedAddress.getPort()), + equalTo(DB_RESPONSE_STATUS_CODE, testLatestDeps() ? "ERR_2BIG" : null), equalTo(ERROR_TYPE, errorType)))); assertDurationMetric( testing, diff --git a/instrumentation/vertx/vertx-redis-client/vertx-redis-client-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/redisclient/v4_0/VertxRedisClientAttributesGetter.java b/instrumentation/vertx/vertx-redis-client/vertx-redis-client-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/redisclient/v4_0/VertxRedisClientAttributesGetter.java index 907f1cab4c91..a828af9eaf30 100644 --- a/instrumentation/vertx/vertx-redis-client/vertx-redis-client-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/redisclient/v4_0/VertxRedisClientAttributesGetter.java +++ b/instrumentation/vertx/vertx-redis-client/vertx-redis-client-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/redisclient/v4_0/VertxRedisClientAttributesGetter.java @@ -74,6 +74,13 @@ public Integer getNetworkPeerPort(VertxRedisClientRequest request, @Nullable Voi return request.getPeerPort(); } + @Override + @Nullable + public String getDbResponseStatusCode( + VertxRedisClientRequest request, @Nullable Void response, @Nullable Throwable error) { + return VertxRedisClientError.getErrorType(error); + } + @Override @Nullable public String getErrorType( diff --git a/instrumentation/vertx/vertx-redis-client/vertx-redis-client-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/vertx/redisclient/v4_0/VertxRedisClientTest.java b/instrumentation/vertx/vertx-redis-client/vertx-redis-client-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/vertx/redisclient/v4_0/VertxRedisClientTest.java index f546797b6421..c9bd77a0ac9e 100644 --- a/instrumentation/vertx/vertx-redis-client/vertx-redis-client-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/vertx/redisclient/v4_0/VertxRedisClientTest.java +++ b/instrumentation/vertx/vertx-redis-client/vertx-redis-client-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/vertx/redisclient/v4_0/VertxRedisClientTest.java @@ -14,6 +14,7 @@ import static io.opentelemetry.semconv.DbAttributes.DB_OPERATION_BATCH_SIZE; import static io.opentelemetry.semconv.DbAttributes.DB_OPERATION_NAME; import static io.opentelemetry.semconv.DbAttributes.DB_QUERY_TEXT; +import static io.opentelemetry.semconv.DbAttributes.DB_RESPONSE_STATUS_CODE; import static io.opentelemetry.semconv.DbAttributes.DB_SYSTEM_NAME; import static io.opentelemetry.semconv.ErrorAttributes.ERROR_TYPE; import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_ADDRESS; @@ -281,7 +282,11 @@ private static void assertErrorTypeTelemetry( AttributeAssertion[] operationAttributes = redisSpanAttributes(operationName, queryText, batchSize); AttributeAssertion[] attributes = - Arrays.copyOf(operationAttributes, operationAttributes.length + 1); + Arrays.copyOf(operationAttributes, operationAttributes.length + 2); + attributes[attributes.length - 2] = + equalTo( + DB_RESPONSE_STATUS_CODE, + ErrorType.class.getName().equals(errorType) ? null : errorType); attributes[attributes.length - 1] = equalTo(ERROR_TYPE, errorType); testing.waitAndAssertTraces( diff --git a/instrumentation/vertx/vertx-redis-client/vertx-redis-client-4.0/javaagent/src/testShared/java/io/opentelemetry/javaagent/instrumentation/vertx/redisclient/v4_0/VertxRedisClientErrorTest.java b/instrumentation/vertx/vertx-redis-client/vertx-redis-client-4.0/javaagent/src/testShared/java/io/opentelemetry/javaagent/instrumentation/vertx/redisclient/v4_0/VertxRedisClientErrorTest.java index cce48d56a3e3..cba7a17dfc9c 100644 --- a/instrumentation/vertx/vertx-redis-client/vertx-redis-client-4.0/javaagent/src/testShared/java/io/opentelemetry/javaagent/instrumentation/vertx/redisclient/v4_0/VertxRedisClientErrorTest.java +++ b/instrumentation/vertx/vertx-redis-client/vertx-redis-client-4.0/javaagent/src/testShared/java/io/opentelemetry/javaagent/instrumentation/vertx/redisclient/v4_0/VertxRedisClientErrorTest.java @@ -13,6 +13,7 @@ import static io.opentelemetry.semconv.DbAttributes.DB_OPERATION_BATCH_SIZE; import static io.opentelemetry.semconv.DbAttributes.DB_OPERATION_NAME; import static io.opentelemetry.semconv.DbAttributes.DB_QUERY_TEXT; +import static io.opentelemetry.semconv.DbAttributes.DB_RESPONSE_STATUS_CODE; import static io.opentelemetry.semconv.DbAttributes.DB_SYSTEM_NAME; import static io.opentelemetry.semconv.ErrorAttributes.ERROR_TYPE; import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_ADDRESS; @@ -180,7 +181,7 @@ void batchQueueFailureUsesExceptionClass() Throwable error = failure(connection.batch(requests(3))); assertThat(error).isNotInstanceOf(ErrorType.class); - assertTelemetry(error.getClass().getName(), 3); + assertTelemetry(error.getClass().getName(), 3, null); } @Test @@ -404,6 +405,11 @@ private static Throwable failure(Future future) } private void assertTelemetry(String errorType, int requestCount) { + assertTelemetry( + errorType, requestCount, ErrorType.class.getName().equals(errorType) ? null : errorType); + } + + private void assertTelemetry(String errorType, int requestCount, String responseStatusCode) { String operation = requestCount == 1 ? "GET" : "PIPELINE GET"; testing.waitAndAssertTraces( trace -> @@ -429,6 +435,7 @@ private void assertTelemetry(String errorType, int requestCount) { equalTo(NETWORK_PEER_ADDRESS, HOST), equalTo(NETWORK_PEER_PORT, server.port), equalTo(stringKey("server.service.name"), expectedMappedServiceName()), + equalTo(DB_RESPONSE_STATUS_CODE, responseStatusCode), equalTo(ERROR_TYPE, errorType)))); testing.waitAndAssertMetrics( INSTRUMENTATION_NAME, diff --git a/instrumentation/vertx/vertx-redis-client/vertx-redis-client-4.0/javaagent/src/unitTests/java/io/opentelemetry/javaagent/instrumentation/vertx/redisclient/v4_0/VertxRedisClientAttributesGetterTest.java b/instrumentation/vertx/vertx-redis-client/vertx-redis-client-4.0/javaagent/src/unitTests/java/io/opentelemetry/javaagent/instrumentation/vertx/redisclient/v4_0/VertxRedisClientAttributesGetterTest.java index 11add7d1085d..6cd57c2ed9ea 100644 --- a/instrumentation/vertx/vertx-redis-client/vertx-redis-client-4.0/javaagent/src/unitTests/java/io/opentelemetry/javaagent/instrumentation/vertx/redisclient/v4_0/VertxRedisClientAttributesGetterTest.java +++ b/instrumentation/vertx/vertx-redis-client/vertx-redis-client-4.0/javaagent/src/unitTests/java/io/opentelemetry/javaagent/instrumentation/vertx/redisclient/v4_0/VertxRedisClientAttributesGetterTest.java @@ -15,6 +15,7 @@ import io.vertx.core.net.NetSocket; import io.vertx.core.net.SocketAddress; import io.vertx.redis.client.impl.RedisURI; +import io.vertx.redis.client.impl.types.ErrorType; import org.junit.jupiter.api.Test; class VertxRedisClientAttributesGetterTest { @@ -26,6 +27,22 @@ class VertxRedisClientAttributesGetterTest { private final VertxRedisClientAttributesGetter getter = new VertxRedisClientAttributesGetter(); + @Test + void responseStatusUsesOnlyServerErrorPrefixes() { + ErrorType error = mock(ErrorType.class); + when(error.getMessage()).thenReturn("WRONGTYPE detail"); + VertxRedisClientError.captureServerError(error); + assertThat(getter.getDbResponseStatusCode(null, null, error)).isEqualTo("WRONGTYPE"); + ErrorType localError = mock(ErrorType.class); + when(localError.getMessage()).thenReturn("WRONGTYPE detail"); + assertThat(getter.getDbResponseStatusCode(null, null, localError)).isNull(); + assertThat( + getter.getDbResponseStatusCode( + null, null, new IllegalStateException("WRONGTYPE detail"))) + .isNull(); + assertThat(getter.getDbResponseStatusCode(null, null, null)).isNull(); + } + @Test void capturedUnrepresentableTargetOmitsSelectedEndpoint() { VertxRedisClientRequest request = request(null, true); diff --git a/instrumentation/vertx/vertx-sql-client/vertx-sql-client-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/v4_0/VertxSqlClientTest.java b/instrumentation/vertx/vertx-sql-client/vertx-sql-client-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/v4_0/VertxSqlClientTest.java index 8befa564b989..9a4602951971 100644 --- a/instrumentation/vertx/vertx-sql-client/vertx-sql-client-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/v4_0/VertxSqlClientTest.java +++ b/instrumentation/vertx/vertx-sql-client/vertx-sql-client-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/v4_0/VertxSqlClientTest.java @@ -14,6 +14,7 @@ import static io.opentelemetry.semconv.DbAttributes.DB_OPERATION_BATCH_SIZE; import static io.opentelemetry.semconv.DbAttributes.DB_QUERY_SUMMARY; import static io.opentelemetry.semconv.DbAttributes.DB_QUERY_TEXT; +import static io.opentelemetry.semconv.DbAttributes.DB_RESPONSE_STATUS_CODE; import static io.opentelemetry.semconv.DbAttributes.DB_SYSTEM_NAME; import static io.opentelemetry.semconv.ErrorAttributes.ERROR_TYPE; import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_MESSAGE; @@ -214,7 +215,8 @@ void testInvalidQuery() throws Exception { equalTo(stringKey("server.service.name"), expectedMappedServiceName()), equalTo(SERVER_ADDRESS, host), equalTo(SERVER_PORT, port), - equalTo(ERROR_TYPE, "42601")), + equalTo(ERROR_TYPE, "42601"), + equalTo(DB_RESPONSE_STATUS_CODE, "42601")), span -> span.hasName("callback") .hasKind(SpanKind.INTERNAL) @@ -363,7 +365,8 @@ void testExplicitPreparedSelectFailure() throws Exception { equalTo(stringKey("server.service.name"), expectedMappedServiceName()), equalTo(SERVER_ADDRESS, host), equalTo(SERVER_PORT, port), - equalTo(ERROR_TYPE, "22012")))); + equalTo(ERROR_TYPE, "22012"), + equalTo(DB_RESPONSE_STATUS_CODE, "22012")))); } private static Future executePreparedStatement(String query, Tuple tuple) { diff --git a/instrumentation/vertx/vertx-sql-client/vertx-sql-client-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/v5_0/VertxSqlClientTest.java b/instrumentation/vertx/vertx-sql-client/vertx-sql-client-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/v5_0/VertxSqlClientTest.java index b09883362cd3..65b5c7ba1c69 100644 --- a/instrumentation/vertx/vertx-sql-client/vertx-sql-client-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/v5_0/VertxSqlClientTest.java +++ b/instrumentation/vertx/vertx-sql-client/vertx-sql-client-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/v5_0/VertxSqlClientTest.java @@ -16,6 +16,7 @@ import static io.opentelemetry.semconv.DbAttributes.DB_OPERATION_BATCH_SIZE; import static io.opentelemetry.semconv.DbAttributes.DB_QUERY_SUMMARY; import static io.opentelemetry.semconv.DbAttributes.DB_QUERY_TEXT; +import static io.opentelemetry.semconv.DbAttributes.DB_RESPONSE_STATUS_CODE; import static io.opentelemetry.semconv.DbAttributes.DB_SYSTEM_NAME; import static io.opentelemetry.semconv.ErrorAttributes.ERROR_TYPE; import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_MESSAGE; @@ -1882,7 +1883,8 @@ private static void assertOracleConnectFailure(TraceAssert trace, Throwable erro equalTo(stringKey("server.service.name"), expectedMappedServiceName()), equalTo(SERVER_ADDRESS, "127.0.0.1"), equalTo(SERVER_PORT, 1), - equalTo(ERROR_TYPE, "66000"))); + equalTo(ERROR_TYPE, "66000"), + equalTo(DB_RESPONSE_STATUS_CODE, "66000"))); } private static void select(SqlClient client) throws Exception { @@ -2003,7 +2005,8 @@ void testInvalidQuery() throws Exception { equalTo(stringKey("server.service.name"), expectedMappedServiceName()), equalTo(SERVER_ADDRESS, host), equalTo(SERVER_PORT, port), - equalTo(ERROR_TYPE, "42601")), + equalTo(ERROR_TYPE, "42601"), + equalTo(DB_RESPONSE_STATUS_CODE, "42601")), span -> span.hasName("callback") .hasKind(SpanKind.INTERNAL) @@ -2143,7 +2146,8 @@ void testExplicitPreparedSelectFailure() throws Exception { equalTo(stringKey("server.service.name"), expectedMappedServiceName()), equalTo(SERVER_ADDRESS, host), equalTo(SERVER_PORT, port), - equalTo(ERROR_TYPE, "22012")))); + equalTo(ERROR_TYPE, "22012"), + equalTo(DB_RESPONSE_STATUS_CODE, "22012")))); } private static Future executePreparedStatement(String query, Tuple tuple) { diff --git a/instrumentation/vertx/vertx-sql-client/vertx-sql-client-common-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetter.java b/instrumentation/vertx/vertx-sql-client/vertx-sql-client-common-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetter.java index f937038468b6..b33e362165a4 100644 --- a/instrumentation/vertx/vertx-sql-client/vertx-sql-client-common-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetter.java +++ b/instrumentation/vertx/vertx-sql-client/vertx-sql-client-common-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetter.java @@ -65,6 +65,13 @@ public Long getDbOperationBatchSize(VertxSqlClientRequest request) { @Override public String getErrorType( VertxSqlClientRequest request, @Nullable Void response, @Nullable Throwable error) { + return getDbResponseStatusCode(request, null, error); + } + + @Nullable + @Override + public String getDbResponseStatusCode( + VertxSqlClientRequest request, @Nullable Void response, @Nullable Throwable error) { return responseStatusExtractor.apply(error); } From 2b1e066041f7523c5537b4d3e981f479534bfd1f Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 24 Oct 2026 23:23:39 +0000 Subject: [PATCH 04/33] Remove temporary validation logs from database status changes Co-authored-by: trask <218610+trask@users.noreply.github.com> --- db-status-rest-format.log | 67 -- db-status-rest-tests.log | 1836 ------------------------------------- 2 files changed, 1903 deletions(-) delete mode 100644 db-status-rest-format.log delete mode 100644 db-status-rest-tests.log diff --git a/db-status-rest-format.log b/db-status-rest-format.log deleted file mode 100644 index a79c68721b77..000000000000 --- a/db-status-rest-format.log +++ /dev/null @@ -1,67 +0,0 @@ -Parallel Configuration Cache is an incubating feature. -Calculating task graph as no cached configuration is available for tasks: :instrumentation:elasticsearch:elasticsearch-rest-5.0:javaagent:spotlessJavaApply :instrumentation:opensearch:opensearch-rest-common-1.0:testing:spotlessJavaApply -> Task :conventions:checkKotlinGradlePluginConfigurationErrors SKIPPED -> Task :conventions:extractPrecompiledScriptPluginPlugins UP-TO-DATE -> Task :gradle-plugins:checkKotlinGradlePluginConfigurationErrors SKIPPED -> Task :conventions:generateScriptPluginAdapters UP-TO-DATE -> Task :conventions:pluginDescriptors UP-TO-DATE -> Task :conventions:processResources UP-TO-DATE -> Task :gradle-plugins:generateExternalPluginSpecBuilders UP-TO-DATE -> Task :gradle-plugins:extractPrecompiledScriptPluginPlugins UP-TO-DATE -> Task :gradle-plugins:compilePluginsBlocks UP-TO-DATE -> Task :gradle-plugins:generatePrecompiledScriptPluginAccessors UP-TO-DATE -> Task :gradle-plugins:generateScriptPluginAdapters UP-TO-DATE -> Task :gradle-plugins:compileKotlin UP-TO-DATE -> Task :gradle-plugins:compileJava NO-SOURCE -> Task :gradle-plugins:pluginDescriptors UP-TO-DATE -> Task :gradle-plugins:processResources UP-TO-DATE -> Task :gradle-plugins:classes UP-TO-DATE -> Task :gradle-plugins:jar UP-TO-DATE -> Task :conventions:generateExternalPluginSpecBuilders UP-TO-DATE -> Task :conventions:compilePluginsBlocks UP-TO-DATE -> Task :conventions:generatePrecompiledScriptPluginAccessors UP-TO-DATE -> Task :conventions:compileKotlin UP-TO-DATE -> Task :conventions:compileJava NO-SOURCE -> Task :conventions:classes UP-TO-DATE -> Task :conventions:jar UP-TO-DATE -> Task :quarkus-2.0-plugin:pluginDescriptors UP-TO-DATE -> Task :quarkus-2.0-plugin:processResources UP-TO-DATE -> Task :quarkus-common-plugin:compileJava UP-TO-DATE -> Task :quarkus-common-plugin:processResources NO-SOURCE -> Task :quarkus-common-plugin:classes UP-TO-DATE -> Task :quarkus-common-plugin:jar UP-TO-DATE -> Task :quarkus-2.0-plugin:compileJava UP-TO-DATE -> Task :quarkus-2.0-plugin:classes UP-TO-DATE -> Task :quarkus-2.0-plugin:jar UP-TO-DATE -> Task :quarkus-3.0-plugin:compileJava UP-TO-DATE -> Task :quarkus-3.0-plugin:pluginDescriptors UP-TO-DATE -> Task :quarkus-3.0-plugin:processResources UP-TO-DATE -> Task :quarkus-3.0-plugin:classes UP-TO-DATE -> Task :quarkus-3.0-plugin:jar UP-TO-DATE -> Task :quarkus-3.9-plugin:compileJava UP-TO-DATE -> Task :quarkus-3.9-plugin:pluginDescriptors UP-TO-DATE -> Task :quarkus-3.9-plugin:processResources UP-TO-DATE -> Task :quarkus-3.9-plugin:classes UP-TO-DATE -> Task :quarkus-3.9-plugin:jar UP-TO-DATE -> Task :instrumentation:opensearch:opensearch-rest-common-1.0:testing:spotlessJava -> Task :instrumentation:opensearch:opensearch-rest-common-1.0:testing:spotlessJavaApply -> Task :instrumentation:elasticsearch:elasticsearch-rest-5.0:javaagent:spotlessJava -> Task :instrumentation:elasticsearch:elasticsearch-rest-5.0:javaagent:spotlessJavaApply -gradle/actions: Writing build results to /home/runner/work/_temp/.gradle-actions/build-results/__run_27-1792884104119.json - -[Incubating] Problems report is available at: file:///home/runner/work/opentelemetry-java-instrumentation/opentelemetry-java-instrumentation/build/reports/problems/problems-report.html - -Deprecated Gradle features were used in this build, making it incompatible with Gradle 10. - -You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins. - -For more on this, please refer to https://docs.gradle.org/9.8.2/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation. - -BUILD SUCCESSFUL in 7s -36 actionable tasks: 4 executed, 32 up-to-date - -Publishing Build Scan to Develocity... -gradle/actions: Writing build results to /home/runner/work/_temp/.gradle-actions/build-scans/__run_27-1792884104119.json -https://gradle.com/s/oqa32t5fjgabk - -Configuration cache entry stored. diff --git a/db-status-rest-tests.log b/db-status-rest-tests.log deleted file mode 100644 index 2958baa00e60..000000000000 --- a/db-status-rest-tests.log +++ /dev/null @@ -1,1836 +0,0 @@ -Parallel Configuration Cache is an incubating feature. -Calculating task graph as no cached configuration is available for tasks: :instrumentation:elasticsearch:elasticsearch-rest-5.0:javaagent:test --tests *ElasticsearchRest5Test.recordsFailureResponseStatus --tests *ElasticsearchRest5Test.elasticsearchStatus :instrumentation:opensearch:opensearch-rest-1.0:javaagent:test --tests *OpenSearchRestTest.recordsFailureResponseStatus --tests *OpenSearchRestTest.shouldGetStatusWithTraces :instrumentation:opensearch:opensearch-rest-3.0:javaagent:test --tests *OpenSearchRest3Test.recordsFailureResponseStatus --tests *OpenSearchRest3Test.shouldGetStatusWithTraces -> Task :conventions:checkKotlinGradlePluginConfigurationErrors SKIPPED -> Task :gradle-plugins:checkKotlinGradlePluginConfigurationErrors SKIPPED -> Task :conventions:extractPrecompiledScriptPluginPlugins UP-TO-DATE -> Task :conventions:generateScriptPluginAdapters UP-TO-DATE -> Task :conventions:pluginDescriptors UP-TO-DATE -> Task :conventions:processResources UP-TO-DATE -> Task :gradle-plugins:generateExternalPluginSpecBuilders UP-TO-DATE -> Task :gradle-plugins:extractPrecompiledScriptPluginPlugins UP-TO-DATE -> Task :gradle-plugins:compilePluginsBlocks UP-TO-DATE -> Task :gradle-plugins:generatePrecompiledScriptPluginAccessors UP-TO-DATE -> Task :gradle-plugins:generateScriptPluginAdapters UP-TO-DATE -> Task :gradle-plugins:compileKotlin UP-TO-DATE -> Task :gradle-plugins:compileJava NO-SOURCE -> Task :gradle-plugins:pluginDescriptors UP-TO-DATE -> Task :gradle-plugins:processResources UP-TO-DATE -> Task :gradle-plugins:classes UP-TO-DATE -> Task :gradle-plugins:jar UP-TO-DATE -> Task :conventions:generateExternalPluginSpecBuilders UP-TO-DATE -> Task :conventions:compilePluginsBlocks UP-TO-DATE -> Task :conventions:generatePrecompiledScriptPluginAccessors UP-TO-DATE -> Task :conventions:compileKotlin UP-TO-DATE -> Task :conventions:compileJava NO-SOURCE -> Task :conventions:classes UP-TO-DATE -> Task :conventions:jar UP-TO-DATE -> Task :quarkus-2.0-plugin:pluginDescriptors UP-TO-DATE -> Task :quarkus-2.0-plugin:processResources UP-TO-DATE -> Task :quarkus-common-plugin:compileJava UP-TO-DATE -> Task :quarkus-common-plugin:processResources NO-SOURCE -> Task :quarkus-common-plugin:classes UP-TO-DATE -> Task :quarkus-common-plugin:jar UP-TO-DATE -> Task :quarkus-2.0-plugin:compileJava UP-TO-DATE -> Task :quarkus-2.0-plugin:classes UP-TO-DATE -> Task :quarkus-2.0-plugin:jar UP-TO-DATE -> Task :quarkus-3.0-plugin:compileJava UP-TO-DATE -> Task :quarkus-3.0-plugin:pluginDescriptors UP-TO-DATE -> Task :quarkus-3.0-plugin:processResources UP-TO-DATE -> Task :quarkus-3.0-plugin:classes UP-TO-DATE -> Task :quarkus-3.0-plugin:jar UP-TO-DATE -> Task :quarkus-3.9-plugin:compileJava UP-TO-DATE -> Task :quarkus-3.9-plugin:pluginDescriptors UP-TO-DATE -> Task :quarkus-3.9-plugin:processResources UP-TO-DATE -> Task :quarkus-3.9-plugin:classes UP-TO-DATE -> Task :quarkus-3.9-plugin:jar UP-TO-DATE -> Task :custom-checks:processResources NO-SOURCE -> Task :declarative-config-bridge:processResources NO-SOURCE -> Task :custom-checks:compileJava UP-TO-DATE -> Task :custom-checks:classes UP-TO-DATE -> Task :instrumentation-api:processResources NO-SOURCE -> Task :instrumentation-annotations-support:processResources NO-SOURCE -> Task :custom-checks:jar UP-TO-DATE -> Task :instrumentation-api:compileJava UP-TO-DATE -> Task :declarative-config-bridge:compileJava UP-TO-DATE -> Task :declarative-config-bridge:classes UP-TO-DATE -> Task :declarative-config-bridge:jar UP-TO-DATE -> Task :instrumentation-api:classes UP-TO-DATE -> Task :instrumentation-api:jar UP-TO-DATE -> Task :instrumentation-api-incubator:generateJflex UP-TO-DATE -> Task :instrumentation-annotations-support:compileJava UP-TO-DATE -> Task :instrumentation-annotations-support:classes UP-TO-DATE -> Task :instrumentation-annotations-support:jar UP-TO-DATE -> Task :instrumentation-api-incubator:processResources NO-SOURCE -> Task :javaagent-bootstrap:processResources NO-SOURCE -> Task :javaagent-extension-api:processResources NO-SOURCE -> Task :instrumentation-api-incubator:compileJava UP-TO-DATE -> Task :instrumentation-api-incubator:classes UP-TO-DATE -> Task :muzzle:processResources UP-TO-DATE -> Task :instrumentation-api-incubator:jar UP-TO-DATE -> Task :sdk-autoconfigure-support:compileJava UP-TO-DATE -> Task :javaagent-bootstrap:compileJava UP-TO-DATE -> Task :javaagent-bootstrap:classes UP-TO-DATE -> Task :javaagent-extension-api:compileJava UP-TO-DATE -> Task :javaagent-extension-api:classes UP-TO-DATE -> Task :javaagent-extension-api:jar UP-TO-DATE -> Task :javaagent-bootstrap:jar UP-TO-DATE -> Task :sdk-autoconfigure-support:processResources UP-TO-DATE -> Task :sdk-autoconfigure-support:classes UP-TO-DATE -> Task :sdk-autoconfigure-support:jar UP-TO-DATE -> Task :muzzle:compileJava UP-TO-DATE -> Task :muzzle:classes UP-TO-DATE -> Task :muzzle:jar UP-TO-DATE -> Task :javaagent-tooling:javaagent-tooling-java9:compileJava UP-TO-DATE -> Task :javaagent-tooling:processResources NO-SOURCE -> Task :instrumentation:apache-httpasyncclient-4.1:javaagent:generateInstrumentationVersionFile UP-TO-DATE -> Task :instrumentation:apache-httpasyncclient-4.1:javaagent:processResources NO-SOURCE -> Task :javaagent-tooling:javaagent-tooling-java9:processResources NO-SOURCE -> Task :javaagent-tooling:javaagent-tooling-java9:classes UP-TO-DATE -> Task :instrumentation:apache-httpclient:apache-httpclient-4.0:javaagent:generateInstrumentationVersionFile UP-TO-DATE -> Task :javaagent-tooling:javaagent-tooling-java9:jar UP-TO-DATE -> Task :instrumentation:apache-httpclient:apache-httpclient-4.0:javaagent:processResources NO-SOURCE -> Task :instrumentation:elasticsearch:elasticsearch-rest-common-5.0:bootstrap:compileJava UP-TO-DATE -> Task :instrumentation:elasticsearch:elasticsearch-rest-common-5.0:bootstrap:processResources NO-SOURCE -> Task :instrumentation:elasticsearch:elasticsearch-rest-common-5.0:bootstrap:classes UP-TO-DATE -> Task :instrumentation:elasticsearch:elasticsearch-rest-common-5.0:bootstrap:jar UP-TO-DATE -> Task :javaagent-tooling:compileJava UP-TO-DATE -> Task :instrumentation:elasticsearch:elasticsearch-rest-common-5.0:javaagent:generateInstrumentationVersionFile UP-TO-DATE -> Task :javaagent-tooling:classes UP-TO-DATE -> Task :instrumentation:elasticsearch:elasticsearch-rest-common-5.0:javaagent:processResources NO-SOURCE -> Task :javaagent-tooling:jar UP-TO-DATE -> Task :instrumentation:elasticsearch:elasticsearch-rest-5.0:javaagent:generateInstrumentationVersionFile UP-TO-DATE -> Task :instrumentation:apache-httpasyncclient-4.1:javaagent:compileJava UP-TO-DATE -> Task :instrumentation:apache-httpclient:apache-httpclient-4.0:javaagent:compileJava UP-TO-DATE -> Task :instrumentation:apache-httpasyncclient-4.1:javaagent:byteBuddyJava UP-TO-DATE -> Task :instrumentation:apache-httpclient:apache-httpclient-4.0:javaagent:byteBuddyJava UP-TO-DATE -> Task :instrumentation:apache-httpasyncclient-4.1:javaagent:classes UP-TO-DATE -> Task :instrumentation:apache-httpclient:apache-httpclient-4.0:javaagent:classes UP-TO-DATE -> Task :instrumentation:apache-httpasyncclient-4.1:javaagent:jar UP-TO-DATE -> Task :instrumentation:apache-httpclient:apache-httpclient-4.0:javaagent:jar UP-TO-DATE -> Task :instrumentation:elasticsearch:elasticsearch-rest-5.0:javaagent:processResources NO-SOURCE -> Task :instrumentation:elasticsearch:elasticsearch-rest-6.4:javaagent:generateInstrumentationVersionFile UP-TO-DATE -> Task :instrumentation:elasticsearch:elasticsearch-rest-6.4:javaagent:processResources NO-SOURCE -> Task :instrumentation:elasticsearch:elasticsearch-rest-7.0:javaagent:generateInstrumentationVersionFile UP-TO-DATE -> Task :instrumentation:elasticsearch:elasticsearch-rest-7.0:javaagent:processResources NO-SOURCE -> Task :testing:dependencies-shaded-for-testing:compileJava NO-SOURCE -> Task :testing:dependencies-shaded-for-testing:processResources NO-SOURCE -> Task :testing:dependencies-shaded-for-testing:classes UP-TO-DATE -> Task :testing:dependencies-shaded-for-testing:shadowJar UP-TO-DATE -> Task :instrumentation:elasticsearch:elasticsearch-rest-common-5.0:javaagent:compileJava UP-TO-DATE -> Task :testing-common:compileJava UP-TO-DATE -> Task :testing-common:processResources UP-TO-DATE -> Task :instrumentation:elasticsearch:elasticsearch-rest-common-5.0:javaagent:byteBuddyJava UP-TO-DATE -> Task :instrumentation:elasticsearch:elasticsearch-rest-common-5.0:javaagent:classes UP-TO-DATE -> Task :instrumentation:elasticsearch:elasticsearch-rest-common-5.0:javaagent:jar UP-TO-DATE -> Task :instrumentation:elasticsearch:elasticsearch-rest-5.0:javaagent:compileJava UP-TO-DATE -> Task :instrumentation:elasticsearch:elasticsearch-rest-5.0:javaagent:byteBuddyJava UP-TO-DATE -> Task :instrumentation:elasticsearch:elasticsearch-rest-5.0:javaagent:classes UP-TO-DATE -> Task :instrumentation:elasticsearch:elasticsearch-rest-6.4:javaagent:compileJava UP-TO-DATE -> Task :instrumentation:elasticsearch:elasticsearch-rest-6.4:javaagent:byteBuddyJava UP-TO-DATE -> Task :instrumentation:elasticsearch:elasticsearch-rest-6.4:javaagent:classes UP-TO-DATE -> Task :instrumentation:elasticsearch:elasticsearch-rest-6.4:javaagent:jar UP-TO-DATE -> Task :instrumentation:elasticsearch:elasticsearch-rest-7.0:javaagent:compileJava UP-TO-DATE -> Task :instrumentation:elasticsearch:elasticsearch-rest-7.0:javaagent:byteBuddyJava UP-TO-DATE -> Task :instrumentation:elasticsearch:elasticsearch-rest-7.0:javaagent:classes UP-TO-DATE -> Task :instrumentation:elasticsearch:elasticsearch-rest-7.0:javaagent:jar UP-TO-DATE -> Task :instrumentation:elasticsearch:elasticsearch-rest-5.0:javaagent:shadowJar UP-TO-DATE -> Task :testing:agent-exporter:compileJava UP-TO-DATE -> Task :testing:agent-exporter:processResources NO-SOURCE -> Task :testing:agent-exporter:classes UP-TO-DATE -> Task :testing:agent-exporter:shadowJar UP-TO-DATE -> Task :testing:agent-for-testing:compileJava NO-SOURCE -> Task :testing:agent-for-testing:processResources NO-SOURCE -> Task :testing:agent-for-testing:classes UP-TO-DATE -> Task :instrumentation:apache-commons-pool-2.0:bootstrap:compileJava UP-TO-DATE -> Task :instrumentation:apache-commons-pool-2.0:bootstrap:processResources NO-SOURCE -> Task :instrumentation:apache-commons-pool-2.0:bootstrap:classes UP-TO-DATE -> Task :instrumentation:apache-commons-pool-2.0:bootstrap:jar UP-TO-DATE -> Task :instrumentation:executors:bootstrap:compileJava UP-TO-DATE -> Task :instrumentation:executors:bootstrap:processResources NO-SOURCE -> Task :instrumentation:executors:bootstrap:classes UP-TO-DATE -> Task :instrumentation:executors:bootstrap:jar UP-TO-DATE -> Task :instrumentation:jdbc:bootstrap:compileJava NO-SOURCE -> Task :instrumentation:jdbc:bootstrap:processResources NO-SOURCE -> Task :instrumentation:jdbc:library:compileJava UP-TO-DATE -> Task :instrumentation:jdbc:library:generateInstrumentationVersionFile UP-TO-DATE -> Task :instrumentation:jdbc:library:processResources UP-TO-DATE -> Task :instrumentation:jdbc:library:classes UP-TO-DATE -> Task :instrumentation:jdbc:library:shadowJar UP-TO-DATE -> Task :instrumentation:jdbc:library:extractShadowJarBootstrap UP-TO-DATE -> Task :instrumentation:jdbc:bootstrap:classes UP-TO-DATE -> Task :instrumentation:jdbc:bootstrap:jar UP-TO-DATE -> Task :instrumentation:rmi:bootstrap:compileJava UP-TO-DATE -> Task :instrumentation:rmi:bootstrap:processResources NO-SOURCE -> Task :instrumentation:rmi:bootstrap:classes UP-TO-DATE -> Task :instrumentation:rmi:bootstrap:jar UP-TO-DATE -> Task :instrumentation:undertow-1.4:bootstrap:compileJava UP-TO-DATE -> Task :instrumentation:undertow-1.4:bootstrap:processResources NO-SOURCE -> Task :instrumentation:undertow-1.4:bootstrap:classes UP-TO-DATE -> Task :instrumentation:undertow-1.4:bootstrap:jar UP-TO-DATE -> Task :instrumentation:internal:internal-application-logger:bootstrap:compileJava UP-TO-DATE -> Task :instrumentation:internal:internal-application-logger:bootstrap:processResources NO-SOURCE -> Task :instrumentation:internal:internal-application-logger:bootstrap:classes UP-TO-DATE -> Task :instrumentation:internal:internal-application-logger:bootstrap:jar UP-TO-DATE -> Task :instrumentation:servlet:servlet-common:bootstrap:compileJava UP-TO-DATE -> Task :instrumentation:servlet:servlet-common:bootstrap:processResources NO-SOURCE -> Task :instrumentation:servlet:servlet-common:bootstrap:classes UP-TO-DATE -> Task :instrumentation:servlet:servlet-common:bootstrap:jar UP-TO-DATE -> Task :instrumentation:jaxrs:jaxrs-common:bootstrap:compileJava UP-TO-DATE -> Task :instrumentation:jaxrs:jaxrs-common:bootstrap:processResources NO-SOURCE -> Task :instrumentation:jaxrs:jaxrs-common:bootstrap:classes UP-TO-DATE -> Task :instrumentation:jaxrs:jaxrs-common:bootstrap:jar UP-TO-DATE -> Task :instrumentation:jms:jms-common-1.1:bootstrap:compileJava UP-TO-DATE -> Task :instrumentation:jms:jms-common-1.1:bootstrap:processResources NO-SOURCE -> Task :instrumentation:jms:jms-common-1.1:bootstrap:classes UP-TO-DATE -> Task :instrumentation:jms:jms-common-1.1:bootstrap:jar UP-TO-DATE -> Task :instrumentation:spring:spring-scheduling-3.1:bootstrap:compileJava UP-TO-DATE -> Task :instrumentation:spring:spring-scheduling-3.1:bootstrap:processResources NO-SOURCE -> Task :instrumentation:spring:spring-scheduling-3.1:bootstrap:classes UP-TO-DATE -> Task :instrumentation:spring:spring-scheduling-3.1:bootstrap:jar UP-TO-DATE -> Task :instrumentation:kafka:kafka-clients:kafka-clients-0.11:bootstrap:compileJava UP-TO-DATE -> Task :instrumentation:kafka:kafka-clients:kafka-clients-0.11:bootstrap:processResources NO-SOURCE -> Task :instrumentation:kafka:kafka-clients:kafka-clients-0.11:bootstrap:classes UP-TO-DATE -> Task :instrumentation:kafka:kafka-clients:kafka-clients-0.11:bootstrap:jar UP-TO-DATE -> Task :javaagent:buildBootstrapLibs UP-TO-DATE -> Task :javaagent-internal-logging-application:compileJava UP-TO-DATE -> Task :javaagent-internal-logging-application:processResources NO-SOURCE -> Task :javaagent-internal-logging-application:classes UP-TO-DATE -> Task :javaagent-internal-logging-application:jar UP-TO-DATE -> Task :javaagent-internal-logging-simple:compileJava UP-TO-DATE -> Task :javaagent-internal-logging-simple:processResources NO-SOURCE -> Task :javaagent-internal-logging-simple:classes UP-TO-DATE -> Task :javaagent-internal-logging-simple:shadowJar UP-TO-DATE -> Task :instrumentation:executors:javaagent:compileJava UP-TO-DATE -> Task :instrumentation:executors:javaagent:generateInstrumentationVersionFile UP-TO-DATE -> Task :instrumentation:executors:javaagent:processResources NO-SOURCE -> Task :instrumentation:executors:javaagent:byteBuddyJava UP-TO-DATE -> Task :instrumentation:executors:javaagent:compileScala NO-SOURCE -> Task :instrumentation:executors:javaagent:classes UP-TO-DATE -> Task :instrumentation:executors:javaagent:jar UP-TO-DATE -> Task :instrumentation-annotations:compileJava UP-TO-DATE -> Task :instrumentation-annotations:processResources NO-SOURCE -> Task :instrumentation-annotations:classes UP-TO-DATE -> Task :instrumentation-annotations:jar UP-TO-DATE -> Task :opentelemetry-instrumentation-annotations-shaded-for-instrumenting:compileJava NO-SOURCE -> Task :opentelemetry-instrumentation-annotations-shaded-for-instrumenting:processResources NO-SOURCE -> Task :opentelemetry-instrumentation-annotations-shaded-for-instrumenting:classes UP-TO-DATE -> Task :opentelemetry-instrumentation-annotations-shaded-for-instrumenting:shadowJar UP-TO-DATE -> Task :instrumentation:opentelemetry-instrumentation-annotations-1.16:javaagent:compileJava UP-TO-DATE -> Task :instrumentation:opentelemetry-instrumentation-annotations-1.16:javaagent:generateInstrumentationVersionFile UP-TO-DATE -> Task :instrumentation:opentelemetry-instrumentation-annotations-1.16:javaagent:processResources NO-SOURCE -> Task :instrumentation:opentelemetry-instrumentation-annotations-1.16:javaagent:byteBuddyJava UP-TO-DATE -> Task :instrumentation:opentelemetry-instrumentation-annotations-1.16:javaagent:classes UP-TO-DATE -> Task :instrumentation:opentelemetry-instrumentation-annotations-1.16:javaagent:jar UP-TO-DATE -> Task :instrumentation:internal:internal-application-logger:javaagent:compileJava UP-TO-DATE -> Task :instrumentation:internal:internal-application-logger:javaagent:generateInstrumentationVersionFile UP-TO-DATE -> Task :instrumentation:internal:internal-application-logger:javaagent:processResources NO-SOURCE -> Task :instrumentation:internal:internal-application-logger:javaagent:byteBuddyJava UP-TO-DATE -> Task :instrumentation:internal:internal-application-logger:javaagent:classes UP-TO-DATE -> Task :instrumentation:internal:internal-application-logger:javaagent:jar UP-TO-DATE -> Task :instrumentation:internal:internal-class-loader:compile-stub:compileJava UP-TO-DATE -> Task :instrumentation:internal:internal-class-loader:compile-stub:processResources NO-SOURCE -> Task :instrumentation:internal:internal-class-loader:compile-stub:classes UP-TO-DATE -> Task :instrumentation:internal:internal-class-loader:compile-stub:jar UP-TO-DATE -> Task :instrumentation:internal:internal-class-loader:javaagent:compileJava UP-TO-DATE -> Task :instrumentation:internal:internal-class-loader:javaagent:generateInstrumentationVersionFile UP-TO-DATE -> Task :instrumentation:internal:internal-class-loader:javaagent:processResources NO-SOURCE -> Task :instrumentation:internal:internal-class-loader:javaagent:byteBuddyJava UP-TO-DATE -> Task :instrumentation:internal:internal-class-loader:javaagent:classes UP-TO-DATE -> Task :instrumentation:internal:internal-class-loader:javaagent:jar UP-TO-DATE -> Task :instrumentation:internal:internal-class-loader:javaagent:shadedJar UP-TO-DATE -> Task :instrumentation:internal:internal-eclipse-osgi-3.6:javaagent:compileJava UP-TO-DATE -> Task :instrumentation:internal:internal-eclipse-osgi-3.6:javaagent:generateInstrumentationVersionFile UP-TO-DATE -> Task :instrumentation:internal:internal-eclipse-osgi-3.6:javaagent:processResources NO-SOURCE -> Task :instrumentation:internal:internal-eclipse-osgi-3.6:javaagent:byteBuddyJava UP-TO-DATE -> Task :instrumentation:internal:internal-eclipse-osgi-3.6:javaagent:classes UP-TO-DATE -> Task :instrumentation:internal:internal-eclipse-osgi-3.6:javaagent:jar UP-TO-DATE -> Task :instrumentation:internal:internal-lambda:javaagent:compileJava UP-TO-DATE -> Task :instrumentation:internal:internal-lambda:javaagent:generateInstrumentationVersionFile UP-TO-DATE -> Task :instrumentation:internal:internal-lambda:javaagent:processResources NO-SOURCE -> Task :instrumentation:internal:internal-lambda:javaagent:byteBuddyJava UP-TO-DATE -> Task :instrumentation:internal:internal-lambda:javaagent:classes UP-TO-DATE -> Task :instrumentation:internal:internal-lambda:javaagent:jar UP-TO-DATE -> Task :instrumentation:internal:internal-reflection:javaagent:compileJava UP-TO-DATE -> Task :instrumentation:internal:internal-reflection:javaagent:generateInstrumentationVersionFile UP-TO-DATE -> Task :instrumentation:internal:internal-reflection:javaagent:processResources NO-SOURCE -> Task :instrumentation:internal:internal-reflection:javaagent:byteBuddyJava UP-TO-DATE -> Task :instrumentation:internal:internal-reflection:javaagent:classes UP-TO-DATE -> Task :instrumentation:internal:internal-reflection:javaagent:jar UP-TO-DATE -> Task :instrumentation:internal:internal-url-class-loader:javaagent:compileJava UP-TO-DATE -> Task :instrumentation:internal:internal-url-class-loader:javaagent:generateInstrumentationVersionFile UP-TO-DATE -> Task :instrumentation:internal:internal-url-class-loader:javaagent:processResources NO-SOURCE -> Task :instrumentation:internal:internal-url-class-loader:javaagent:byteBuddyJava UP-TO-DATE -> Task :instrumentation:internal:internal-url-class-loader:javaagent:classes UP-TO-DATE -> Task :instrumentation:internal:internal-url-class-loader:javaagent:jar UP-TO-DATE -> Task :opentelemetry-api-shaded-for-instrumenting:compileJava NO-SOURCE -> Task :opentelemetry-api-shaded-for-instrumenting:processResources NO-SOURCE -> Task :opentelemetry-api-shaded-for-instrumenting:classes UP-TO-DATE -> Task :opentelemetry-api-shaded-for-instrumenting:shadowJar UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.0:javaagent:compileJava UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.0:javaagent:generateInstrumentationVersionFile UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.0:javaagent:processResources NO-SOURCE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.0:javaagent:byteBuddyJava UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.0:javaagent:classes UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.0:javaagent:jar UP-TO-DATE -> Task :opentelemetry-api-shaded-for-instrumenting:v1_10Shadow UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.4:javaagent:compileJava UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.4:javaagent:generateInstrumentationVersionFile UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.4:javaagent:processResources NO-SOURCE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.4:javaagent:byteBuddyJava UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.4:javaagent:classes UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.4:javaagent:jar UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.10:javaagent:compileJava UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.10:javaagent:generateInstrumentationVersionFile UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.10:javaagent:processResources NO-SOURCE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.10:javaagent:byteBuddyJava UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.10:javaagent:classes UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.10:javaagent:jar UP-TO-DATE -> Task :opentelemetry-api-shaded-for-instrumenting:v1_15Shadow UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.15:javaagent:compileJava UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.15:javaagent:generateInstrumentationVersionFile UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.15:javaagent:processResources NO-SOURCE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.15:javaagent:byteBuddyJava UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.15:javaagent:classes UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.15:javaagent:jar UP-TO-DATE -> Task :opentelemetry-api-shaded-for-instrumenting:v1_27Shadow UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.27:javaagent:compileJava UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.27:javaagent:generateInstrumentationVersionFile UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.27:javaagent:processResources NO-SOURCE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.27:javaagent:byteBuddyJava UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.27:javaagent:classes UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.27:javaagent:jar UP-TO-DATE -> Task :opentelemetry-api-shaded-for-instrumenting:v1_31Shadow UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.31:javaagent:compileJava UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.31:javaagent:generateInstrumentationVersionFile UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.31:javaagent:processResources NO-SOURCE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.31:javaagent:byteBuddyJava UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.31:javaagent:classes UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.31:javaagent:jar UP-TO-DATE -> Task :opentelemetry-api-shaded-for-instrumenting:v1_32Shadow UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.32:javaagent:compileJava UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.32:javaagent:generateInstrumentationVersionFile UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.32:javaagent:processResources NO-SOURCE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.32:javaagent:byteBuddyJava UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.32:javaagent:classes UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.32:javaagent:jar UP-TO-DATE -> Task :opentelemetry-api-shaded-for-instrumenting:v1_37Shadow UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.37:javaagent:compileJava UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.37:javaagent:generateInstrumentationVersionFile UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.37:javaagent:processResources NO-SOURCE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.37:javaagent:byteBuddyJava UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.37:javaagent:classes UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.37:javaagent:jar UP-TO-DATE -> Task :opentelemetry-api-shaded-for-instrumenting:v1_38Shadow UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.38:javaagent:compileJava UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.38:javaagent:generateInstrumentationVersionFile UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.38:javaagent:processResources NO-SOURCE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.38:javaagent:byteBuddyJava UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.38:javaagent:classes UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.38:javaagent:jar UP-TO-DATE -> Task :opentelemetry-api-shaded-for-instrumenting:v1_40Shadow UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.40:javaagent:compileJava UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.40:javaagent:generateInstrumentationVersionFile UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.40:javaagent:processResources NO-SOURCE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.40:javaagent:byteBuddyJava UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.40:javaagent:classes UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.40:javaagent:jar UP-TO-DATE -> Task :opentelemetry-api-shaded-for-instrumenting:v1_42Shadow UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.42:javaagent:compileJava UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.42:javaagent:generateInstrumentationVersionFile UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.42:javaagent:processResources NO-SOURCE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.42:javaagent:byteBuddyJava UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.42:javaagent:classes UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.42:javaagent:jar UP-TO-DATE -> Task :opentelemetry-api-shaded-for-instrumenting:v1_47Shadow UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.47:javaagent:compileJava UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.47:javaagent:generateInstrumentationVersionFile UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.47:javaagent:processResources NO-SOURCE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.47:javaagent:byteBuddyJava UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.47:javaagent:classes UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.47:javaagent:jar UP-TO-DATE -> Task :opentelemetry-api-shaded-for-instrumenting:v1_50Shadow UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.50:javaagent:compileJava UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.50:javaagent:generateInstrumentationVersionFile UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.50:javaagent:processResources NO-SOURCE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.50:javaagent:byteBuddyJava UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.50:javaagent:classes UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.50:javaagent:jar UP-TO-DATE -> Task :opentelemetry-api-shaded-for-instrumenting:v1_56Shadow UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.56:javaagent:compileJava UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.56:javaagent:generateInstrumentationVersionFile UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.56:javaagent:processResources NO-SOURCE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.56:javaagent:byteBuddyJava UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.56:javaagent:classes UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.56:javaagent:jar UP-TO-DATE -> Task :opentelemetry-api-shaded-for-instrumenting:v1_57Shadow UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.57:javaagent:compileJava UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.57:javaagent:generateInstrumentationVersionFile UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.57:javaagent:processResources NO-SOURCE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.57:javaagent:byteBuddyJava UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.57:javaagent:classes UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.57:javaagent:jar UP-TO-DATE -> Task :opentelemetry-api-shaded-for-instrumenting:v1_59Shadow UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.59:javaagent:compileJava UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.59:javaagent:generateInstrumentationVersionFile UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.59:javaagent:processResources NO-SOURCE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.59:javaagent:byteBuddyJava UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.59:javaagent:classes UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.59:javaagent:jar UP-TO-DATE -> Task :opentelemetry-api-shaded-for-instrumenting:v1_63Shadow UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.63:javaagent:compileJava UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.63:javaagent:generateInstrumentationVersionFile UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.63:javaagent:processResources NO-SOURCE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.63:javaagent:byteBuddyJava UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.63:javaagent:classes UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.63:javaagent:jar UP-TO-DATE -> Task :opentelemetry-api-shaded-for-instrumenting:v1_65Shadow UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.65:javaagent:compileJava UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.65:javaagent:generateInstrumentationVersionFile UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.65:javaagent:processResources NO-SOURCE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.65:javaagent:byteBuddyJava UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.65:javaagent:classes UP-TO-DATE -> Task :instrumentation:opentelemetry-api:opentelemetry-api-1.65:javaagent:jar UP-TO-DATE -> Task :opentelemetry-instrumentation-api-shaded-for-instrumenting:compileJava NO-SOURCE -> Task :opentelemetry-instrumentation-api-shaded-for-instrumenting:processResources NO-SOURCE -> Task :opentelemetry-instrumentation-api-shaded-for-instrumenting:classes UP-TO-DATE -> Task :opentelemetry-instrumentation-api-shaded-for-instrumenting:shadowJar UP-TO-DATE -> Task :instrumentation:opentelemetry-instrumentation-api:opentelemetry-instrumentation-api-1.14:javaagent:compileJava UP-TO-DATE -> Task :instrumentation:opentelemetry-instrumentation-api:opentelemetry-instrumentation-api-1.14:javaagent:generateInstrumentationVersionFile UP-TO-DATE -> Task :instrumentation:opentelemetry-instrumentation-api:opentelemetry-instrumentation-api-1.14:javaagent:processResources NO-SOURCE -> Task :instrumentation:opentelemetry-instrumentation-api:opentelemetry-instrumentation-api-1.14:javaagent:byteBuddyJava UP-TO-DATE -> Task :instrumentation:opentelemetry-instrumentation-api:opentelemetry-instrumentation-api-1.14:javaagent:classes UP-TO-DATE -> Task :instrumentation:opentelemetry-instrumentation-api:opentelemetry-instrumentation-api-1.14:javaagent:jar UP-TO-DATE -> Task :javaagent:relocateBaseJavaagentLibs UP-TO-DATE -> Task :javaagent:baseJavaagentJar UP-TO-DATE -> Task :testing:dependencies-shaded-for-testing:extractShadowJar UP-TO-DATE -> Task :testing-common:classes UP-TO-DATE -> Task :testing-common:jar UP-TO-DATE -> Task :testing-common:with-shaded-dependencies:compileJava NO-SOURCE -> Task :testing-common:with-shaded-dependencies:processResources NO-SOURCE -> Task :testing-common:with-shaded-dependencies:classes UP-TO-DATE -> Task :testing-common:with-shaded-dependencies:jar UP-TO-DATE -> Task :testing:agent-for-testing:extractAgent UP-TO-DATE -> Task :testing:agent-for-testing:jar UP-TO-DATE -> Task :instrumentation:elasticsearch:elasticsearch-rest-5.0:javaagent:processTestResources NO-SOURCE -> Task :instrumentation:opensearch:opensearch-rest-common-1.0:javaagent:compileJava UP-TO-DATE -> Task :instrumentation:opensearch:opensearch-rest-common-1.0:javaagent:generateInstrumentationVersionFile UP-TO-DATE -> Task :instrumentation:opensearch:opensearch-rest-common-1.0:javaagent:processResources NO-SOURCE -> Task :instrumentation:opensearch:opensearch-rest-common-1.0:javaagent:byteBuddyJava UP-TO-DATE -> Task :instrumentation:opensearch:opensearch-rest-common-1.0:javaagent:classes UP-TO-DATE -> Task :instrumentation:opensearch:opensearch-rest-common-1.0:javaagent:jar UP-TO-DATE -> Task :instrumentation:opensearch:opensearch-rest-1.0:javaagent:compileJava UP-TO-DATE -> Task :instrumentation:opensearch:opensearch-rest-1.0:javaagent:generateInstrumentationVersionFile UP-TO-DATE -> Task :instrumentation:opensearch:opensearch-rest-1.0:javaagent:processResources NO-SOURCE -> Task :instrumentation:opensearch:opensearch-rest-1.0:javaagent:byteBuddyJava UP-TO-DATE -> Task :instrumentation:opensearch:opensearch-rest-1.0:javaagent:classes UP-TO-DATE -> Task :instrumentation:opensearch:opensearch-rest-1.0:javaagent:jar UP-TO-DATE -> Task :instrumentation:opensearch:opensearch-rest-3.0:javaagent:compileJava UP-TO-DATE -> Task :instrumentation:opensearch:opensearch-rest-3.0:javaagent:generateInstrumentationVersionFile UP-TO-DATE -> Task :instrumentation:opensearch:opensearch-rest-3.0:javaagent:processResources NO-SOURCE -> Task :instrumentation:opensearch:opensearch-rest-3.0:javaagent:byteBuddyJava UP-TO-DATE -> Task :instrumentation:opensearch:opensearch-rest-3.0:javaagent:classes UP-TO-DATE -> Task :instrumentation:opensearch:opensearch-rest-3.0:javaagent:jar UP-TO-DATE -> Task :instrumentation:opensearch:opensearch-rest-1.0:javaagent:shadowJar UP-TO-DATE -> Task :instrumentation:opensearch:opensearch-rest-common-1.0:testing:compileJava -> Task :instrumentation:opensearch:opensearch-rest-common-1.0:testing:processResources NO-SOURCE -> Task :instrumentation:opensearch:opensearch-rest-common-1.0:testing:classes -> Task :instrumentation:opensearch:opensearch-rest-common-1.0:testing:jar -> Task :instrumentation:opensearch:opensearch-rest-1.0:javaagent:compileTestJava UP-TO-DATE -> Task :instrumentation:opensearch:opensearch-rest-1.0:javaagent:processTestResources NO-SOURCE -> Task :instrumentation:opensearch:opensearch-rest-1.0:javaagent:testClasses UP-TO-DATE -> Task :instrumentation:elasticsearch:elasticsearch-rest-5.0:javaagent:compileTestJava -> Task :instrumentation:elasticsearch:elasticsearch-rest-5.0:javaagent:testClasses - -> Task :instrumentation:opensearch:opensearch-rest-1.0:javaagent:test -OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended -[otel.javaagent 2026-10-24 23:22:03:116 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.ExtensionClassLoader - Loaded extension jar file "/tmp/otel-extensions9495190058614835863/opentelemetry-agent-exporter-3.0.0-alpha-SNAPSHOT-all.jar" -[otel.javaagent 2026-10-24 23:22:03:130 +0000] [main] INFO io.opentelemetry.javaagent.tooling.VersionLogger - opentelemetry-javaagent - version: 3.0.0-SNAPSHOT -[otel.javaagent 2026-10-24 23:22:03:130 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.VersionLogger - Running on Java 25.0.4.1. JVM OpenJDK 64-Bit Server VM - Eclipse Adoptium - 25.0.4.1+1-LTS -[otel.javaagent 2026-10-24 23:22:03:130 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller - io.opentelemetry.javaagent.tooling.AgentInstaller loaded on io.opentelemetry.javaagent.bootstrap.AgentClassLoader@5010be6 -[otel.javaagent 2026-10-24 23:22:03:573 +0000] [main] DEBUG io.opentelemetry.javaagent.testing.exporter.OtlpInMemoryMetricExporter - Setting aggregation temporality to DELTA -[otel.javaagent 2026-10-24 23:22:03:766 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$java$util$concurrent$Callable$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$java$lang$Runnable$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$java$util$concurrent$Future$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$java$util$concurrent$ForkJoinTask$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext] -[otel.javaagent 2026-10-24 23:22:03:776 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$java$util$concurrent$ForkJoinTask$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$java$util$concurrent$Future$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$java$util$concurrent$Callable$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$java$lang$Runnable$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext] -[otel.javaagent 2026-10-24 23:22:03:783 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.ExposeAgentBootstrapListener - Adding module read from module java.base to unnamed module @1253e7cb -[otel.javaagent 2026-10-24 23:22:03:784 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask -- null -[otel.javaagent 2026-10-24 23:22:03:787 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.FutureTask -- null -[otel.javaagent 2026-10-24 23:22:03:789 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.Executors$RunnableAdapter -- null -[otel.javaagent 2026-10-24 23:22:03:791 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ThreadPoolExecutor$Worker -- null -[otel.javaagent 2026-10-24 23:22:03:842 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.lang.ApplicationShutdownHooks$1 -- null -[otel.javaagent 2026-10-24 23:22:03:888 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller - Loading extension instrumentation-loader [class io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader] -[otel.javaagent 2026-10-24 23:22:03:932 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.56 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_56.incubator.OpenTelemetryApiIncubatorInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:03:933 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.56 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_56.incubator.OpenTelemetryApiIncubatorInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:03:955 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.65 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_65.incubator.OpenTelemetryApiIncubatorInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:03:956 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.65 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_65.incubator.OpenTelemetryApiIncubatorInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:03:957 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.63 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_63.OpenTelemetryApiInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:03:957 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.63 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_63.OpenTelemetryApiInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:03:957 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.63 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_63.incubator.OpenTelemetryApiIncubatorInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:03:958 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.63 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_63.incubator.OpenTelemetryApiIncubatorInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:03:959 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.50 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_50.OpenTelemetryApiInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:03:959 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.50 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_50.OpenTelemetryApiInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:03:960 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.50 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_50.incubator.OpenTelemetryApiIncubatorInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:03:960 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.50 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_50.incubator.OpenTelemetryApiIncubatorInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:03:961 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.47 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_47.incubator.OpenTelemetryApiIncubatorInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:03:961 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.47 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_47.incubator.OpenTelemetryApiIncubatorInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:03:962 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.42 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_42.OpenTelemetryApiInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:03:962 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.42 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_42.incubator.OpenTelemetryApiIncubatorInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:03:963 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.40 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.OpenTelemetryApiIncubatorInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:03:963 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.27 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_27.OpenTelemetryApiInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:03:964 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.42 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_42.OpenTelemetryApiInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:03:964 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.42 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_42.incubator.OpenTelemetryApiIncubatorInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:03:964 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.40 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.OpenTelemetryApiIncubatorInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:03:964 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.27 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_27.OpenTelemetryApiInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:03:965 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.38 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_38.OpenTelemetryApiInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:03:965 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.38 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_38.OpenTelemetryApiInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:03:965 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.38 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_38.incubator.OpenTelemetryApiIncubatorInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:03:965 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.38 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_38.incubator.OpenTelemetryApiIncubatorInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:03:966 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.32 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_32.OpenTelemetryApiInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:03:966 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.32 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_32.OpenTelemetryApiInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:03:967 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.32 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_32.incubator.OpenTelemetryApiIncubatorInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:03:967 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.32 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_32.incubator.OpenTelemetryApiIncubatorInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:03:968 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.31 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_31.incubator.OpenTelemetryApiInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:03:968 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.31 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_31.incubator.OpenTelemetryApiInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:03:968 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.37 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_37.incubator.OpenTelemetryApiInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:03:969 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.37 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_37.incubator.OpenTelemetryApiInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:03:969 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.15 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_15.OpenTelemetryApiInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:03:970 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.15 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_15.OpenTelemetryApiInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:03:970 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.10 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.OpenTelemetryApiInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:03:972 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.10 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.OpenTelemetryApiInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:03:972 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.4 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_4.OpenTelemetryApiInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:03:972 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.4 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_4.OpenTelemetryApiInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:03:973 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.59 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_59.OpenTelemetryApiInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:03:973 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.59 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_59.OpenTelemetryApiInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:03:974 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-instrumentation-api-1.14 [class io.opentelemetry.javaagent.instrumentation.instrumentationapi.v1_14.InstrumentationApiInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:03:974 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-instrumentation-api-1.14 [class io.opentelemetry.javaagent.instrumentation.instrumentationapi.v1_14.InstrumentationApiInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:03:975 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.0 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_0.OpenTelemetryApiInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:03:976 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.0 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_0.OpenTelemetryApiInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:03:977 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.57 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_57.OpenTelemetryApiInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:03:978 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.57 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_57.OpenTelemetryApiInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:03:978 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation executors [class io.opentelemetry.javaagent.instrumentation.executors.ExecutorsInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:03:978 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation executors [class io.opentelemetry.javaagent.instrumentation.executors.ExecutorsInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:04:022 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation internal-application-logger [class io.opentelemetry.javaagent.instrumentation.internal.application.logger.ApplicationLoggingInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:04:023 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation internal-class-loader [class io.opentelemetry.javaagent.instrumentation.internal.classloader.ClassLoaderInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:04:023 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation internal-application-logger is disabled -[otel.javaagent 2026-10-24 23:22:04:024 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation internal-class-loader [class io.opentelemetry.javaagent.instrumentation.internal.classloader.ClassLoaderInstrumentationModule] injects helper classes -[otel.javaagent 2026-10-24 23:22:04:026 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation internal-eclipse-osgi-3.6 [class io.opentelemetry.javaagent.instrumentation.internal.eclipse.osgi.v3_6.EclipseOsgiInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:04:027 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation internal-eclipse-osgi-3.6 [class io.opentelemetry.javaagent.instrumentation.internal.eclipse.osgi.v3_6.EclipseOsgiInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:04:027 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation internal-lambda [class io.opentelemetry.javaagent.instrumentation.internal.lambda.LambdaInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:04:027 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation internal-lambda [class io.opentelemetry.javaagent.instrumentation.internal.lambda.LambdaInstrumentationModule] injects helper classes -[otel.javaagent 2026-10-24 23:22:04:028 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation internal-reflection [class io.opentelemetry.javaagent.instrumentation.internal.reflection.ReflectionInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:04:029 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation internal-reflection [class io.opentelemetry.javaagent.instrumentation.internal.reflection.ReflectionInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:04:030 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation internal-url-class-loader [class io.opentelemetry.javaagent.instrumentation.internal.urlclassloader.UrlClassLoaderInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:04:030 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation internal-url-class-loader [class io.opentelemetry.javaagent.instrumentation.internal.urlclassloader.UrlClassLoaderInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:04:030 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opensearch-rest-1.0 [class io.opentelemetry.javaagent.instrumentation.opensearch.rest.v1_0.OpenSearchRestInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:04:030 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opensearch-rest-1.0 [class io.opentelemetry.javaagent.instrumentation.opensearch.rest.v1_0.OpenSearchRestInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:04:044 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opensearch-rest-3.0 [class io.opentelemetry.javaagent.instrumentation.opensearch.rest.v3_0.OpenSearchRestInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:04:050 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opensearch-rest-3.0 [class io.opentelemetry.javaagent.instrumentation.opensearch.rest.v3_0.OpenSearchRestInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:04:060 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation apache-httpclient-4.0 [class io.opentelemetry.javaagent.instrumentation.apachehttpclient.v4_0.ApacheHttpClientInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:04:060 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation apache-httpclient-4.0 [class io.opentelemetry.javaagent.instrumentation.apachehttpclient.v4_0.ApacheHttpClientInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:04:061 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation apache-httpasyncclient-4.1 [class io.opentelemetry.javaagent.instrumentation.apachehttpasyncclient.v4_1.ApacheHttpAsyncClientInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:04:061 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation apache-httpasyncclient-4.1 [class io.opentelemetry.javaagent.instrumentation.apachehttpasyncclient.v4_1.ApacheHttpAsyncClientInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:04:062 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation deny-unsafe [class io.opentelemetry.javaagent.testing.instrumentation.DenyUnsafeInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:04:063 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-instrumentation-annotations-1.16 [class io.opentelemetry.javaagent.instrumentation.instrumentationannotations.v1_16.AnnotationInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:04:063 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation deny-unsafe is disabled -[otel.javaagent 2026-10-24 23:22:04:063 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-instrumentation-annotations-1.16 [class io.opentelemetry.javaagent.instrumentation.instrumentationannotations.v1_16.AnnotationInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:04:071 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Installed 37 instrumentation(s) -[otel.javaagent 2026-10-24 23:22:04:072 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller - Loading extension test [class io.opentelemetry.javaagent.testing.bytebuddy.TestAgentExtension] -[otel.javaagent 2026-10-24 23:22:04:087 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller - Installed 2 extension(s) -[otel.javaagent 2026-10-24 23:22:04:096 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.javaagent.shaded.io.opentelemetry.context.StrictContextStorage$PendingScopes -- null -[otel.javaagent 2026-10-24 23:22:04:099 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.javaagent.shaded.io.opentelemetry.context.internal.shaded.WeakConcurrentMap -- null -[otel.javaagent 2026-10-24 23:22:04:100 +0000] [main] DEBUG net.bytebuddy.agent.builder.AgentBuilderUtil - Could not decompose matcher failSafe(try(AnnotationInstrumentationModule#WithSpanInstrumentation(declaresMethods(whereOne((isMethod() and declaresAnnotations(whereOne(ofAnnotationType(name(equals(io.opentelemetry.instrumentation.annotations.WithSpan)))))))))) or false) -[otel.javaagent 2026-10-24 23:22:04:100 +0000] [main] DEBUG net.bytebuddy.agent.builder.AgentBuilderUtil - Could not decompose matcher failSafe(try(AnnotationInstrumentationModule#AddingSpanAttributesInstrumentation(declaresMethods(whereOne((isMethod() and declaresAnnotations(whereOne(ofAnnotationType(name(equals(io.opentelemetry.instrumentation.annotations.AddingSpanAttributes))))) and not(declaresAnnotations(whereOne(ofAnnotationType(name(equals(io.opentelemetry.instrumentation.annotations.WithSpan))))))))))) or false) -[otel.javaagent 2026-10-24 23:22:04:120 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: internal-class-loader [class io.opentelemetry.javaagent.instrumentation.internal.classloader.ClassLoaderInstrumentationModule] on io.opentelemetry.javaagent.bootstrap.AgentClassLoader$BootstrapClassLoaderProxy@377dca04 -[otel.javaagent 2026-10-24 23:22:04:125 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: internal-url-class-loader [class io.opentelemetry.javaagent.instrumentation.internal.urlclassloader.UrlClassLoaderInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@7d2a6eac -[otel.javaagent 2026-10-24 23:22:04:226 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.net.URLClassLoader -- null -[otel.javaagent 2026-10-24 23:22:04:245 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed jdk.internal.loader.BuiltinClassLoader -- null -[otel.javaagent 2026-10-24 23:22:04:275 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.lang.ClassLoader -- null -[otel.javaagent 2026-10-24 23:22:04:310 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: executors [class io.opentelemetry.javaagent.instrumentation.executors.ExecutorsInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@34dc85a -[otel.javaagent 2026-10-24 23:22:04:315 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.RunnableScheduledFuture -[otel.javaagent 2026-10-24 23:22:04:316 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ScheduledFuture -[otel.javaagent 2026-10-24 23:22:04:316 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.RunnableFuture -[otel.javaagent 2026-10-24 23:22:04:324 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.Future -[otel.javaagent 2026-10-24 23:22:04:326 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for java.util.concurrent.ScheduledExecutorService -[otel.javaagent 2026-10-24 23:22:04:326 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for java.util.concurrent.ScheduledExecutorService -[otel.javaagent 2026-10-24 23:22:04:326 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for java.util.concurrent.ExecutorService -[otel.javaagent 2026-10-24 23:22:04:326 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for java.util.concurrent.ExecutorService -[otel.javaagent 2026-10-24 23:22:04:326 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for java.util.concurrent.Executor -[otel.javaagent 2026-10-24 23:22:04:327 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for java.util.concurrent.Executor -[otel.javaagent 2026-10-24 23:22:04:354 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: internal-lambda [class io.opentelemetry.javaagent.instrumentation.internal.lambda.LambdaInstrumentationModule] on io.opentelemetry.javaagent.bootstrap.AgentClassLoader$BootstrapClassLoaderProxy@377dca04 -[otel.javaagent 2026-10-24 23:22:04:358 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: internal-reflection [class io.opentelemetry.javaagent.instrumentation.internal.reflection.ReflectionInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@773e2eb5 -[otel.javaagent 2026-10-24 23:22:04:370 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$java$util$concurrent$Callable$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$java$lang$Runnable$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$java$util$concurrent$Future$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$java$util$concurrent$ForkJoinTask$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext] -[otel.javaagent 2026-10-24 23:22:04:374 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$java$util$concurrent$ForkJoinTask$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$java$util$concurrent$Future$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$java$util$concurrent$Callable$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$java$lang$Runnable$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext] -[otel.javaagent 2026-10-24 23:22:04:383 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ThreadPoolExecutor$Worker -- null -[otel.javaagent 2026-10-24 23:22:04:389 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.Executors$RunnableAdapter -- null -[otel.javaagent 2026-10-24 23:22:04:392 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.Callable -- null -[otel.javaagent 2026-10-24 23:22:04:400 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask -- null -[otel.javaagent 2026-10-24 23:22:04:407 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.FutureTask -- null -[otel.javaagent 2026-10-24 23:22:04:408 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.RunnableScheduledFuture -[otel.javaagent 2026-10-24 23:22:04:411 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.RunnableScheduledFuture -- null -[otel.javaagent 2026-10-24 23:22:04:411 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.RunnableFuture -[otel.javaagent 2026-10-24 23:22:04:414 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.RunnableFuture -- null -[otel.javaagent 2026-10-24 23:22:04:491 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ScheduledThreadPoolExecutor -- null -[otel.javaagent 2026-10-24 23:22:04:559 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ThreadPoolExecutor -- null -[otel.javaagent 2026-10-24 23:22:04:566 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinWorkerThread -- null -[otel.javaagent 2026-10-24 23:22:04:576 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask -- null -[otel.javaagent 2026-10-24 23:22:04:578 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedRunnable -- null -[otel.javaagent 2026-10-24 23:22:04:581 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$AdaptedRunnable -[otel.javaagent 2026-10-24 23:22:04:590 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedRunnable -- null -[otel.javaagent 2026-10-24 23:22:04:593 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedCallable -- null -[otel.javaagent 2026-10-24 23:22:04:599 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedCallable -- null -[otel.javaagent 2026-10-24 23:22:04:600 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedRunnableAction -- null -[otel.javaagent 2026-10-24 23:22:04:601 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$AdaptedRunnableAction -[otel.javaagent 2026-10-24 23:22:04:608 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedRunnableAction -- null -[otel.javaagent 2026-10-24 23:22:04:610 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedInterruptibleRunnable -- null -[otel.javaagent 2026-10-24 23:22:04:610 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$AdaptedInterruptibleRunnable -[otel.javaagent 2026-10-24 23:22:04:617 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedInterruptibleRunnable -- null -[otel.javaagent 2026-10-24 23:22:04:618 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$InterruptibleTask -[otel.javaagent 2026-10-24 23:22:04:626 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$InterruptibleTask -- null -[otel.javaagent 2026-10-24 23:22:04:629 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$AdaptedInterruptibleCallable -[otel.javaagent 2026-10-24 23:22:04:630 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedInterruptibleCallable -- null -[otel.javaagent 2026-10-24 23:22:04:642 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedInterruptibleCallable -- null -[otel.javaagent 2026-10-24 23:22:04:650 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.DelayScheduler -- null -[otel.javaagent 2026-10-24 23:22:04:695 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinPool -- null -[otel.javaagent 2026-10-24 23:22:04:696 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$RunnableExecuteAction -- null -[otel.javaagent 2026-10-24 23:22:04:701 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$RunnableExecuteAction -- null -[otel.javaagent 2026-10-24 23:22:04:702 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.DelayScheduler$ScheduledForkJoinTask -- null -[otel.javaagent 2026-10-24 23:22:04:703 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.DelayScheduler$ScheduledForkJoinTask -[otel.javaagent 2026-10-24 23:22:04:707 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.DelayScheduler$ScheduledForkJoinTask -- null -[otel.javaagent 2026-10-24 23:22:04:708 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$CallableWithTimeout -- null -[otel.javaagent 2026-10-24 23:22:04:709 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$CallableWithTimeout -[otel.javaagent 2026-10-24 23:22:04:712 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$CallableWithTimeout -- null -[otel.javaagent 2026-10-24 23:22:04:735 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.AbstractExecutorService -- null -[otel.javaagent 2026-10-24 23:22:04:737 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.instrumentation.internal.lambda.LambdaTransformerHelper] -[otel.javaagent 2026-10-24 23:22:04:746 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.lang.invoke.InnerClassLambdaMetafactory -- null -[otel.javaagent 2026-10-24 23:22:04:759 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed jdk.internal.reflect.Reflection -- null -[otel.javaagent 2026-10-24 23:22:04:765 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.lang.VirtualThread -- null -[otel.javaagent 2026-10-24 23:22:04:768 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed jdk.internal.misc.CarrierThread -- null -[otel.javaagent 2026-10-24 23:22:04:775 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.lang.Class -- null -[otel.javaagent 2026-10-24 23:22:04:823 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$InterruptibleTask -[otel.javaagent 2026-10-24 23:22:04:830 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$CallableWithTimeout -[otel.javaagent 2026-10-24 23:22:04:855 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$CallableWithTimeout -- null -[otel.javaagent 2026-10-24 23:22:04:855 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.DelayScheduler$ScheduledForkJoinTask -[otel.javaagent 2026-10-24 23:22:04:881 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.DelayScheduler$ScheduledForkJoinTask -- null -[otel.javaagent 2026-10-24 23:22:04:908 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$RunnableExecuteAction -- null -[otel.javaagent 2026-10-24 23:22:04:911 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$AdaptedInterruptibleCallable -[otel.javaagent 2026-10-24 23:22:04:923 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedInterruptibleCallable -- null -[otel.javaagent 2026-10-24 23:22:04:924 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$AdaptedInterruptibleRunnable -[otel.javaagent 2026-10-24 23:22:04:935 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$InterruptibleTask -[otel.javaagent 2026-10-24 23:22:04:936 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedInterruptibleRunnable -- null -[otel.javaagent 2026-10-24 23:22:04:946 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$InterruptibleTask -- null -[otel.javaagent 2026-10-24 23:22:04:948 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$AdaptedRunnableAction -[otel.javaagent 2026-10-24 23:22:04:962 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedRunnableAction -- null -[otel.javaagent 2026-10-24 23:22:04:976 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedCallable -- null -[otel.javaagent 2026-10-24 23:22:04:980 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$AdaptedRunnable -[otel.javaagent 2026-10-24 23:22:04:990 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedRunnable -- null -[otel.javaagent 2026-10-24 23:22:05:044 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: internal-class-loader [class io.opentelemetry.javaagent.instrumentation.internal.classloader.ClassLoaderInstrumentationModule] on jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc -[otel.javaagent 2026-10-24 23:22:05:051 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed worker.org.gradle.internal.classloader.FilteringClassLoader -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc -[otel.javaagent 2026-10-24 23:22:05:067 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed worker.org.gradle.internal.classloader.FilteringClassLoader$RetrieveSystemPackagesClassLoader -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - -Gradle Test Executor 26 STANDARD_ERROR - [otel.javaagent 2026-10-24 23:22:05:744 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: executors [class io.opentelemetry.javaagent.instrumentation.executors.ExecutorsInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@110e9982 - [otel.javaagent 2026-10-24 23:22:05:780 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.junit.platform.commons.util.ReflectionUtils$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:05:791 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.junit.platform.commons.function.Try$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:05:827 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opensearch-rest-1.0 [class io.opentelemetry.javaagent.instrumentation.opensearch.rest.v1_0.OpenSearchRestInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@1b24ea2a - [otel.javaagent 2026-10-24 23:22:05:828 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$org$opensearch$client$RestClient$io$opentelemetry$javaagent$shaded$instrumentation$api$incubator$semconv$db$internal$DbServerTarget] - [otel.javaagent 2026-10-24 23:22:05:831 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$org$opensearch$client$RestClient$io$opentelemetry$javaagent$shaded$instrumentation$api$incubator$semconv$db$internal$DbServerTarget] - [otel.javaagent 2026-10-24 23:22:05:846 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$org$opensearch$client$RestClient$io$opentelemetry$javaagent$shaded$instrumentation$api$incubator$semconv$db$internal$DbServerTarget] - [otel.javaagent 2026-10-24 23:22:05:847 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$org$opensearch$client$RestClient$io$opentelemetry$javaagent$shaded$instrumentation$api$incubator$semconv$db$internal$DbServerTarget] - [otel.javaagent 2026-10-24 23:22:05:859 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.opensearch.client.RestClient -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:06:030 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:06:090 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.junit.platform.commons.util.ReflectionUtils$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:06:223 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed ch.qos.logback.core.hook.ShutdownHook -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:06:328 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.56 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_56.incubator.OpenTelemetryApiIncubatorInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@643f6179 - [otel.javaagent 2026-10-24 23:22:06:365 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.65 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_65.incubator.OpenTelemetryApiIncubatorInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@a3b858f - [otel.javaagent 2026-10-24 23:22:06:374 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.63 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_63.OpenTelemetryApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@64b73e0a - [otel.javaagent 2026-10-24 23:22:06:390 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.27 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_27.OpenTelemetryApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@3ef2b8e5 - [otel.javaagent 2026-10-24 23:22:06:408 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.38 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_38.incubator.OpenTelemetryApiIncubatorInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@1d226f27 - [otel.javaagent 2026-10-24 23:22:06:416 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.32 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_32.OpenTelemetryApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@2c0798bd - [otel.javaagent 2026-10-24 23:22:06:429 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.15 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_15.OpenTelemetryApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@542c65d9 - [otel.javaagent 2026-10-24 23:22:06:442 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.10 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.OpenTelemetryApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@23f5008a - [otel.javaagent 2026-10-24 23:22:06:448 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.4 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_4.OpenTelemetryApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@7bbdb220 - [otel.javaagent 2026-10-24 23:22:06:449 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.59 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_59.OpenTelemetryApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@77bb916f - [otel.javaagent 2026-10-24 23:22:06:459 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.0 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_0.OpenTelemetryApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@6dcf7b6a - [otel.javaagent 2026-10-24 23:22:06:460 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.57 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_57.OpenTelemetryApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@5aa6da2 - [otel.javaagent 2026-10-24 23:22:06:474 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.api.GlobalOpenTelemetry -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - -OpenSearchRestTest STANDARD_ERROR - [otel.javaagent 2026-10-24 23:22:06:528 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for org.testcontainers.utility.LazyFuture - [otel.javaagent 2026-10-24 23:22:06:530 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for org.testcontainers.images.RemoteDockerImage - [otel.javaagent 2026-10-24 23:22:06:532 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.images.RemoteDockerImage -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:06:565 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture - [otel.javaagent 2026-10-24 23:22:06:572 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture -- null - [otel.javaagent 2026-10-24 23:22:06:576 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$Completion - [otel.javaagent 2026-10-24 23:22:06:585 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$Completion -- null - [otel.javaagent 2026-10-24 23:22:06:590 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$BiCompletion -- null - [otel.javaagent 2026-10-24 23:22:06:591 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniCompletion - [otel.javaagent 2026-10-24 23:22:06:595 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniCompletion -- null - [otel.javaagent 2026-10-24 23:22:06:597 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$CoCompletion - [otel.javaagent 2026-10-24 23:22:06:603 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$Signaller - [otel.javaagent 2026-10-24 23:22:06:603 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$CoCompletion -- null - [otel.javaagent 2026-10-24 23:22:06:608 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$Signaller -- null - [otel.javaagent 2026-10-24 23:22:06:609 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniApply - [otel.javaagent 2026-10-24 23:22:06:614 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniAccept - [otel.javaagent 2026-10-24 23:22:06:614 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniApply -- null - [otel.javaagent 2026-10-24 23:22:06:620 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniAccept -- null - [otel.javaagent 2026-10-24 23:22:06:621 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniRun - [otel.javaagent 2026-10-24 23:22:06:627 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniRun -- null - [otel.javaagent 2026-10-24 23:22:06:631 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$BiAccept - [otel.javaagent 2026-10-24 23:22:06:633 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$BiApply -- null - [otel.javaagent 2026-10-24 23:22:06:635 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$BiAccept -- null - [otel.javaagent 2026-10-24 23:22:06:636 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$BiRun - [otel.javaagent 2026-10-24 23:22:06:640 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$BiRun -- null - [otel.javaagent 2026-10-24 23:22:06:642 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$OrApply - [otel.javaagent 2026-10-24 23:22:06:646 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$OrApply -- null - [otel.javaagent 2026-10-24 23:22:06:647 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$OrAccept - [otel.javaagent 2026-10-24 23:22:06:652 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$OrAccept -- null - [otel.javaagent 2026-10-24 23:22:06:653 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$OrRun - [otel.javaagent 2026-10-24 23:22:06:659 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$OrRun -- null - [otel.javaagent 2026-10-24 23:22:06:660 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniCompose - [otel.javaagent 2026-10-24 23:22:06:664 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniCompose -- null - [otel.javaagent 2026-10-24 23:22:06:665 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniRelay - [otel.javaagent 2026-10-24 23:22:06:668 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniRelay -- null - [otel.javaagent 2026-10-24 23:22:06:670 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniWhenComplete - [otel.javaagent 2026-10-24 23:22:06:675 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniHandle - [otel.javaagent 2026-10-24 23:22:06:676 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniWhenComplete -- null - [otel.javaagent 2026-10-24 23:22:06:680 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniHandle -- null - [otel.javaagent 2026-10-24 23:22:06:681 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniExceptionally - [otel.javaagent 2026-10-24 23:22:06:684 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniExceptionally -- null - [otel.javaagent 2026-10-24 23:22:06:685 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniComposeExceptionally - [otel.javaagent 2026-10-24 23:22:06:689 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniComposeExceptionally -- null - [otel.javaagent 2026-10-24 23:22:06:690 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$MinimalStage - [otel.javaagent 2026-10-24 23:22:06:691 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$MinimalStage -- null - [otel.javaagent 2026-10-24 23:22:06:696 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$BiRelay -- null - [otel.javaagent 2026-10-24 23:22:06:697 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$AnyOf - [otel.javaagent 2026-10-24 23:22:06:706 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$AnyOf -- null - [otel.javaagent 2026-10-24 23:22:06:961 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.RecursiveTask - [otel.javaagent 2026-10-24 23:22:06:966 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.RecursiveTask -- null - [otel.javaagent 2026-10-24 23:22:06:995 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.shaded.com.fasterxml.jackson.databind.util.internal.PrivateMaxEntriesMap$AddTask -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:07:154 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.dockerclient.DockerClientProviderStrategy$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:07:174 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for java.util.concurrent.Executors$AutoShutdownDelegatedExecutorService - [otel.javaagent 2026-10-24 23:22:07:174 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for java.util.concurrent.Executors$AutoShutdownDelegatedExecutorService - [otel.javaagent 2026-10-24 23:22:07:192 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.Executors$DelegatedExecutorService -- null - [otel.javaagent 2026-10-24 23:22:07:195 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.Executors$AutoShutdownDelegatedExecutorService$$Lambda -- null - [otel.javaagent 2026-10-24 23:22:07:199 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.shaded.org.awaitility.core.ConditionAwaiter$ConditionPoller -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:07:686 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for com.github.dockerjava.zerodep.shaded.org.apache.hc.core5.concurrent.BasicFuture - [otel.javaagent 2026-10-24 23:22:07:689 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed com.github.dockerjava.zerodep.shaded.org.apache.hc.core5.concurrent.BasicFuture -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:07:690 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for com.github.dockerjava.zerodep.shaded.org.apache.hc.core5.pool.StrictConnPool$1 - [otel.javaagent 2026-10-24 23:22:07:692 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed com.github.dockerjava.zerodep.shaded.org.apache.hc.core5.pool.StrictConnPool$1 -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:08:218 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.containers.GenericContainer$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:08:800 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.containers.GenericContainer$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:08:810 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for org.testcontainers.shaded.org.awaitility.core.SameThreadExecutorService - [otel.javaagent 2026-10-24 23:22:08:810 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for org.testcontainers.shaded.org.awaitility.core.SameThreadExecutorService - [otel.javaagent 2026-10-24 23:22:09:054 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.shaded.com.github.dockerjava.core.DefaultInvocationBuilder$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:09:076 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.utility.RyukResourceReaper$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:09:084 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.utility.RyukResourceReaper$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:09:327 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.containers.wait.strategy.HttpWaitStrategy$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:09:329 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.rnorth.ducttape.unreliables.Unreliables$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:09:333 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.containers.wait.strategy.HttpWaitStrategy$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:24:299 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: apache-httpasyncclient-4.1 [class io.opentelemetry.javaagent.instrumentation.apachehttpasyncclient.v4_1.ApacheHttpAsyncClientInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@35277c6c - [otel.javaagent 2026-10-24 23:22:24:301 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.nio.client.HttpAsyncClient -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:24:305 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.impl.nio.client.CloseableHttpAsyncClient -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:24:312 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.nio.client.HttpPipeliningClient -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:24:314 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.impl.nio.client.CloseableHttpPipeliningClient -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:24:316 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.impl.nio.client.CloseableHttpAsyncClientBase -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:24:320 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.impl.nio.client.InternalHttpAsyncClient -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:24:342 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:24:368 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.impl.nio.client.CloseableHttpAsyncClientBase$1 -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - -OpenSearchRestTest > recordsFailureResponseStatus() STANDARD_ERROR - [otel.javaagent 2026-10-24 23:22:24:420 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for org.apache.http.concurrent.BasicFuture - [otel.javaagent 2026-10-24 23:22:24:420 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.concurrent.BasicFuture -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:24:441 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for org.apache.http.nio.pool.AbstractNIOConnPool$3 - [otel.javaagent 2026-10-24 23:22:24:442 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager$2 - [otel.javaagent 2026-10-24 23:22:24:442 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for org.apache.http.impl.nio.client.FutureWrapper - [otel.javaagent 2026-10-24 23:22:24:443 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.nio.pool.AbstractNIOConnPool$3 -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:24:443 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager$2 -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:24:443 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.impl.nio.client.FutureWrapper -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:24:528 +0000] [I/O dispatcher 1] INFO io.opentelemetry.exporter.logging.LoggingSpanExporter - 'HEAD' : a0c6408c729048ab206e5a2aa6793d19 3cba50aa6bb6a51c CLIENT [tracer: io.opentelemetry.apache-httpasyncclient-4.1:3.0.0-alpha-SNAPSHOT] AttributesMap{data={url.full=https://localhost:32862/missing-index, server.address=localhost, error.type=404, http.response.status_code=404, http.request.method=HEAD, server.port=32862, network.protocol.version=1.1, peer.service=test-peer-service}, capacity=128, totalAddedValues=8} - [otel.javaagent 2026-10-24 23:22:24:529 +0000] [I/O dispatcher 1] INFO io.opentelemetry.javaagent.testing.exporter.OtlpInMemorySpanExporter - Exporting span SpanData{spanContext=ImmutableSpanContext{traceId=a0c6408c729048ab206e5a2aa6793d19, spanId=3cba50aa6bb6a51c, traceFlags=03, traceState=ArrayBasedTraceState{entries=[]}, remote=false, valid=true}, parentSpanContext=ImmutableSpanContext{traceId=a0c6408c729048ab206e5a2aa6793d19, spanId=e659d0aa382a0686, traceFlags=03, traceState=ArrayBasedTraceState{entries=[]}, remote=false, valid=true}, resource=Resource{schemaUrl=https://opentelemetry.io/schemas/1.40.0, entities=[SdkEntity{type=service.instance, id={service.instance.id="28f21fc4-7a94-411f-b38e-1d5c5dfafb9a"}, description={}, schemaUrl=https://opentelemetry.io/schemas/1.40.0}], attributes={service.instance.id="28f21fc4-7a94-411f-b38e-1d5c5dfafb9a", service.name="unknown_service:java", telemetry.distro.name="opentelemetry-javaagent", telemetry.distro.version="3.0.0-SNAPSHOT", telemetry.sdk.language="java", telemetry.sdk.name="opentelemetry", telemetry.sdk.version="1.67.0"}}, instrumentationScopeInfo=InstrumentationScopeInfo{name=io.opentelemetry.apache-httpasyncclient-4.1, version=3.0.0-alpha-SNAPSHOT, schemaUrl=https://opentelemetry.io/schemas/1.41.0, attributes={}}, name=HEAD, kind=CLIENT, startEpochNanos=1792884144432548818, endEpochNanos=1792884144527488445, attributes=AttributesMap{data={url.full=https://localhost:32862/missing-index, server.address=localhost, error.type=404, http.response.status_code=404, http.request.method=HEAD, server.port=32862, network.protocol.version=1.1, peer.service=test-peer-service}, capacity=128, totalAddedValues=8}, totalAttributeCount=8, events=[], totalRecordedEvents=0, links=[], totalRecordedLinks=0, status=ImmutableStatusData{statusCode=ERROR, description=}, hasEnded=true} - [otel.javaagent 2026-10-24 23:22:24:532 +0000] [Test worker] INFO io.opentelemetry.exporter.logging.LoggingSpanExporter - 'HEAD localhost:32862' : a0c6408c729048ab206e5a2aa6793d19 e659d0aa382a0686 CLIENT [tracer: io.opentelemetry.opensearch-rest-1.0:3.0.0-alpha-SNAPSHOT] AttributesMap{data={server.address=localhost, db.system.name=opensearch, error.type=404, db.operation.name=HEAD, db.response.status_code=404, server.port=32862}, capacity=128, totalAddedValues=6} - [otel.javaagent 2026-10-24 23:22:24:546 +0000] [Test worker] INFO io.opentelemetry.javaagent.testing.exporter.OtlpInMemorySpanExporter - Exporting span SpanData{spanContext=ImmutableSpanContext{traceId=a0c6408c729048ab206e5a2aa6793d19, spanId=e659d0aa382a0686, traceFlags=03, traceState=ArrayBasedTraceState{entries=[]}, remote=false, valid=true}, parentSpanContext=ImmutableSpanContext{traceId=00000000000000000000000000000000, spanId=0000000000000000, traceFlags=00, traceState=ArrayBasedTraceState{entries=[]}, remote=false, valid=false}, resource=Resource{schemaUrl=https://opentelemetry.io/schemas/1.40.0, entities=[SdkEntity{type=service.instance, id={service.instance.id="28f21fc4-7a94-411f-b38e-1d5c5dfafb9a"}, description={}, schemaUrl=https://opentelemetry.io/schemas/1.40.0}], attributes={service.instance.id="28f21fc4-7a94-411f-b38e-1d5c5dfafb9a", service.name="unknown_service:java", telemetry.distro.name="opentelemetry-javaagent", telemetry.distro.version="3.0.0-SNAPSHOT", telemetry.sdk.language="java", telemetry.sdk.name="opentelemetry", telemetry.sdk.version="1.67.0"}}, instrumentationScopeInfo=InstrumentationScopeInfo{name=io.opentelemetry.opensearch-rest-1.0, version=3.0.0-alpha-SNAPSHOT, schemaUrl=https://opentelemetry.io/schemas/1.44.0, attributes={}}, name=HEAD localhost:32862, kind=CLIENT, startEpochNanos=1792884144410954272, endEpochNanos=1792884144532496876, attributes=AttributesMap{data={server.address=localhost, db.system.name=opensearch, error.type=404, db.operation.name=HEAD, db.response.status_code=404, server.port=32862}, capacity=128, totalAddedValues=6}, totalAttributeCount=6, events=[], totalRecordedEvents=0, links=[], totalRecordedLinks=0, status=ImmutableStatusData{statusCode=UNSET, description=}, hasEnded=true} - [otel.javaagent 2026-10-24 23:22:24:605 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.instrumentation.testing.InstrumentationTestRunner$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:24:716 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.awaitility.core.ConditionAwaiter$ConditionPoller -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - -> Task :instrumentation:elasticsearch:elasticsearch-rest-5.0:javaagent:test -OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended -[otel.javaagent 2026-10-24 23:22:03:254 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.ExtensionClassLoader - Loaded extension jar file "/tmp/otel-extensions563078951044242000/opentelemetry-agent-exporter-3.0.0-alpha-SNAPSHOT-all.jar" -[otel.javaagent 2026-10-24 23:22:03:277 +0000] [main] INFO io.opentelemetry.javaagent.tooling.VersionLogger - opentelemetry-javaagent - version: 3.0.0-SNAPSHOT -[otel.javaagent 2026-10-24 23:22:03:278 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.VersionLogger - Running on Java 25.0.4.1. JVM OpenJDK 64-Bit Server VM - Eclipse Adoptium - 25.0.4.1+1-LTS -[otel.javaagent 2026-10-24 23:22:03:278 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller - io.opentelemetry.javaagent.tooling.AgentInstaller loaded on io.opentelemetry.javaagent.bootstrap.AgentClassLoader@7daf6ecc -[otel.javaagent 2026-10-24 23:22:03:785 +0000] [main] DEBUG io.opentelemetry.javaagent.testing.exporter.OtlpInMemoryMetricExporter - Setting aggregation temporality to DELTA -[otel.javaagent 2026-10-24 23:22:03:990 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$java$util$concurrent$Callable$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$java$lang$Runnable$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$java$util$concurrent$Future$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$java$util$concurrent$ForkJoinTask$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext] -[otel.javaagent 2026-10-24 23:22:04:001 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$java$util$concurrent$ForkJoinTask$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$java$util$concurrent$Future$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$java$util$concurrent$Callable$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$java$lang$Runnable$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext] -[otel.javaagent 2026-10-24 23:22:04:012 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.ExposeAgentBootstrapListener - Adding module read from module java.base to unnamed module @61c9c3fd -[otel.javaagent 2026-10-24 23:22:04:012 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask -- null -[otel.javaagent 2026-10-24 23:22:04:016 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.FutureTask -- null -[otel.javaagent 2026-10-24 23:22:04:019 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.Executors$RunnableAdapter -- null -[otel.javaagent 2026-10-24 23:22:04:021 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ThreadPoolExecutor$Worker -- null -[otel.javaagent 2026-10-24 23:22:04:123 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.lang.ApplicationShutdownHooks$1 -- null -[otel.javaagent 2026-10-24 23:22:04:198 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller - Loading extension instrumentation-loader [class io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader] -[otel.javaagent 2026-10-24 23:22:04:241 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.56 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_56.incubator.OpenTelemetryApiIncubatorInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:04:243 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.56 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_56.incubator.OpenTelemetryApiIncubatorInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:04:269 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.65 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_65.incubator.OpenTelemetryApiIncubatorInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:04:270 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.63 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_63.OpenTelemetryApiInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:04:271 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.63 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_63.incubator.OpenTelemetryApiIncubatorInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:04:271 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.65 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_65.incubator.OpenTelemetryApiIncubatorInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:04:271 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.63 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_63.OpenTelemetryApiInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:04:272 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.63 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_63.incubator.OpenTelemetryApiIncubatorInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:04:275 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.50 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_50.OpenTelemetryApiInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:04:275 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.50 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_50.incubator.OpenTelemetryApiIncubatorInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:04:276 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.47 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_47.incubator.OpenTelemetryApiIncubatorInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:04:276 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.50 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_50.OpenTelemetryApiInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:04:276 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.50 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_50.incubator.OpenTelemetryApiIncubatorInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:04:276 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.42 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_42.OpenTelemetryApiInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:04:276 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.47 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_47.incubator.OpenTelemetryApiIncubatorInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:04:276 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.42 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_42.OpenTelemetryApiInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:04:280 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.42 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_42.incubator.OpenTelemetryApiIncubatorInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:04:280 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.42 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_42.incubator.OpenTelemetryApiIncubatorInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:04:280 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.40 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.OpenTelemetryApiIncubatorInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:04:281 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.40 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.OpenTelemetryApiIncubatorInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:04:281 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.27 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_27.OpenTelemetryApiInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:04:281 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.27 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_27.OpenTelemetryApiInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:04:282 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.38 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_38.OpenTelemetryApiInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:04:282 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.38 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_38.OpenTelemetryApiInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:04:283 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.38 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_38.incubator.OpenTelemetryApiIncubatorInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:04:283 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.38 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_38.incubator.OpenTelemetryApiIncubatorInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:04:283 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.32 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_32.OpenTelemetryApiInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:04:285 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.32 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_32.incubator.OpenTelemetryApiIncubatorInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:04:285 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.32 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_32.OpenTelemetryApiInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:04:285 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.32 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_32.incubator.OpenTelemetryApiIncubatorInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:04:285 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.31 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_31.incubator.OpenTelemetryApiInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:04:285 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.31 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_31.incubator.OpenTelemetryApiInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:04:286 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.37 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_37.incubator.OpenTelemetryApiInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:04:286 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.37 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_37.incubator.OpenTelemetryApiInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:04:287 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.15 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_15.OpenTelemetryApiInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:04:287 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.15 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_15.OpenTelemetryApiInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:04:287 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.10 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.OpenTelemetryApiInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:04:288 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.10 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.OpenTelemetryApiInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:04:288 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.4 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_4.OpenTelemetryApiInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:04:288 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.4 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_4.OpenTelemetryApiInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:04:289 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.59 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_59.OpenTelemetryApiInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:04:289 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.59 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_59.OpenTelemetryApiInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:04:289 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-instrumentation-api-1.14 [class io.opentelemetry.javaagent.instrumentation.instrumentationapi.v1_14.InstrumentationApiInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:04:290 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-instrumentation-api-1.14 [class io.opentelemetry.javaagent.instrumentation.instrumentationapi.v1_14.InstrumentationApiInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:04:290 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.0 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_0.OpenTelemetryApiInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:04:291 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.0 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_0.OpenTelemetryApiInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:04:293 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.57 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_57.OpenTelemetryApiInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:04:293 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.57 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_57.OpenTelemetryApiInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:04:293 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation executors [class io.opentelemetry.javaagent.instrumentation.executors.ExecutorsInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:04:297 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation executors [class io.opentelemetry.javaagent.instrumentation.executors.ExecutorsInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:04:348 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation internal-application-logger [class io.opentelemetry.javaagent.instrumentation.internal.application.logger.ApplicationLoggingInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:04:348 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation internal-class-loader [class io.opentelemetry.javaagent.instrumentation.internal.classloader.ClassLoaderInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:04:350 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation internal-application-logger is disabled -[otel.javaagent 2026-10-24 23:22:04:350 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation internal-class-loader [class io.opentelemetry.javaagent.instrumentation.internal.classloader.ClassLoaderInstrumentationModule] injects helper classes -[otel.javaagent 2026-10-24 23:22:04:356 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation internal-eclipse-osgi-3.6 [class io.opentelemetry.javaagent.instrumentation.internal.eclipse.osgi.v3_6.EclipseOsgiInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:04:356 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation internal-eclipse-osgi-3.6 [class io.opentelemetry.javaagent.instrumentation.internal.eclipse.osgi.v3_6.EclipseOsgiInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:04:356 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation internal-lambda [class io.opentelemetry.javaagent.instrumentation.internal.lambda.LambdaInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:04:358 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation internal-reflection [class io.opentelemetry.javaagent.instrumentation.internal.reflection.ReflectionInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:04:358 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation internal-lambda [class io.opentelemetry.javaagent.instrumentation.internal.lambda.LambdaInstrumentationModule] injects helper classes -[otel.javaagent 2026-10-24 23:22:04:358 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation internal-reflection [class io.opentelemetry.javaagent.instrumentation.internal.reflection.ReflectionInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:04:359 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation internal-url-class-loader [class io.opentelemetry.javaagent.instrumentation.internal.urlclassloader.UrlClassLoaderInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:04:359 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation internal-url-class-loader [class io.opentelemetry.javaagent.instrumentation.internal.urlclassloader.UrlClassLoaderInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:04:360 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation elasticsearch-rest-5.0 [class io.opentelemetry.javaagent.instrumentation.elasticsearch.rest.v5_0.ElasticsearchRest5InstrumentationModule] -[otel.javaagent 2026-10-24 23:22:04:360 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation elasticsearch-rest-5.0 [class io.opentelemetry.javaagent.instrumentation.elasticsearch.rest.v5_0.ElasticsearchRest5InstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:04:371 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation apache-httpclient-4.0 [class io.opentelemetry.javaagent.instrumentation.apachehttpclient.v4_0.ApacheHttpClientInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:04:371 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation apache-httpclient-4.0 [class io.opentelemetry.javaagent.instrumentation.apachehttpclient.v4_0.ApacheHttpClientInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:04:375 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation apache-httpasyncclient-4.1 [class io.opentelemetry.javaagent.instrumentation.apachehttpasyncclient.v4_1.ApacheHttpAsyncClientInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:04:375 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation apache-httpasyncclient-4.1 [class io.opentelemetry.javaagent.instrumentation.apachehttpasyncclient.v4_1.ApacheHttpAsyncClientInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:04:376 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation elasticsearch-rest-6.4 [class io.opentelemetry.javaagent.instrumentation.elasticsearch.rest.v6_4.ElasticsearchRest6InstrumentationModule] -[otel.javaagent 2026-10-24 23:22:04:377 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation elasticsearch-rest-6.4 [class io.opentelemetry.javaagent.instrumentation.elasticsearch.rest.v6_4.ElasticsearchRest6InstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:04:382 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation elasticsearch-rest-7.0 [class io.opentelemetry.javaagent.instrumentation.elasticsearch.rest.v7_0.ElasticsearchRest7InstrumentationModule] -[otel.javaagent 2026-10-24 23:22:04:383 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation elasticsearch-rest-7.0 [class io.opentelemetry.javaagent.instrumentation.elasticsearch.rest.v7_0.ElasticsearchRest7InstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:04:395 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation deny-unsafe [class io.opentelemetry.javaagent.testing.instrumentation.DenyUnsafeInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:04:396 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-instrumentation-annotations-1.16 [class io.opentelemetry.javaagent.instrumentation.instrumentationannotations.v1_16.AnnotationInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:04:396 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation deny-unsafe is disabled -[otel.javaagent 2026-10-24 23:22:04:396 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-instrumentation-annotations-1.16 [class io.opentelemetry.javaagent.instrumentation.instrumentationannotations.v1_16.AnnotationInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:04:405 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Installed 38 instrumentation(s) -[otel.javaagent 2026-10-24 23:22:04:406 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller - Loading extension test [class io.opentelemetry.javaagent.testing.bytebuddy.TestAgentExtension] -[otel.javaagent 2026-10-24 23:22:04:435 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller - Installed 2 extension(s) -[otel.javaagent 2026-10-24 23:22:04:447 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.javaagent.shaded.io.opentelemetry.context.StrictContextStorage$PendingScopes -- null -[otel.javaagent 2026-10-24 23:22:04:452 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.javaagent.shaded.io.opentelemetry.context.internal.shaded.WeakConcurrentMap -- null -[otel.javaagent 2026-10-24 23:22:04:455 +0000] [main] DEBUG net.bytebuddy.agent.builder.AgentBuilderUtil - Could not decompose matcher failSafe(try(AnnotationInstrumentationModule#WithSpanInstrumentation(declaresMethods(whereOne((isMethod() and declaresAnnotations(whereOne(ofAnnotationType(name(equals(io.opentelemetry.instrumentation.annotations.WithSpan)))))))))) or false) -[otel.javaagent 2026-10-24 23:22:04:455 +0000] [main] DEBUG net.bytebuddy.agent.builder.AgentBuilderUtil - Could not decompose matcher failSafe(try(AnnotationInstrumentationModule#AddingSpanAttributesInstrumentation(declaresMethods(whereOne((isMethod() and declaresAnnotations(whereOne(ofAnnotationType(name(equals(io.opentelemetry.instrumentation.annotations.AddingSpanAttributes))))) and not(declaresAnnotations(whereOne(ofAnnotationType(name(equals(io.opentelemetry.instrumentation.annotations.WithSpan))))))))))) or false) -[otel.javaagent 2026-10-24 23:22:04:492 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: internal-class-loader [class io.opentelemetry.javaagent.instrumentation.internal.classloader.ClassLoaderInstrumentationModule] on io.opentelemetry.javaagent.bootstrap.AgentClassLoader$BootstrapClassLoaderProxy@21b8d17c -[otel.javaagent 2026-10-24 23:22:04:503 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: internal-url-class-loader [class io.opentelemetry.javaagent.instrumentation.internal.urlclassloader.UrlClassLoaderInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@737edcfa -[otel.javaagent 2026-10-24 23:22:04:671 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.net.URLClassLoader -- null -[otel.javaagent 2026-10-24 23:22:04:718 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed jdk.internal.loader.BuiltinClassLoader -- null -[otel.javaagent 2026-10-24 23:22:04:785 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.lang.ClassLoader -- null -[otel.javaagent 2026-10-24 23:22:04:843 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: executors [class io.opentelemetry.javaagent.instrumentation.executors.ExecutorsInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@5e268ce6 -[otel.javaagent 2026-10-24 23:22:04:850 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.RunnableScheduledFuture -[otel.javaagent 2026-10-24 23:22:04:850 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ScheduledFuture -[otel.javaagent 2026-10-24 23:22:04:850 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.RunnableFuture -[otel.javaagent 2026-10-24 23:22:04:860 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.Future -[otel.javaagent 2026-10-24 23:22:04:862 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for java.util.concurrent.ScheduledExecutorService -[otel.javaagent 2026-10-24 23:22:04:862 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for java.util.concurrent.ScheduledExecutorService -[otel.javaagent 2026-10-24 23:22:04:862 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for java.util.concurrent.ExecutorService -[otel.javaagent 2026-10-24 23:22:04:862 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for java.util.concurrent.ExecutorService -[otel.javaagent 2026-10-24 23:22:04:862 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for java.util.concurrent.Executor -[otel.javaagent 2026-10-24 23:22:04:862 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for java.util.concurrent.Executor -[otel.javaagent 2026-10-24 23:22:04:887 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: internal-lambda [class io.opentelemetry.javaagent.instrumentation.internal.lambda.LambdaInstrumentationModule] on io.opentelemetry.javaagent.bootstrap.AgentClassLoader$BootstrapClassLoaderProxy@21b8d17c -[otel.javaagent 2026-10-24 23:22:04:892 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: internal-reflection [class io.opentelemetry.javaagent.instrumentation.internal.reflection.ReflectionInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@518cf84a -[otel.javaagent 2026-10-24 23:22:04:914 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$java$util$concurrent$Callable$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$java$lang$Runnable$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$java$util$concurrent$Future$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$java$util$concurrent$ForkJoinTask$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext] -[otel.javaagent 2026-10-24 23:22:04:918 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$java$util$concurrent$ForkJoinTask$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$java$util$concurrent$Future$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$java$util$concurrent$Callable$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$java$lang$Runnable$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext] -[otel.javaagent 2026-10-24 23:22:04:939 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ThreadPoolExecutor$Worker -- null -[otel.javaagent 2026-10-24 23:22:04:948 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.Executors$RunnableAdapter -- null -[otel.javaagent 2026-10-24 23:22:04:958 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.Callable -- null -[otel.javaagent 2026-10-24 23:22:04:974 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask -- null -[otel.javaagent 2026-10-24 23:22:04:990 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.FutureTask -- null -[otel.javaagent 2026-10-24 23:22:04:993 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.RunnableScheduledFuture -[otel.javaagent 2026-10-24 23:22:04:997 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.RunnableScheduledFuture -- null -[otel.javaagent 2026-10-24 23:22:04:997 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.RunnableFuture -[otel.javaagent 2026-10-24 23:22:05:000 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.RunnableFuture -- null -[otel.javaagent 2026-10-24 23:22:05:082 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ScheduledThreadPoolExecutor -- null -[otel.javaagent 2026-10-24 23:22:05:130 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ThreadPoolExecutor -- null -[otel.javaagent 2026-10-24 23:22:05:137 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinWorkerThread -- null -[otel.javaagent 2026-10-24 23:22:05:145 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask -- null -[otel.javaagent 2026-10-24 23:22:05:148 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedRunnable -- null -[otel.javaagent 2026-10-24 23:22:05:148 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$AdaptedRunnable -[otel.javaagent 2026-10-24 23:22:05:154 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedRunnable -- null -[otel.javaagent 2026-10-24 23:22:05:156 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedCallable -- null -[otel.javaagent 2026-10-24 23:22:05:173 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$AdaptedRunnableAction -[otel.javaagent 2026-10-24 23:22:05:175 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedCallable -- null -[otel.javaagent 2026-10-24 23:22:05:175 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedRunnableAction -- null -[otel.javaagent 2026-10-24 23:22:05:195 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$AdaptedInterruptibleRunnable -[otel.javaagent 2026-10-24 23:22:05:196 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedRunnableAction -- null -[otel.javaagent 2026-10-24 23:22:05:196 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedInterruptibleRunnable -- null -[otel.javaagent 2026-10-24 23:22:05:213 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedInterruptibleRunnable -- null -[otel.javaagent 2026-10-24 23:22:05:220 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$InterruptibleTask -[otel.javaagent 2026-10-24 23:22:05:244 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$AdaptedInterruptibleCallable -[otel.javaagent 2026-10-24 23:22:05:245 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$InterruptibleTask -- null -[otel.javaagent 2026-10-24 23:22:05:245 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedInterruptibleCallable -- null -[otel.javaagent 2026-10-24 23:22:05:265 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedInterruptibleCallable -- null -[otel.javaagent 2026-10-24 23:22:05:275 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.DelayScheduler -- null -[otel.javaagent 2026-10-24 23:22:05:343 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinPool -- null -[otel.javaagent 2026-10-24 23:22:05:349 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$RunnableExecuteAction -- null -[otel.javaagent 2026-10-24 23:22:05:365 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$RunnableExecuteAction -- null -[otel.javaagent 2026-10-24 23:22:05:366 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.DelayScheduler$ScheduledForkJoinTask -- null -[otel.javaagent 2026-10-24 23:22:05:362 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.DelayScheduler$ScheduledForkJoinTask -[otel.javaagent 2026-10-24 23:22:05:379 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.DelayScheduler$ScheduledForkJoinTask -- null -[otel.javaagent 2026-10-24 23:22:05:380 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$CallableWithTimeout -- null -[otel.javaagent 2026-10-24 23:22:05:384 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$CallableWithTimeout -[otel.javaagent 2026-10-24 23:22:05:390 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$CallableWithTimeout -- null -[otel.javaagent 2026-10-24 23:22:05:436 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.AbstractExecutorService -- null -[otel.javaagent 2026-10-24 23:22:05:438 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.instrumentation.internal.lambda.LambdaTransformerHelper] -[otel.javaagent 2026-10-24 23:22:05:447 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.lang.invoke.InnerClassLambdaMetafactory -- null -[otel.javaagent 2026-10-24 23:22:05:454 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed jdk.internal.reflect.Reflection -- null -[otel.javaagent 2026-10-24 23:22:05:463 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.lang.VirtualThread -- null -[otel.javaagent 2026-10-24 23:22:05:465 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed jdk.internal.misc.CarrierThread -- null -[otel.javaagent 2026-10-24 23:22:05:474 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.lang.Class -- null -[otel.javaagent 2026-10-24 23:22:05:513 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$InterruptibleTask -[otel.javaagent 2026-10-24 23:22:05:519 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$CallableWithTimeout -[otel.javaagent 2026-10-24 23:22:05:533 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.DelayScheduler$ScheduledForkJoinTask -[otel.javaagent 2026-10-24 23:22:05:534 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$CallableWithTimeout -- null -[otel.javaagent 2026-10-24 23:22:05:545 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.DelayScheduler$ScheduledForkJoinTask -- null -[otel.javaagent 2026-10-24 23:22:05:556 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$RunnableExecuteAction -- null -[otel.javaagent 2026-10-24 23:22:05:557 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$AdaptedInterruptibleCallable -[otel.javaagent 2026-10-24 23:22:05:563 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedInterruptibleCallable -- null -[otel.javaagent 2026-10-24 23:22:05:565 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$AdaptedInterruptibleRunnable -[otel.javaagent 2026-10-24 23:22:05:574 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedInterruptibleRunnable -- null -[otel.javaagent 2026-10-24 23:22:05:575 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$InterruptibleTask -[otel.javaagent 2026-10-24 23:22:05:583 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$InterruptibleTask -- null -[otel.javaagent 2026-10-24 23:22:05:584 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$AdaptedRunnableAction -[otel.javaagent 2026-10-24 23:22:05:590 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedRunnableAction -- null -[otel.javaagent 2026-10-24 23:22:05:596 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedCallable -- null -[otel.javaagent 2026-10-24 23:22:05:597 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$AdaptedRunnable -[otel.javaagent 2026-10-24 23:22:05:602 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedRunnable -- null -[otel.javaagent 2026-10-24 23:22:05:690 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: internal-class-loader [class io.opentelemetry.javaagent.instrumentation.internal.classloader.ClassLoaderInstrumentationModule] on jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc -[otel.javaagent 2026-10-24 23:22:05:710 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed worker.org.gradle.internal.classloader.FilteringClassLoader -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc -[otel.javaagent 2026-10-24 23:22:05:741 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed worker.org.gradle.internal.classloader.FilteringClassLoader$RetrieveSystemPackagesClassLoader -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - -Gradle Test Executor 27 STANDARD_ERROR - [otel.javaagent 2026-10-24 23:22:06:455 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: executors [class io.opentelemetry.javaagent.instrumentation.executors.ExecutorsInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@79d7035 - [otel.javaagent 2026-10-24 23:22:06:483 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.junit.platform.commons.util.ReflectionUtils$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:06:487 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.junit.platform.commons.function.Try$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:06:519 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: elasticsearch-rest-5.0 [class io.opentelemetry.javaagent.instrumentation.elasticsearch.rest.v5_0.ElasticsearchRest5InstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@36f6e521 - [otel.javaagent 2026-10-24 23:22:06:520 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$org$elasticsearch$client$RestClient$io$opentelemetry$javaagent$shaded$instrumentation$api$incubator$semconv$db$internal$DbServerTarget] - [otel.javaagent 2026-10-24 23:22:06:520 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$org$elasticsearch$client$RestClient$io$opentelemetry$javaagent$shaded$instrumentation$api$incubator$semconv$db$internal$DbServerTarget] - [otel.javaagent 2026-10-24 23:22:06:520 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$org$elasticsearch$client$RestClient$io$opentelemetry$javaagent$shaded$instrumentation$api$incubator$semconv$db$internal$DbServerTarget] - [otel.javaagent 2026-10-24 23:22:06:520 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$org$elasticsearch$client$RestClient$io$opentelemetry$javaagent$shaded$instrumentation$api$incubator$semconv$db$internal$DbServerTarget] - [otel.javaagent 2026-10-24 23:22:06:521 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$org$elasticsearch$client$RestClient$io$opentelemetry$javaagent$shaded$instrumentation$api$incubator$semconv$db$internal$DbServerTarget, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$org$elasticsearch$client$Request$io$opentelemetry$javaagent$instrumentation$elasticsearch$rest$common$v5_0$ElasticsearchEndpointDefinition] - [otel.javaagent 2026-10-24 23:22:06:521 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$org$elasticsearch$client$RestClient$io$opentelemetry$javaagent$shaded$instrumentation$api$incubator$semconv$db$internal$DbServerTarget, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$org$elasticsearch$client$Request$io$opentelemetry$javaagent$instrumentation$elasticsearch$rest$common$v5_0$ElasticsearchEndpointDefinition] - [otel.javaagent 2026-10-24 23:22:06:524 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.elasticsearch.client.RestClient -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:06:826 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:06:908 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.junit.platform.commons.util.ReflectionUtils$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:07:078 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed ch.qos.logback.core.hook.ShutdownHook -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:07:255 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.56 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_56.incubator.OpenTelemetryApiIncubatorInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@4baf997 - [otel.javaagent 2026-10-24 23:22:07:309 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.65 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_65.incubator.OpenTelemetryApiIncubatorInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@7493d937 - [otel.javaagent 2026-10-24 23:22:07:317 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.63 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_63.OpenTelemetryApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@3db1ce78 - [otel.javaagent 2026-10-24 23:22:07:334 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.27 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_27.OpenTelemetryApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@4276ad40 - [otel.javaagent 2026-10-24 23:22:07:349 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.38 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_38.incubator.OpenTelemetryApiIncubatorInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@619c3546 - [otel.javaagent 2026-10-24 23:22:07:366 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.32 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_32.OpenTelemetryApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@349312d5 - [otel.javaagent 2026-10-24 23:22:07:382 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.15 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_15.OpenTelemetryApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@7d64a960 - [otel.javaagent 2026-10-24 23:22:07:403 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.10 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.OpenTelemetryApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@fcd0e8d - [otel.javaagent 2026-10-24 23:22:07:416 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.4 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_4.OpenTelemetryApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@36e409e0 - [otel.javaagent 2026-10-24 23:22:07:416 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.59 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_59.OpenTelemetryApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@7adae08e - [otel.javaagent 2026-10-24 23:22:07:425 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.0 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_0.OpenTelemetryApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@17c53dfb - [otel.javaagent 2026-10-24 23:22:07:425 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.57 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_57.OpenTelemetryApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@5c8b10b4 - [otel.javaagent 2026-10-24 23:22:07:452 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.api.GlobalOpenTelemetry -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - -ElasticsearchRest5Test STANDARD_ERROR - [otel.javaagent 2026-10-24 23:22:07:818 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for org.testcontainers.utility.LazyFuture - [otel.javaagent 2026-10-24 23:22:07:822 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for org.testcontainers.images.RemoteDockerImage - [otel.javaagent 2026-10-24 23:22:07:827 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.images.RemoteDockerImage -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:07:868 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture - [otel.javaagent 2026-10-24 23:22:07:879 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$Completion - [otel.javaagent 2026-10-24 23:22:07:881 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture -- null - [otel.javaagent 2026-10-24 23:22:07:895 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$Completion -- null - [otel.javaagent 2026-10-24 23:22:07:900 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$BiCompletion -- null - [otel.javaagent 2026-10-24 23:22:07:900 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniCompletion - [otel.javaagent 2026-10-24 23:22:07:905 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniCompletion -- null - [otel.javaagent 2026-10-24 23:22:07:905 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$CoCompletion - [otel.javaagent 2026-10-24 23:22:07:908 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$CoCompletion -- null - [otel.javaagent 2026-10-24 23:22:07:915 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$BiRelay -- null - [otel.javaagent 2026-10-24 23:22:07:915 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$Signaller - [otel.javaagent 2026-10-24 23:22:07:921 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$Signaller -- null - [otel.javaagent 2026-10-24 23:22:07:921 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniApply - [otel.javaagent 2026-10-24 23:22:07:931 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniApply -- null - [otel.javaagent 2026-10-24 23:22:07:931 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniAccept - [otel.javaagent 2026-10-24 23:22:07:936 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniAccept -- null - [otel.javaagent 2026-10-24 23:22:07:936 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniRun - [otel.javaagent 2026-10-24 23:22:07:939 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniRun -- null - [otel.javaagent 2026-10-24 23:22:07:943 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$BiApply -- null - [otel.javaagent 2026-10-24 23:22:07:943 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$BiAccept - [otel.javaagent 2026-10-24 23:22:07:946 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$BiAccept -- null - [otel.javaagent 2026-10-24 23:22:07:946 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$BiRun - [otel.javaagent 2026-10-24 23:22:07:957 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$OrApply - [otel.javaagent 2026-10-24 23:22:07:959 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$BiRun -- null - [otel.javaagent 2026-10-24 23:22:07:965 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$OrApply -- null - [otel.javaagent 2026-10-24 23:22:07:966 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$OrAccept - [otel.javaagent 2026-10-24 23:22:07:975 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$OrAccept -- null - [otel.javaagent 2026-10-24 23:22:07:975 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$OrRun - [otel.javaagent 2026-10-24 23:22:07:984 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$OrRun -- null - [otel.javaagent 2026-10-24 23:22:07:984 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniCompose - [otel.javaagent 2026-10-24 23:22:07:990 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniCompose -- null - [otel.javaagent 2026-10-24 23:22:07:992 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniRelay - [otel.javaagent 2026-10-24 23:22:08:000 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniRelay -- null - [otel.javaagent 2026-10-24 23:22:08:000 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniWhenComplete - [otel.javaagent 2026-10-24 23:22:08:008 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniWhenComplete -- null - [otel.javaagent 2026-10-24 23:22:08:009 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniHandle - [otel.javaagent 2026-10-24 23:22:08:035 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniExceptionally - [otel.javaagent 2026-10-24 23:22:08:036 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniHandle -- null - [otel.javaagent 2026-10-24 23:22:08:041 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniExceptionally -- null - [otel.javaagent 2026-10-24 23:22:08:042 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniComposeExceptionally - [otel.javaagent 2026-10-24 23:22:08:048 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$MinimalStage - [otel.javaagent 2026-10-24 23:22:08:049 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniComposeExceptionally -- null - [otel.javaagent 2026-10-24 23:22:08:049 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$MinimalStage -- null - [otel.javaagent 2026-10-24 23:22:08:049 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$AnyOf - [otel.javaagent 2026-10-24 23:22:08:054 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$AnyOf -- null - [otel.javaagent 2026-10-24 23:22:08:225 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.RecursiveTask - [otel.javaagent 2026-10-24 23:22:08:228 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.RecursiveTask -- null - [otel.javaagent 2026-10-24 23:22:08:248 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.shaded.com.fasterxml.jackson.databind.util.internal.PrivateMaxEntriesMap$AddTask -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:08:379 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.dockerclient.DockerClientProviderStrategy$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:08:403 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for java.util.concurrent.Executors$AutoShutdownDelegatedExecutorService - [otel.javaagent 2026-10-24 23:22:08:403 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for java.util.concurrent.Executors$AutoShutdownDelegatedExecutorService - [otel.javaagent 2026-10-24 23:22:08:429 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.Executors$DelegatedExecutorService -- null - [otel.javaagent 2026-10-24 23:22:08:432 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.Executors$AutoShutdownDelegatedExecutorService$$Lambda -- null - [otel.javaagent 2026-10-24 23:22:08:434 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.shaded.org.awaitility.core.ConditionAwaiter$ConditionPoller -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:08:725 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for com.github.dockerjava.zerodep.shaded.org.apache.hc.core5.concurrent.BasicFuture - [otel.javaagent 2026-10-24 23:22:08:726 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed com.github.dockerjava.zerodep.shaded.org.apache.hc.core5.concurrent.BasicFuture -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:08:728 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for com.github.dockerjava.zerodep.shaded.org.apache.hc.core5.pool.StrictConnPool$1 - [otel.javaagent 2026-10-24 23:22:08:730 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed com.github.dockerjava.zerodep.shaded.org.apache.hc.core5.pool.StrictConnPool$1 -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:09:031 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.containers.GenericContainer$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:09:404 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.containers.GenericContainer$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:09:411 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for org.testcontainers.shaded.org.awaitility.core.SameThreadExecutorService - [otel.javaagent 2026-10-24 23:22:09:411 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for org.testcontainers.shaded.org.awaitility.core.SameThreadExecutorService - [otel.javaagent 2026-10-24 23:22:09:666 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.shaded.com.github.dockerjava.core.DefaultInvocationBuilder$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:09:688 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.utility.RyukResourceReaper$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:09:695 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.utility.RyukResourceReaper$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:09:753 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.utility.MountableFile$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:09:763 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.containers.ContainerState$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:15:970 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: apache-httpasyncclient-4.1 [class io.opentelemetry.javaagent.instrumentation.apachehttpasyncclient.v4_1.ApacheHttpAsyncClientInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@5ef7ae2f - [otel.javaagent 2026-10-24 23:22:15:976 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.nio.client.HttpAsyncClient -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:15:978 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.impl.nio.client.CloseableHttpAsyncClient -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:15:982 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.nio.client.HttpPipeliningClient -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:15:986 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.impl.nio.client.CloseableHttpPipeliningClient -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:15:989 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.impl.nio.client.CloseableHttpAsyncClientBase -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:15:993 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.impl.nio.client.InternalHttpAsyncClient -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:16:019 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:16:055 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.impl.nio.client.CloseableHttpAsyncClientBase$1 -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - -ElasticsearchRest5Test > recordsFailureResponseStatus() STANDARD_ERROR - [otel.javaagent 2026-10-24 23:22:16:254 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for org.apache.http.concurrent.BasicFuture - [otel.javaagent 2026-10-24 23:22:16:259 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.concurrent.BasicFuture -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:16:639 +0000] [I/O dispatcher 1] INFO io.opentelemetry.exporter.logging.LoggingSpanExporter - 'HEAD' : 613e2511baff427d4f128af6214733e8 74778ff9f07289ae CLIENT [tracer: io.opentelemetry.apache-httpasyncclient-4.1:3.0.0-alpha-SNAPSHOT] AttributesMap{data={server.address=localhost, server.port=32865, error.type=404, http.request.method=HEAD, http.response.status_code=404, network.protocol.version=1.1, peer.service=test-peer-service, url.full=http://localhost:32865/missing-index}, capacity=128, totalAddedValues=8} - [otel.javaagent 2026-10-24 23:22:16:641 +0000] [I/O dispatcher 1] INFO io.opentelemetry.javaagent.testing.exporter.OtlpInMemorySpanExporter - Exporting span SpanData{spanContext=ImmutableSpanContext{traceId=613e2511baff427d4f128af6214733e8, spanId=74778ff9f07289ae, traceFlags=03, traceState=ArrayBasedTraceState{entries=[]}, remote=false, valid=true}, parentSpanContext=ImmutableSpanContext{traceId=613e2511baff427d4f128af6214733e8, spanId=2d2866486208589d, traceFlags=03, traceState=ArrayBasedTraceState{entries=[]}, remote=false, valid=true}, resource=Resource{schemaUrl=https://opentelemetry.io/schemas/1.40.0, entities=[SdkEntity{type=service.instance, id={service.instance.id="0bb70945-5f15-41ab-9885-c974bb34cde4"}, description={}, schemaUrl=https://opentelemetry.io/schemas/1.40.0}], attributes={service.instance.id="0bb70945-5f15-41ab-9885-c974bb34cde4", service.name="unknown_service:java", telemetry.distro.name="opentelemetry-javaagent", telemetry.distro.version="3.0.0-SNAPSHOT", telemetry.sdk.language="java", telemetry.sdk.name="opentelemetry", telemetry.sdk.version="1.67.0"}}, instrumentationScopeInfo=InstrumentationScopeInfo{name=io.opentelemetry.apache-httpasyncclient-4.1, version=3.0.0-alpha-SNAPSHOT, schemaUrl=https://opentelemetry.io/schemas/1.41.0, attributes={}}, name=HEAD, kind=CLIENT, startEpochNanos=1792884136296091233, endEpochNanos=1792884136639184686, attributes=AttributesMap{data={server.address=localhost, server.port=32865, error.type=404, http.request.method=HEAD, http.response.status_code=404, network.protocol.version=1.1, peer.service=test-peer-service, url.full=http://localhost:32865/missing-index}, capacity=128, totalAddedValues=8}, totalAttributeCount=8, events=[], totalRecordedEvents=0, links=[], totalRecordedLinks=0, status=ImmutableStatusData{statusCode=ERROR, description=}, hasEnded=true} - [otel.javaagent 2026-10-24 23:22:16:656 +0000] [I/O dispatcher 1] INFO io.opentelemetry.exporter.logging.LoggingSpanExporter - 'localhost:32865' : 613e2511baff427d4f128af6214733e8 2d2866486208589d CLIENT [tracer: io.opentelemetry.elasticsearch-rest-5.0:3.0.0-alpha-SNAPSHOT] AttributesMap{data={server.address=localhost, server.port=32865, error.type=404, http.request.method=HEAD, db.system.name=elasticsearch, db.response.status_code=404, url.full=http://localhost:32865/missing-index}, capacity=128, totalAddedValues=7} - [otel.javaagent 2026-10-24 23:22:16:656 +0000] [I/O dispatcher 1] INFO io.opentelemetry.javaagent.testing.exporter.OtlpInMemorySpanExporter - Exporting span SpanData{spanContext=ImmutableSpanContext{traceId=613e2511baff427d4f128af6214733e8, spanId=2d2866486208589d, traceFlags=03, traceState=ArrayBasedTraceState{entries=[]}, remote=false, valid=true}, parentSpanContext=ImmutableSpanContext{traceId=00000000000000000000000000000000, spanId=0000000000000000, traceFlags=00, traceState=ArrayBasedTraceState{entries=[]}, remote=false, valid=false}, resource=Resource{schemaUrl=https://opentelemetry.io/schemas/1.40.0, entities=[SdkEntity{type=service.instance, id={service.instance.id="0bb70945-5f15-41ab-9885-c974bb34cde4"}, description={}, schemaUrl=https://opentelemetry.io/schemas/1.40.0}], attributes={service.instance.id="0bb70945-5f15-41ab-9885-c974bb34cde4", service.name="unknown_service:java", telemetry.distro.name="opentelemetry-javaagent", telemetry.distro.version="3.0.0-SNAPSHOT", telemetry.sdk.language="java", telemetry.sdk.name="opentelemetry", telemetry.sdk.version="1.67.0"}}, instrumentationScopeInfo=InstrumentationScopeInfo{name=io.opentelemetry.elasticsearch-rest-5.0, version=3.0.0-alpha-SNAPSHOT, schemaUrl=https://opentelemetry.io/schemas/1.44.0, attributes={}}, name=localhost:32865, kind=CLIENT, startEpochNanos=1792884136225791407, endEpochNanos=1792884136656033646, attributes=AttributesMap{data={server.address=localhost, server.port=32865, error.type=404, http.request.method=HEAD, db.system.name=elasticsearch, db.response.status_code=404, url.full=http://localhost:32865/missing-index}, capacity=128, totalAddedValues=7}, totalAttributeCount=7, events=[], totalRecordedEvents=0, links=[], totalRecordedLinks=0, status=ImmutableStatusData{statusCode=UNSET, description=}, hasEnded=true} - [otel.javaagent 2026-10-24 23:22:16:711 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.instrumentation.testing.InstrumentationTestRunner$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:16:812 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.awaitility.core.ConditionAwaiter$ConditionPoller -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:26:783 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.context.internal.shaded.AbstractWeakConcurrentMap -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:26:784 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.context.internal.shaded.WeakConcurrentMap -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:26:829 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.context.StrictContextStorage$PendingScopes -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:26:829 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.context.ContextStorageWrappers -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:26:835 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.context.ArrayBasedContext -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:26:843 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-instrumentation-api-1.14 [class io.opentelemetry.javaagent.instrumentation.instrumentationapi.v1_14.InstrumentationApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@6e111aeb - [otel.javaagent 2026-10-24 23:22:26:850 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.instrumentation.api.internal.HttpRouteState -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:26:854 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.instrumentation.api.internal.SpanKey -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:26:858 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.instrumentation.testing.util.ContextStorageCloser$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - -ElasticsearchRest5Test > recordsFailureResponseStatus() FAILED - org.opentest4j.AssertionFailedError: [Span 1] Expected span to have name but was - at app//io.opentelemetry.javaagent.instrumentation.elasticsearch.rest.v5_0.ElasticsearchRest5Test.lambda$recordsFailureResponseStatus$2(ElasticsearchRest5Test.java:117) - at app//io.opentelemetry.sdk.testing.assertj.TraceAssert.hasSpansSatisfyingExactly(TraceAssert.java:65) - at app//io.opentelemetry.sdk.testing.assertj.TraceAssert.hasSpansSatisfyingExactly(TraceAssert.java:49) - at app//io.opentelemetry.javaagent.instrumentation.elasticsearch.rest.v5_0.ElasticsearchRest5Test.lambda$recordsFailureResponseStatus$0(ElasticsearchRest5Test.java:103) - at app//io.opentelemetry.sdk.testing.assertj.TracesAssert.hasTracesSatisfyingExactly(TracesAssert.java:108) - at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.doAssertTraces(InstrumentationTestRunner.java:191) - at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.lambda$waitAndAssertTraces$0(InstrumentationTestRunner.java:177) - at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.awaitUntilAsserted(InstrumentationTestRunner.java:497) - at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.awaitUntilAsserted(InstrumentationTestRunner.java:480) - at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.waitAndAssertTraces(InstrumentationTestRunner.java:177) - at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.waitAndAssertTraces(InstrumentationTestRunner.java:167) - at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.waitAndAssertTraces(InstrumentationTestRunner.java:163) - at app//io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension.waitAndAssertTraces(InstrumentationExtension.java:167) - at app//io.opentelemetry.javaagent.instrumentation.elasticsearch.rest.v5_0.ElasticsearchRest5Test.recordsFailureResponseStatus(ElasticsearchRest5Test.java:101) - -ElasticsearchRest5Test > elasticsearchStatus() STANDARD_ERROR - [otel.javaagent 2026-10-24 23:22:26:888 +0000] [I/O dispatcher 1] INFO io.opentelemetry.exporter.logging.LoggingSpanExporter - 'GET' : 43316ae11ab7ff9b05d912c383854294 43f5fa830c1678ef CLIENT [tracer: io.opentelemetry.apache-httpasyncclient-4.1:3.0.0-alpha-SNAPSHOT] AttributesMap{data={server.address=localhost, server.port=32865, http.request.method=GET, http.response.status_code=200, network.protocol.version=1.1, peer.service=test-peer-service, url.full=http://localhost:32865/_cluster/health}, capacity=128, totalAddedValues=7} - [otel.javaagent 2026-10-24 23:22:26:888 +0000] [I/O dispatcher 1] INFO io.opentelemetry.javaagent.testing.exporter.OtlpInMemorySpanExporter - Exporting span SpanData{spanContext=ImmutableSpanContext{traceId=43316ae11ab7ff9b05d912c383854294, spanId=43f5fa830c1678ef, traceFlags=03, traceState=ArrayBasedTraceState{entries=[]}, remote=false, valid=true}, parentSpanContext=ImmutableSpanContext{traceId=43316ae11ab7ff9b05d912c383854294, spanId=809b2b57a317f9d2, traceFlags=03, traceState=ArrayBasedTraceState{entries=[]}, remote=false, valid=true}, resource=Resource{schemaUrl=https://opentelemetry.io/schemas/1.40.0, entities=[SdkEntity{type=service.instance, id={service.instance.id="0bb70945-5f15-41ab-9885-c974bb34cde4"}, description={}, schemaUrl=https://opentelemetry.io/schemas/1.40.0}], attributes={service.instance.id="0bb70945-5f15-41ab-9885-c974bb34cde4", service.name="unknown_service:java", telemetry.distro.name="opentelemetry-javaagent", telemetry.distro.version="3.0.0-SNAPSHOT", telemetry.sdk.language="java", telemetry.sdk.name="opentelemetry", telemetry.sdk.version="1.67.0"}}, instrumentationScopeInfo=InstrumentationScopeInfo{name=io.opentelemetry.apache-httpasyncclient-4.1, version=3.0.0-alpha-SNAPSHOT, schemaUrl=https://opentelemetry.io/schemas/1.41.0, attributes={}}, name=GET, kind=CLIENT, startEpochNanos=1792884146880764503, endEpochNanos=1792884146888287731, attributes=AttributesMap{data={server.address=localhost, server.port=32865, http.request.method=GET, http.response.status_code=200, network.protocol.version=1.1, peer.service=test-peer-service, url.full=http://localhost:32865/_cluster/health}, capacity=128, totalAddedValues=7}, totalAttributeCount=7, events=[], totalRecordedEvents=0, links=[], totalRecordedLinks=0, status=ImmutableStatusData{statusCode=UNSET, description=}, hasEnded=true} - [otel.javaagent 2026-10-24 23:22:26:889 +0000] [I/O dispatcher 1] INFO io.opentelemetry.exporter.logging.LoggingSpanExporter - 'localhost:32865' : 43316ae11ab7ff9b05d912c383854294 809b2b57a317f9d2 CLIENT [tracer: io.opentelemetry.elasticsearch-rest-5.0:3.0.0-alpha-SNAPSHOT] AttributesMap{data={server.address=localhost, server.port=32865, db.system.name=elasticsearch, http.request.method=GET, url.full=http://localhost:32865/_cluster/health}, capacity=128, totalAddedValues=5} - [otel.javaagent 2026-10-24 23:22:26:889 +0000] [I/O dispatcher 1] INFO io.opentelemetry.javaagent.testing.exporter.OtlpInMemorySpanExporter - Exporting span SpanData{spanContext=ImmutableSpanContext{traceId=43316ae11ab7ff9b05d912c383854294, spanId=809b2b57a317f9d2, traceFlags=03, traceState=ArrayBasedTraceState{entries=[]}, remote=false, valid=true}, parentSpanContext=ImmutableSpanContext{traceId=00000000000000000000000000000000, spanId=0000000000000000, traceFlags=00, traceState=ArrayBasedTraceState{entries=[]}, remote=false, valid=false}, resource=Resource{schemaUrl=https://opentelemetry.io/schemas/1.40.0, entities=[SdkEntity{type=service.instance, id={service.instance.id="0bb70945-5f15-41ab-9885-c974bb34cde4"}, description={}, schemaUrl=https://opentelemetry.io/schemas/1.40.0}], attributes={service.instance.id="0bb70945-5f15-41ab-9885-c974bb34cde4", service.name="unknown_service:java", telemetry.distro.name="opentelemetry-javaagent", telemetry.distro.version="3.0.0-SNAPSHOT", telemetry.sdk.language="java", telemetry.sdk.name="opentelemetry", telemetry.sdk.version="1.67.0"}}, instrumentationScopeInfo=InstrumentationScopeInfo{name=io.opentelemetry.elasticsearch-rest-5.0, version=3.0.0-alpha-SNAPSHOT, schemaUrl=https://opentelemetry.io/schemas/1.44.0, attributes={}}, name=localhost:32865, kind=CLIENT, startEpochNanos=1792884146880171060, endEpochNanos=1792884146889142198, attributes=AttributesMap{data={server.address=localhost, server.port=32865, db.system.name=elasticsearch, http.request.method=GET, url.full=http://localhost:32865/_cluster/health}, capacity=128, totalAddedValues=5}, totalAttributeCount=5, events=[], totalRecordedEvents=0, links=[], totalRecordedLinks=0, status=ImmutableStatusData{statusCode=UNSET, description=}, hasEnded=true} - [otel.javaagent 2026-10-24 23:22:26:899 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed com.fasterxml.jackson.databind.util.internal.PrivateMaxEntriesMap$AddTask -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - -ElasticsearchRest5Test > elasticsearchStatus() FAILED - org.opentest4j.AssertionFailedError: [Span 1] Expected span to have name but was - at app//io.opentelemetry.javaagent.instrumentation.elasticsearch.rest.v5_0.ElasticsearchRest5Test.lambda$elasticsearchStatus$2(ElasticsearchRest5Test.java:143) - at app//io.opentelemetry.sdk.testing.assertj.TraceAssert.hasSpansSatisfyingExactly(TraceAssert.java:65) - at app//io.opentelemetry.sdk.testing.assertj.TraceAssert.hasSpansSatisfyingExactly(TraceAssert.java:49) - at app//io.opentelemetry.javaagent.instrumentation.elasticsearch.rest.v5_0.ElasticsearchRest5Test.lambda$elasticsearchStatus$0(ElasticsearchRest5Test.java:131) - at app//io.opentelemetry.sdk.testing.assertj.TracesAssert.hasTracesSatisfyingExactly(TracesAssert.java:108) - at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.doAssertTraces(InstrumentationTestRunner.java:191) - at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.lambda$waitAndAssertTraces$0(InstrumentationTestRunner.java:177) - at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.awaitUntilAsserted(InstrumentationTestRunner.java:497) - at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.awaitUntilAsserted(InstrumentationTestRunner.java:480) - at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.waitAndAssertTraces(InstrumentationTestRunner.java:177) - at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.waitAndAssertTraces(InstrumentationTestRunner.java:167) - at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.waitAndAssertTraces(InstrumentationTestRunner.java:163) - at app//io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension.waitAndAssertTraces(InstrumentationExtension.java:167) - at app//io.opentelemetry.javaagent.instrumentation.elasticsearch.rest.v5_0.ElasticsearchRest5Test.elasticsearchStatus(ElasticsearchRest5Test.java:129) -OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended -[otel.javaagent 2026-10-24 23:22:37:407 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.ExtensionClassLoader - Loaded extension jar file "/tmp/otel-extensions402883469329093552/opentelemetry-agent-exporter-3.0.0-alpha-SNAPSHOT-all.jar" -[otel.javaagent 2026-10-24 23:22:37:417 +0000] [main] INFO io.opentelemetry.javaagent.tooling.VersionLogger - opentelemetry-javaagent - version: 3.0.0-SNAPSHOT -[otel.javaagent 2026-10-24 23:22:37:417 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.VersionLogger - Running on Java 25.0.4.1. JVM OpenJDK 64-Bit Server VM - Eclipse Adoptium - 25.0.4.1+1-LTS -[otel.javaagent 2026-10-24 23:22:37:417 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller - io.opentelemetry.javaagent.tooling.AgentInstaller loaded on io.opentelemetry.javaagent.bootstrap.AgentClassLoader@7daf6ecc -[otel.javaagent 2026-10-24 23:22:37:716 +0000] [main] DEBUG io.opentelemetry.javaagent.testing.exporter.OtlpInMemoryMetricExporter - Setting aggregation temporality to DELTA -[otel.javaagent 2026-10-24 23:22:37:824 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$java$util$concurrent$Callable$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$java$lang$Runnable$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$java$util$concurrent$Future$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$java$util$concurrent$ForkJoinTask$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext] -[otel.javaagent 2026-10-24 23:22:37:830 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$java$util$concurrent$ForkJoinTask$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$java$util$concurrent$Future$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$java$util$concurrent$Callable$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$java$lang$Runnable$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext] -[otel.javaagent 2026-10-24 23:22:37:835 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.ExposeAgentBootstrapListener - Adding module read from module java.base to unnamed module @61c9c3fd -[otel.javaagent 2026-10-24 23:22:37:835 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask -- null -[otel.javaagent 2026-10-24 23:22:37:839 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.FutureTask -- null -[otel.javaagent 2026-10-24 23:22:37:839 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.Executors$RunnableAdapter -- null -[otel.javaagent 2026-10-24 23:22:37:840 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ThreadPoolExecutor$Worker -- null -[otel.javaagent 2026-10-24 23:22:37:885 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.lang.ApplicationShutdownHooks$1 -- null -[otel.javaagent 2026-10-24 23:22:37:920 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller - Loading extension instrumentation-loader [class io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader] -[otel.javaagent 2026-10-24 23:22:37:949 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.56 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_56.incubator.OpenTelemetryApiIncubatorInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:37:949 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.56 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_56.incubator.OpenTelemetryApiIncubatorInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:37:963 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.65 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_65.incubator.OpenTelemetryApiIncubatorInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:37:963 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.65 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_65.incubator.OpenTelemetryApiIncubatorInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:37:964 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.63 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_63.OpenTelemetryApiInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:37:964 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.63 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_63.OpenTelemetryApiInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:37:964 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.63 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_63.incubator.OpenTelemetryApiIncubatorInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:37:964 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.63 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_63.incubator.OpenTelemetryApiIncubatorInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:37:965 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.50 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_50.OpenTelemetryApiInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:37:965 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.50 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_50.OpenTelemetryApiInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:37:965 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.50 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_50.incubator.OpenTelemetryApiIncubatorInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:37:965 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.50 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_50.incubator.OpenTelemetryApiIncubatorInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:37:966 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.47 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_47.incubator.OpenTelemetryApiIncubatorInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:37:966 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.47 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_47.incubator.OpenTelemetryApiIncubatorInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:37:966 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.42 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_42.OpenTelemetryApiInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:37:966 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.42 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_42.OpenTelemetryApiInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:37:966 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.42 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_42.incubator.OpenTelemetryApiIncubatorInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:37:967 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.42 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_42.incubator.OpenTelemetryApiIncubatorInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:37:967 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.40 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.OpenTelemetryApiIncubatorInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:37:968 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.40 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.OpenTelemetryApiIncubatorInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:37:969 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.27 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_27.OpenTelemetryApiInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:37:969 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.27 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_27.OpenTelemetryApiInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:37:969 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.38 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_38.OpenTelemetryApiInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:37:969 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.38 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_38.OpenTelemetryApiInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:37:970 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.38 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_38.incubator.OpenTelemetryApiIncubatorInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:37:970 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.38 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_38.incubator.OpenTelemetryApiIncubatorInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:37:971 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.32 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_32.OpenTelemetryApiInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:37:971 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.32 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_32.OpenTelemetryApiInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:37:971 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.32 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_32.incubator.OpenTelemetryApiIncubatorInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:37:971 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.32 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_32.incubator.OpenTelemetryApiIncubatorInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:37:971 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.31 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_31.incubator.OpenTelemetryApiInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:37:972 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.31 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_31.incubator.OpenTelemetryApiInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:37:972 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.37 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_37.incubator.OpenTelemetryApiInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:37:972 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.37 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_37.incubator.OpenTelemetryApiInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:37:972 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.15 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_15.OpenTelemetryApiInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:37:973 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.10 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.OpenTelemetryApiInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:37:973 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.15 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_15.OpenTelemetryApiInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:37:973 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.10 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.OpenTelemetryApiInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:37:973 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.4 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_4.OpenTelemetryApiInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:37:974 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.4 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_4.OpenTelemetryApiInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:37:974 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.59 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_59.OpenTelemetryApiInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:37:974 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.59 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_59.OpenTelemetryApiInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:37:974 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-instrumentation-api-1.14 [class io.opentelemetry.javaagent.instrumentation.instrumentationapi.v1_14.InstrumentationApiInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:37:974 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-instrumentation-api-1.14 [class io.opentelemetry.javaagent.instrumentation.instrumentationapi.v1_14.InstrumentationApiInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:37:975 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.0 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_0.OpenTelemetryApiInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:37:975 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.0 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_0.OpenTelemetryApiInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:37:976 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.57 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_57.OpenTelemetryApiInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:37:976 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.57 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_57.OpenTelemetryApiInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:37:977 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation executors [class io.opentelemetry.javaagent.instrumentation.executors.ExecutorsInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:37:977 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation executors [class io.opentelemetry.javaagent.instrumentation.executors.ExecutorsInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:37:998 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation internal-application-logger [class io.opentelemetry.javaagent.instrumentation.internal.application.logger.ApplicationLoggingInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:37:998 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation internal-class-loader [class io.opentelemetry.javaagent.instrumentation.internal.classloader.ClassLoaderInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:37:998 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation internal-application-logger is disabled -[otel.javaagent 2026-10-24 23:22:37:998 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation internal-class-loader [class io.opentelemetry.javaagent.instrumentation.internal.classloader.ClassLoaderInstrumentationModule] injects helper classes -[otel.javaagent 2026-10-24 23:22:38:001 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation internal-eclipse-osgi-3.6 [class io.opentelemetry.javaagent.instrumentation.internal.eclipse.osgi.v3_6.EclipseOsgiInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:38:001 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation internal-eclipse-osgi-3.6 [class io.opentelemetry.javaagent.instrumentation.internal.eclipse.osgi.v3_6.EclipseOsgiInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:38:002 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation internal-lambda [class io.opentelemetry.javaagent.instrumentation.internal.lambda.LambdaInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:38:002 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation internal-lambda [class io.opentelemetry.javaagent.instrumentation.internal.lambda.LambdaInstrumentationModule] injects helper classes -[otel.javaagent 2026-10-24 23:22:38:003 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation internal-reflection [class io.opentelemetry.javaagent.instrumentation.internal.reflection.ReflectionInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:38:003 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation internal-reflection [class io.opentelemetry.javaagent.instrumentation.internal.reflection.ReflectionInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:38:004 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation internal-url-class-loader [class io.opentelemetry.javaagent.instrumentation.internal.urlclassloader.UrlClassLoaderInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:38:004 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation internal-url-class-loader [class io.opentelemetry.javaagent.instrumentation.internal.urlclassloader.UrlClassLoaderInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:38:004 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation elasticsearch-rest-5.0 [class io.opentelemetry.javaagent.instrumentation.elasticsearch.rest.v5_0.ElasticsearchRest5InstrumentationModule] -[otel.javaagent 2026-10-24 23:22:38:004 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation elasticsearch-rest-5.0 [class io.opentelemetry.javaagent.instrumentation.elasticsearch.rest.v5_0.ElasticsearchRest5InstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:38:008 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation apache-httpclient-4.0 [class io.opentelemetry.javaagent.instrumentation.apachehttpclient.v4_0.ApacheHttpClientInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:38:008 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation apache-httpclient-4.0 [class io.opentelemetry.javaagent.instrumentation.apachehttpclient.v4_0.ApacheHttpClientInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:38:009 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation apache-httpasyncclient-4.1 [class io.opentelemetry.javaagent.instrumentation.apachehttpasyncclient.v4_1.ApacheHttpAsyncClientInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:38:009 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation apache-httpasyncclient-4.1 [class io.opentelemetry.javaagent.instrumentation.apachehttpasyncclient.v4_1.ApacheHttpAsyncClientInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:38:009 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation elasticsearch-rest-6.4 [class io.opentelemetry.javaagent.instrumentation.elasticsearch.rest.v6_4.ElasticsearchRest6InstrumentationModule] -[otel.javaagent 2026-10-24 23:22:38:010 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation elasticsearch-rest-6.4 [class io.opentelemetry.javaagent.instrumentation.elasticsearch.rest.v6_4.ElasticsearchRest6InstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:38:013 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation elasticsearch-rest-7.0 [class io.opentelemetry.javaagent.instrumentation.elasticsearch.rest.v7_0.ElasticsearchRest7InstrumentationModule] -[otel.javaagent 2026-10-24 23:22:38:013 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation elasticsearch-rest-7.0 [class io.opentelemetry.javaagent.instrumentation.elasticsearch.rest.v7_0.ElasticsearchRest7InstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:38:019 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation deny-unsafe [class io.opentelemetry.javaagent.testing.instrumentation.DenyUnsafeInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:38:019 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-instrumentation-annotations-1.16 [class io.opentelemetry.javaagent.instrumentation.instrumentationannotations.v1_16.AnnotationInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:38:019 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation deny-unsafe is disabled -[otel.javaagent 2026-10-24 23:22:38:019 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-instrumentation-annotations-1.16 [class io.opentelemetry.javaagent.instrumentation.instrumentationannotations.v1_16.AnnotationInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:38:024 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Installed 38 instrumentation(s) -[otel.javaagent 2026-10-24 23:22:38:024 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller - Loading extension test [class io.opentelemetry.javaagent.testing.bytebuddy.TestAgentExtension] -[otel.javaagent 2026-10-24 23:22:38:033 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller - Installed 2 extension(s) -[otel.javaagent 2026-10-24 23:22:38:037 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.javaagent.shaded.io.opentelemetry.context.StrictContextStorage$PendingScopes -- null -[otel.javaagent 2026-10-24 23:22:38:038 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.javaagent.shaded.io.opentelemetry.context.internal.shaded.WeakConcurrentMap -- null -[otel.javaagent 2026-10-24 23:22:38:040 +0000] [main] DEBUG net.bytebuddy.agent.builder.AgentBuilderUtil - Could not decompose matcher failSafe(try(AnnotationInstrumentationModule#WithSpanInstrumentation(declaresMethods(whereOne((isMethod() and declaresAnnotations(whereOne(ofAnnotationType(name(equals(io.opentelemetry.instrumentation.annotations.WithSpan)))))))))) or false) -[otel.javaagent 2026-10-24 23:22:38:040 +0000] [main] DEBUG net.bytebuddy.agent.builder.AgentBuilderUtil - Could not decompose matcher failSafe(try(AnnotationInstrumentationModule#AddingSpanAttributesInstrumentation(declaresMethods(whereOne((isMethod() and declaresAnnotations(whereOne(ofAnnotationType(name(equals(io.opentelemetry.instrumentation.annotations.AddingSpanAttributes))))) and not(declaresAnnotations(whereOne(ofAnnotationType(name(equals(io.opentelemetry.instrumentation.annotations.WithSpan))))))))))) or false) -[otel.javaagent 2026-10-24 23:22:38:054 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: internal-class-loader [class io.opentelemetry.javaagent.instrumentation.internal.classloader.ClassLoaderInstrumentationModule] on io.opentelemetry.javaagent.bootstrap.AgentClassLoader$BootstrapClassLoaderProxy@21b8d17c -[otel.javaagent 2026-10-24 23:22:38:059 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: internal-url-class-loader [class io.opentelemetry.javaagent.instrumentation.internal.urlclassloader.UrlClassLoaderInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@737edcfa -[otel.javaagent 2026-10-24 23:22:38:123 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.net.URLClassLoader -- null -[otel.javaagent 2026-10-24 23:22:38:135 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed jdk.internal.loader.BuiltinClassLoader -- null -[otel.javaagent 2026-10-24 23:22:38:157 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.lang.ClassLoader -- null -[otel.javaagent 2026-10-24 23:22:38:188 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: executors [class io.opentelemetry.javaagent.instrumentation.executors.ExecutorsInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@5e268ce6 -[otel.javaagent 2026-10-24 23:22:38:192 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.RunnableScheduledFuture -[otel.javaagent 2026-10-24 23:22:38:193 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ScheduledFuture -[otel.javaagent 2026-10-24 23:22:38:193 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.RunnableFuture -[otel.javaagent 2026-10-24 23:22:38:201 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.Future -[otel.javaagent 2026-10-24 23:22:38:202 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for java.util.concurrent.ScheduledExecutorService -[otel.javaagent 2026-10-24 23:22:38:202 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for java.util.concurrent.ScheduledExecutorService -[otel.javaagent 2026-10-24 23:22:38:203 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for java.util.concurrent.ExecutorService -[otel.javaagent 2026-10-24 23:22:38:203 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for java.util.concurrent.ExecutorService -[otel.javaagent 2026-10-24 23:22:38:203 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for java.util.concurrent.Executor -[otel.javaagent 2026-10-24 23:22:38:203 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for java.util.concurrent.Executor -[otel.javaagent 2026-10-24 23:22:38:221 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: internal-lambda [class io.opentelemetry.javaagent.instrumentation.internal.lambda.LambdaInstrumentationModule] on io.opentelemetry.javaagent.bootstrap.AgentClassLoader$BootstrapClassLoaderProxy@21b8d17c -[otel.javaagent 2026-10-24 23:22:38:224 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: internal-reflection [class io.opentelemetry.javaagent.instrumentation.internal.reflection.ReflectionInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@518cf84a -[otel.javaagent 2026-10-24 23:22:38:234 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$java$util$concurrent$Callable$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$java$lang$Runnable$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$java$util$concurrent$Future$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$java$util$concurrent$ForkJoinTask$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext] -[otel.javaagent 2026-10-24 23:22:38:235 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$java$util$concurrent$ForkJoinTask$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$java$util$concurrent$Future$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$java$util$concurrent$Callable$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$java$lang$Runnable$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext] -[otel.javaagent 2026-10-24 23:22:38:241 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ThreadPoolExecutor$Worker -- null -[otel.javaagent 2026-10-24 23:22:38:246 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.Executors$RunnableAdapter -- null -[otel.javaagent 2026-10-24 23:22:38:247 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.Callable -- null -[otel.javaagent 2026-10-24 23:22:38:252 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask -- null -[otel.javaagent 2026-10-24 23:22:38:257 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.FutureTask -- null -[otel.javaagent 2026-10-24 23:22:38:258 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.RunnableScheduledFuture -[otel.javaagent 2026-10-24 23:22:38:260 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.RunnableScheduledFuture -- null -[otel.javaagent 2026-10-24 23:22:38:260 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.RunnableFuture -[otel.javaagent 2026-10-24 23:22:38:262 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.RunnableFuture -- null -[otel.javaagent 2026-10-24 23:22:38:291 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ScheduledThreadPoolExecutor -- null -[otel.javaagent 2026-10-24 23:22:38:324 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ThreadPoolExecutor -- null -[otel.javaagent 2026-10-24 23:22:38:329 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinWorkerThread -- null -[otel.javaagent 2026-10-24 23:22:38:336 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask -- null -[otel.javaagent 2026-10-24 23:22:38:336 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedRunnable -- null -[otel.javaagent 2026-10-24 23:22:38:337 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$AdaptedRunnable -[otel.javaagent 2026-10-24 23:22:38:342 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedRunnable -- null -[otel.javaagent 2026-10-24 23:22:38:343 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedCallable -- null -[otel.javaagent 2026-10-24 23:22:38:348 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedCallable -- null -[otel.javaagent 2026-10-24 23:22:38:349 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedRunnableAction -- null -[otel.javaagent 2026-10-24 23:22:38:349 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$AdaptedRunnableAction -[otel.javaagent 2026-10-24 23:22:38:353 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedRunnableAction -- null -[otel.javaagent 2026-10-24 23:22:38:354 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedInterruptibleRunnable -- null -[otel.javaagent 2026-10-24 23:22:38:355 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$AdaptedInterruptibleRunnable -[otel.javaagent 2026-10-24 23:22:38:358 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedInterruptibleRunnable -- null -[otel.javaagent 2026-10-24 23:22:38:358 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$InterruptibleTask -[otel.javaagent 2026-10-24 23:22:38:363 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$InterruptibleTask -- null -[otel.javaagent 2026-10-24 23:22:38:363 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedInterruptibleCallable -- null -[otel.javaagent 2026-10-24 23:22:38:364 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$AdaptedInterruptibleCallable -[otel.javaagent 2026-10-24 23:22:38:367 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedInterruptibleCallable -- null -[otel.javaagent 2026-10-24 23:22:38:372 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.DelayScheduler -- null -[otel.javaagent 2026-10-24 23:22:38:400 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinPool -- null -[otel.javaagent 2026-10-24 23:22:38:402 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$RunnableExecuteAction -- null -[otel.javaagent 2026-10-24 23:22:38:407 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$RunnableExecuteAction -- null -[otel.javaagent 2026-10-24 23:22:38:408 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.DelayScheduler$ScheduledForkJoinTask -- null -[otel.javaagent 2026-10-24 23:22:38:408 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.DelayScheduler$ScheduledForkJoinTask -[otel.javaagent 2026-10-24 23:22:38:412 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.DelayScheduler$ScheduledForkJoinTask -- null -[otel.javaagent 2026-10-24 23:22:38:413 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$CallableWithTimeout -- null -[otel.javaagent 2026-10-24 23:22:38:413 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$CallableWithTimeout -[otel.javaagent 2026-10-24 23:22:38:417 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$CallableWithTimeout -- null -[otel.javaagent 2026-10-24 23:22:38:438 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.AbstractExecutorService -- null -[otel.javaagent 2026-10-24 23:22:38:439 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.instrumentation.internal.lambda.LambdaTransformerHelper] -[otel.javaagent 2026-10-24 23:22:38:446 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.lang.invoke.InnerClassLambdaMetafactory -- null -[otel.javaagent 2026-10-24 23:22:38:451 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed jdk.internal.reflect.Reflection -- null -[otel.javaagent 2026-10-24 23:22:38:457 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.lang.VirtualThread -- null -[otel.javaagent 2026-10-24 23:22:38:460 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed jdk.internal.misc.CarrierThread -- null -[otel.javaagent 2026-10-24 23:22:38:464 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.lang.Class -- null -[otel.javaagent 2026-10-24 23:22:38:485 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$InterruptibleTask -[otel.javaagent 2026-10-24 23:22:38:488 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$CallableWithTimeout -[otel.javaagent 2026-10-24 23:22:38:493 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$CallableWithTimeout -- null -[otel.javaagent 2026-10-24 23:22:38:494 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.DelayScheduler$ScheduledForkJoinTask -[otel.javaagent 2026-10-24 23:22:38:498 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.DelayScheduler$ScheduledForkJoinTask -- null -[otel.javaagent 2026-10-24 23:22:38:503 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$RunnableExecuteAction -- null -[otel.javaagent 2026-10-24 23:22:38:504 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$AdaptedInterruptibleCallable -[otel.javaagent 2026-10-24 23:22:38:508 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedInterruptibleCallable -- null -[otel.javaagent 2026-10-24 23:22:38:509 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$AdaptedInterruptibleRunnable -[otel.javaagent 2026-10-24 23:22:38:513 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedInterruptibleRunnable -- null -[otel.javaagent 2026-10-24 23:22:38:513 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$InterruptibleTask -[otel.javaagent 2026-10-24 23:22:38:517 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$InterruptibleTask -- null -[otel.javaagent 2026-10-24 23:22:38:518 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$AdaptedRunnableAction -[otel.javaagent 2026-10-24 23:22:38:522 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedRunnableAction -- null -[otel.javaagent 2026-10-24 23:22:38:528 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedCallable -- null -[otel.javaagent 2026-10-24 23:22:38:528 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$AdaptedRunnable -[otel.javaagent 2026-10-24 23:22:38:533 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedRunnable -- null -[otel.javaagent 2026-10-24 23:22:38:562 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: internal-class-loader [class io.opentelemetry.javaagent.instrumentation.internal.classloader.ClassLoaderInstrumentationModule] on jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc -[otel.javaagent 2026-10-24 23:22:38:570 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed worker.org.gradle.internal.classloader.FilteringClassLoader -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc -[otel.javaagent 2026-10-24 23:22:38:581 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed worker.org.gradle.internal.classloader.FilteringClassLoader$RetrieveSystemPackagesClassLoader -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - -Gradle Test Executor 28 STANDARD_ERROR - [otel.javaagent 2026-10-24 23:22:38:897 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: executors [class io.opentelemetry.javaagent.instrumentation.executors.ExecutorsInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@457a5b2d - [otel.javaagent 2026-10-24 23:22:38:908 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.junit.platform.commons.util.ReflectionUtils$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:38:910 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.junit.platform.commons.function.Try$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:38:927 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: elasticsearch-rest-5.0 [class io.opentelemetry.javaagent.instrumentation.elasticsearch.rest.v5_0.ElasticsearchRest5InstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@47a4eee2 - [otel.javaagent 2026-10-24 23:22:38:927 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$org$elasticsearch$client$RestClient$io$opentelemetry$javaagent$shaded$instrumentation$api$incubator$semconv$db$internal$DbServerTarget] - [otel.javaagent 2026-10-24 23:22:38:928 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$org$elasticsearch$client$RestClient$io$opentelemetry$javaagent$shaded$instrumentation$api$incubator$semconv$db$internal$DbServerTarget] - [otel.javaagent 2026-10-24 23:22:38:931 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$org$elasticsearch$client$RestClient$io$opentelemetry$javaagent$shaded$instrumentation$api$incubator$semconv$db$internal$DbServerTarget] - [otel.javaagent 2026-10-24 23:22:38:931 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$org$elasticsearch$client$RestClient$io$opentelemetry$javaagent$shaded$instrumentation$api$incubator$semconv$db$internal$DbServerTarget] - [otel.javaagent 2026-10-24 23:22:38:932 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$org$elasticsearch$client$RestClient$io$opentelemetry$javaagent$shaded$instrumentation$api$incubator$semconv$db$internal$DbServerTarget, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$org$elasticsearch$client$Request$io$opentelemetry$javaagent$instrumentation$elasticsearch$rest$common$v5_0$ElasticsearchEndpointDefinition] - [otel.javaagent 2026-10-24 23:22:38:932 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$org$elasticsearch$client$RestClient$io$opentelemetry$javaagent$shaded$instrumentation$api$incubator$semconv$db$internal$DbServerTarget, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$org$elasticsearch$client$Request$io$opentelemetry$javaagent$instrumentation$elasticsearch$rest$common$v5_0$ElasticsearchEndpointDefinition] - [otel.javaagent 2026-10-24 23:22:38:935 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.elasticsearch.client.RestClient -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:39:027 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:39:058 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.junit.platform.commons.util.ReflectionUtils$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:39:138 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed ch.qos.logback.core.hook.ShutdownHook -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:39:212 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.56 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_56.incubator.OpenTelemetryApiIncubatorInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@100d0218 - [otel.javaagent 2026-10-24 23:22:39:236 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.65 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_65.incubator.OpenTelemetryApiIncubatorInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@56e5c8fb - [otel.javaagent 2026-10-24 23:22:39:241 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.63 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_63.OpenTelemetryApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@41e8d917 - [otel.javaagent 2026-10-24 23:22:39:251 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.27 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_27.OpenTelemetryApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@51f01535 - [otel.javaagent 2026-10-24 23:22:39:259 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.38 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_38.incubator.OpenTelemetryApiIncubatorInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@7f8c48f3 - [otel.javaagent 2026-10-24 23:22:39:266 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.32 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_32.OpenTelemetryApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@58b97c15 - [otel.javaagent 2026-10-24 23:22:39:272 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.15 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_15.OpenTelemetryApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@4b691611 - [otel.javaagent 2026-10-24 23:22:39:278 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.10 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.OpenTelemetryApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@eded048 - [otel.javaagent 2026-10-24 23:22:39:282 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.4 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_4.OpenTelemetryApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@b5de9ac - [otel.javaagent 2026-10-24 23:22:39:283 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.59 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_59.OpenTelemetryApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@31940704 - [otel.javaagent 2026-10-24 23:22:39:288 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.0 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_0.OpenTelemetryApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@5a48d186 - [otel.javaagent 2026-10-24 23:22:39:289 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.57 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_57.OpenTelemetryApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@37ffe4f3 - [otel.javaagent 2026-10-24 23:22:39:300 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.api.GlobalOpenTelemetry -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - -ElasticsearchRest5Test STANDARD_ERROR - [otel.javaagent 2026-10-24 23:22:39:459 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for org.testcontainers.utility.LazyFuture - [otel.javaagent 2026-10-24 23:22:39:460 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for org.testcontainers.images.RemoteDockerImage - [otel.javaagent 2026-10-24 23:22:39:462 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.images.RemoteDockerImage -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:39:478 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture - [otel.javaagent 2026-10-24 23:22:39:481 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture -- null - [otel.javaagent 2026-10-24 23:22:39:483 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$Completion - [otel.javaagent 2026-10-24 23:22:39:487 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$Completion -- null - [otel.javaagent 2026-10-24 23:22:39:490 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$BiCompletion -- null - [otel.javaagent 2026-10-24 23:22:39:491 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniCompletion - [otel.javaagent 2026-10-24 23:22:39:493 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$CoCompletion - [otel.javaagent 2026-10-24 23:22:39:494 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniCompletion -- null - [otel.javaagent 2026-10-24 23:22:39:496 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$CoCompletion -- null - [otel.javaagent 2026-10-24 23:22:39:499 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$BiRelay -- null - [otel.javaagent 2026-10-24 23:22:39:500 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$Signaller - [otel.javaagent 2026-10-24 23:22:39:502 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$Signaller -- null - [otel.javaagent 2026-10-24 23:22:39:502 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniApply - [otel.javaagent 2026-10-24 23:22:39:504 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniApply -- null - [otel.javaagent 2026-10-24 23:22:39:504 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniAccept - [otel.javaagent 2026-10-24 23:22:39:506 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniAccept -- null - [otel.javaagent 2026-10-24 23:22:39:506 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniRun - [otel.javaagent 2026-10-24 23:22:39:508 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniRun -- null - [otel.javaagent 2026-10-24 23:22:39:510 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$BiApply -- null - [otel.javaagent 2026-10-24 23:22:39:510 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$BiAccept - [otel.javaagent 2026-10-24 23:22:39:512 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$BiAccept -- null - [otel.javaagent 2026-10-24 23:22:39:512 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$BiRun - [otel.javaagent 2026-10-24 23:22:39:515 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$BiRun -- null - [otel.javaagent 2026-10-24 23:22:39:515 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$OrApply - [otel.javaagent 2026-10-24 23:22:39:518 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$OrApply -- null - [otel.javaagent 2026-10-24 23:22:39:518 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$OrAccept - [otel.javaagent 2026-10-24 23:22:39:520 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$OrAccept -- null - [otel.javaagent 2026-10-24 23:22:39:520 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$OrRun - [otel.javaagent 2026-10-24 23:22:39:522 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$OrRun -- null - [otel.javaagent 2026-10-24 23:22:39:523 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniCompose - [otel.javaagent 2026-10-24 23:22:39:525 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniCompose -- null - [otel.javaagent 2026-10-24 23:22:39:525 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniRelay - [otel.javaagent 2026-10-24 23:22:39:527 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniRelay -- null - [otel.javaagent 2026-10-24 23:22:39:527 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniWhenComplete - [otel.javaagent 2026-10-24 23:22:39:529 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniWhenComplete -- null - [otel.javaagent 2026-10-24 23:22:39:529 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniHandle - [otel.javaagent 2026-10-24 23:22:39:531 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniHandle -- null - [otel.javaagent 2026-10-24 23:22:39:531 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniExceptionally - [otel.javaagent 2026-10-24 23:22:39:538 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniComposeExceptionally - [otel.javaagent 2026-10-24 23:22:39:538 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniExceptionally -- null - [otel.javaagent 2026-10-24 23:22:39:541 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniComposeExceptionally -- null - [otel.javaagent 2026-10-24 23:22:39:542 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$MinimalStage - [otel.javaagent 2026-10-24 23:22:39:543 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$MinimalStage -- null - [otel.javaagent 2026-10-24 23:22:39:544 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$AnyOf - [otel.javaagent 2026-10-24 23:22:39:547 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$AnyOf -- null - [otel.javaagent 2026-10-24 23:22:39:675 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.RecursiveTask - [otel.javaagent 2026-10-24 23:22:39:679 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.RecursiveTask -- null - [otel.javaagent 2026-10-24 23:22:39:696 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.shaded.com.fasterxml.jackson.databind.util.internal.PrivateMaxEntriesMap$AddTask -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:39:799 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.dockerclient.DockerClientProviderStrategy$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:39:831 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for java.util.concurrent.Executors$AutoShutdownDelegatedExecutorService - [otel.javaagent 2026-10-24 23:22:39:831 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for java.util.concurrent.Executors$AutoShutdownDelegatedExecutorService - [otel.javaagent 2026-10-24 23:22:39:846 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.Executors$DelegatedExecutorService -- null - [otel.javaagent 2026-10-24 23:22:39:848 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.Executors$AutoShutdownDelegatedExecutorService$$Lambda -- null - [otel.javaagent 2026-10-24 23:22:39:850 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.shaded.org.awaitility.core.ConditionAwaiter$ConditionPoller -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:40:065 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for com.github.dockerjava.zerodep.shaded.org.apache.hc.core5.concurrent.BasicFuture - [otel.javaagent 2026-10-24 23:22:40:066 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed com.github.dockerjava.zerodep.shaded.org.apache.hc.core5.concurrent.BasicFuture -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:40:066 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for com.github.dockerjava.zerodep.shaded.org.apache.hc.core5.pool.StrictConnPool$1 - [otel.javaagent 2026-10-24 23:22:40:066 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed com.github.dockerjava.zerodep.shaded.org.apache.hc.core5.pool.StrictConnPool$1 -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:40:272 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.containers.GenericContainer$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:40:498 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.containers.GenericContainer$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:40:502 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for org.testcontainers.shaded.org.awaitility.core.SameThreadExecutorService - [otel.javaagent 2026-10-24 23:22:40:502 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for org.testcontainers.shaded.org.awaitility.core.SameThreadExecutorService - [otel.javaagent 2026-10-24 23:22:40:609 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.shaded.com.github.dockerjava.core.DefaultInvocationBuilder$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:40:662 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.utility.RyukResourceReaper$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:40:665 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.utility.RyukResourceReaper$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:40:693 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.utility.MountableFile$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:40:699 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.containers.ContainerState$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:44:000 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: apache-httpasyncclient-4.1 [class io.opentelemetry.javaagent.instrumentation.apachehttpasyncclient.v4_1.ApacheHttpAsyncClientInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@f13e0a2 - [otel.javaagent 2026-10-24 23:22:44:004 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.nio.client.HttpAsyncClient -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:44:005 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.impl.nio.client.CloseableHttpAsyncClient -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:44:012 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.nio.client.HttpPipeliningClient -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:44:015 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.impl.nio.client.CloseableHttpPipeliningClient -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:44:018 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.impl.nio.client.CloseableHttpAsyncClientBase -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:44:027 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.impl.nio.client.InternalHttpAsyncClient -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:44:050 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:44:081 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.impl.nio.client.CloseableHttpAsyncClientBase$1 -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - -ElasticsearchRest5Test > recordsFailureResponseStatus() STANDARD_ERROR - [otel.javaagent 2026-10-24 23:22:44:177 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for org.apache.http.concurrent.BasicFuture - [otel.javaagent 2026-10-24 23:22:44:179 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.concurrent.BasicFuture -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:44:451 +0000] [I/O dispatcher 1] INFO io.opentelemetry.exporter.logging.LoggingSpanExporter - 'HEAD' : 8141d57f080bbe024eb6fe309a762e86 fdd2088bb1228d2d CLIENT [tracer: io.opentelemetry.apache-httpasyncclient-4.1:3.0.0-alpha-SNAPSHOT] AttributesMap{data={server.address=localhost, server.port=32868, error.type=404, http.request.method=HEAD, http.response.status_code=404, network.protocol.version=1.1, peer.service=test-peer-service, url.full=http://localhost:32868/missing-index}, capacity=128, totalAddedValues=8} - [otel.javaagent 2026-10-24 23:22:44:452 +0000] [I/O dispatcher 1] INFO io.opentelemetry.javaagent.testing.exporter.OtlpInMemorySpanExporter - Exporting span SpanData{spanContext=ImmutableSpanContext{traceId=8141d57f080bbe024eb6fe309a762e86, spanId=fdd2088bb1228d2d, traceFlags=03, traceState=ArrayBasedTraceState{entries=[]}, remote=false, valid=true}, parentSpanContext=ImmutableSpanContext{traceId=8141d57f080bbe024eb6fe309a762e86, spanId=ce084bdc3987cf80, traceFlags=03, traceState=ArrayBasedTraceState{entries=[]}, remote=false, valid=true}, resource=Resource{schemaUrl=https://opentelemetry.io/schemas/1.40.0, entities=[SdkEntity{type=service.instance, id={service.instance.id="00b80a84-5b9e-4151-8c50-90f075550852"}, description={}, schemaUrl=https://opentelemetry.io/schemas/1.40.0}], attributes={service.instance.id="00b80a84-5b9e-4151-8c50-90f075550852", service.name="unknown_service:java", telemetry.distro.name="opentelemetry-javaagent", telemetry.distro.version="3.0.0-SNAPSHOT", telemetry.sdk.language="java", telemetry.sdk.name="opentelemetry", telemetry.sdk.version="1.67.0"}}, instrumentationScopeInfo=InstrumentationScopeInfo{name=io.opentelemetry.apache-httpasyncclient-4.1, version=3.0.0-alpha-SNAPSHOT, schemaUrl=https://opentelemetry.io/schemas/1.41.0, attributes={}}, name=HEAD, kind=CLIENT, startEpochNanos=1792884164193040288, endEpochNanos=1792884164450766243, attributes=AttributesMap{data={server.address=localhost, server.port=32868, error.type=404, http.request.method=HEAD, http.response.status_code=404, network.protocol.version=1.1, peer.service=test-peer-service, url.full=http://localhost:32868/missing-index}, capacity=128, totalAddedValues=8}, totalAttributeCount=8, events=[], totalRecordedEvents=0, links=[], totalRecordedLinks=0, status=ImmutableStatusData{statusCode=ERROR, description=}, hasEnded=true} - [otel.javaagent 2026-10-24 23:22:44:469 +0000] [I/O dispatcher 1] INFO io.opentelemetry.exporter.logging.LoggingSpanExporter - 'localhost:32868' : 8141d57f080bbe024eb6fe309a762e86 ce084bdc3987cf80 CLIENT [tracer: io.opentelemetry.elasticsearch-rest-5.0:3.0.0-alpha-SNAPSHOT] AttributesMap{data={server.address=localhost, server.port=32868, error.type=404, http.request.method=HEAD, db.system.name=elasticsearch, db.response.status_code=404, url.full=http://localhost:32868/missing-index}, capacity=128, totalAddedValues=7} - [otel.javaagent 2026-10-24 23:22:44:469 +0000] [I/O dispatcher 1] INFO io.opentelemetry.javaagent.testing.exporter.OtlpInMemorySpanExporter - Exporting span SpanData{spanContext=ImmutableSpanContext{traceId=8141d57f080bbe024eb6fe309a762e86, spanId=ce084bdc3987cf80, traceFlags=03, traceState=ArrayBasedTraceState{entries=[]}, remote=false, valid=true}, parentSpanContext=ImmutableSpanContext{traceId=00000000000000000000000000000000, spanId=0000000000000000, traceFlags=00, traceState=ArrayBasedTraceState{entries=[]}, remote=false, valid=false}, resource=Resource{schemaUrl=https://opentelemetry.io/schemas/1.40.0, entities=[SdkEntity{type=service.instance, id={service.instance.id="00b80a84-5b9e-4151-8c50-90f075550852"}, description={}, schemaUrl=https://opentelemetry.io/schemas/1.40.0}], attributes={service.instance.id="00b80a84-5b9e-4151-8c50-90f075550852", service.name="unknown_service:java", telemetry.distro.name="opentelemetry-javaagent", telemetry.distro.version="3.0.0-SNAPSHOT", telemetry.sdk.language="java", telemetry.sdk.name="opentelemetry", telemetry.sdk.version="1.67.0"}}, instrumentationScopeInfo=InstrumentationScopeInfo{name=io.opentelemetry.elasticsearch-rest-5.0, version=3.0.0-alpha-SNAPSHOT, schemaUrl=https://opentelemetry.io/schemas/1.44.0, attributes={}}, name=localhost:32868, kind=CLIENT, startEpochNanos=1792884164169812858, endEpochNanos=1792884164469333898, attributes=AttributesMap{data={server.address=localhost, server.port=32868, error.type=404, http.request.method=HEAD, db.system.name=elasticsearch, db.response.status_code=404, url.full=http://localhost:32868/missing-index}, capacity=128, totalAddedValues=7}, totalAttributeCount=7, events=[], totalRecordedEvents=0, links=[], totalRecordedLinks=0, status=ImmutableStatusData{statusCode=UNSET, description=}, hasEnded=true} - [otel.javaagent 2026-10-24 23:22:44:507 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.instrumentation.testing.InstrumentationTestRunner$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:44:621 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.awaitility.core.ConditionAwaiter$ConditionPoller -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:54:593 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.context.internal.shaded.AbstractWeakConcurrentMap -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:54:594 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.context.internal.shaded.WeakConcurrentMap -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:54:601 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.context.StrictContextStorage$PendingScopes -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:54:607 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.context.ContextStorageWrappers -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:54:612 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.context.ArrayBasedContext -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:54:656 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-instrumentation-api-1.14 [class io.opentelemetry.javaagent.instrumentation.instrumentationapi.v1_14.InstrumentationApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@55a5eea3 - [otel.javaagent 2026-10-24 23:22:54:662 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.instrumentation.api.internal.HttpRouteState -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:54:679 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.instrumentation.api.internal.SpanKey -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:54:679 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.instrumentation.testing.util.ContextStorageCloser$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - -ElasticsearchRest5Test > recordsFailureResponseStatus() FAILED - org.opentest4j.AssertionFailedError: [Span 1] Expected span to have name but was - at app//io.opentelemetry.javaagent.instrumentation.elasticsearch.rest.v5_0.ElasticsearchRest5Test.lambda$recordsFailureResponseStatus$2(ElasticsearchRest5Test.java:117) - at app//io.opentelemetry.sdk.testing.assertj.TraceAssert.hasSpansSatisfyingExactly(TraceAssert.java:65) - at app//io.opentelemetry.sdk.testing.assertj.TraceAssert.hasSpansSatisfyingExactly(TraceAssert.java:49) - at app//io.opentelemetry.javaagent.instrumentation.elasticsearch.rest.v5_0.ElasticsearchRest5Test.lambda$recordsFailureResponseStatus$0(ElasticsearchRest5Test.java:103) - at app//io.opentelemetry.sdk.testing.assertj.TracesAssert.hasTracesSatisfyingExactly(TracesAssert.java:108) - at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.doAssertTraces(InstrumentationTestRunner.java:191) - at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.lambda$waitAndAssertTraces$0(InstrumentationTestRunner.java:177) - at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.awaitUntilAsserted(InstrumentationTestRunner.java:497) - at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.awaitUntilAsserted(InstrumentationTestRunner.java:480) - at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.waitAndAssertTraces(InstrumentationTestRunner.java:177) - at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.waitAndAssertTraces(InstrumentationTestRunner.java:167) - at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.waitAndAssertTraces(InstrumentationTestRunner.java:163) - at app//io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension.waitAndAssertTraces(InstrumentationExtension.java:167) - at app//io.opentelemetry.javaagent.instrumentation.elasticsearch.rest.v5_0.ElasticsearchRest5Test.recordsFailureResponseStatus(ElasticsearchRest5Test.java:101) - -> Task :instrumentation:opensearch:opensearch-rest-1.0:javaagent:test - [otel.javaagent 2026-10-24 23:22:34:694 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.context.internal.shaded.AbstractWeakConcurrentMap -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:34:697 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.context.internal.shaded.WeakConcurrentMap -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:34:697 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.context.StrictContextStorage$PendingScopes -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:34:700 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.context.ContextStorageWrappers -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:34:703 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.context.ArrayBasedContext -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:34:710 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-instrumentation-api-1.14 [class io.opentelemetry.javaagent.instrumentation.instrumentationapi.v1_14.InstrumentationApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@1ecd09d5 - [otel.javaagent 2026-10-24 23:22:34:712 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.instrumentation.api.internal.HttpRouteState -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:34:716 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.instrumentation.api.internal.SpanKey -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:34:719 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.instrumentation.testing.util.ContextStorageCloser$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - -OpenSearchRestTest > recordsFailureResponseStatus() FAILED - org.opentest4j.AssertionFailedError: [Span 1] Expected span to have name but was - at app//io.opentelemetry.javaagent.instrumentation.opensearch.rest.common.AbstractOpenSearchRestTest.lambda$recordsFailureResponseStatus$2(AbstractOpenSearchRestTest.java:107) - at app//io.opentelemetry.sdk.testing.assertj.TraceAssert.hasSpansSatisfyingExactly(TraceAssert.java:65) - at app//io.opentelemetry.sdk.testing.assertj.TraceAssert.hasSpansSatisfyingExactly(TraceAssert.java:49) - at app//io.opentelemetry.javaagent.instrumentation.opensearch.rest.common.AbstractOpenSearchRestTest.lambda$recordsFailureResponseStatus$0(AbstractOpenSearchRestTest.java:93) - at app//io.opentelemetry.sdk.testing.assertj.TracesAssert.hasTracesSatisfyingExactly(TracesAssert.java:108) - at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.doAssertTraces(InstrumentationTestRunner.java:191) - at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.lambda$waitAndAssertTraces$0(InstrumentationTestRunner.java:177) - at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.awaitUntilAsserted(InstrumentationTestRunner.java:497) - at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.awaitUntilAsserted(InstrumentationTestRunner.java:480) - at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.waitAndAssertTraces(InstrumentationTestRunner.java:177) - at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.waitAndAssertTraces(InstrumentationTestRunner.java:167) - at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.waitAndAssertTraces(InstrumentationTestRunner.java:163) - at app//io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension.waitAndAssertTraces(InstrumentationExtension.java:167) - at app//io.opentelemetry.javaagent.instrumentation.opensearch.rest.common.AbstractOpenSearchRestTest.recordsFailureResponseStatus(AbstractOpenSearchRestTest.java:91) - at java.base@25.0.4.1/java.lang.reflect.Method.invoke(Method.java:565) - at java.base@25.0.4.1/java.util.ArrayList.forEach(ArrayList.java:1604) - at java.base@25.0.4.1/java.util.ArrayList.forEach(ArrayList.java:1604) - -OpenSearchRestTest > shouldGetStatusWithTraces() STANDARD_ERROR - [otel.javaagent 2026-10-24 23:22:34:752 +0000] [I/O dispatcher 1] INFO io.opentelemetry.exporter.logging.LoggingSpanExporter - 'GET' : 61bf1322c71034621751c66f7c2d977f 221d48d947f2c13f CLIENT [tracer: io.opentelemetry.apache-httpasyncclient-4.1:3.0.0-alpha-SNAPSHOT] AttributesMap{data={url.full=https://localhost:32862/_cluster/health, server.address=localhost, http.response.status_code=200, http.request.method=GET, server.port=32862, network.protocol.version=1.1, peer.service=test-peer-service}, capacity=128, totalAddedValues=7} - [otel.javaagent 2026-10-24 23:22:34:752 +0000] [I/O dispatcher 1] INFO io.opentelemetry.javaagent.testing.exporter.OtlpInMemorySpanExporter - Exporting span SpanData{spanContext=ImmutableSpanContext{traceId=61bf1322c71034621751c66f7c2d977f, spanId=221d48d947f2c13f, traceFlags=03, traceState=ArrayBasedTraceState{entries=[]}, remote=false, valid=true}, parentSpanContext=ImmutableSpanContext{traceId=61bf1322c71034621751c66f7c2d977f, spanId=29c663537051bf8d, traceFlags=03, traceState=ArrayBasedTraceState{entries=[]}, remote=false, valid=true}, resource=Resource{schemaUrl=https://opentelemetry.io/schemas/1.40.0, entities=[SdkEntity{type=service.instance, id={service.instance.id="28f21fc4-7a94-411f-b38e-1d5c5dfafb9a"}, description={}, schemaUrl=https://opentelemetry.io/schemas/1.40.0}], attributes={service.instance.id="28f21fc4-7a94-411f-b38e-1d5c5dfafb9a", service.name="unknown_service:java", telemetry.distro.name="opentelemetry-javaagent", telemetry.distro.version="3.0.0-SNAPSHOT", telemetry.sdk.language="java", telemetry.sdk.name="opentelemetry", telemetry.sdk.version="1.67.0"}}, instrumentationScopeInfo=InstrumentationScopeInfo{name=io.opentelemetry.apache-httpasyncclient-4.1, version=3.0.0-alpha-SNAPSHOT, schemaUrl=https://opentelemetry.io/schemas/1.41.0, attributes={}}, name=GET, kind=CLIENT, startEpochNanos=1792884154738154201, endEpochNanos=1792884154751947154, attributes=AttributesMap{data={url.full=https://localhost:32862/_cluster/health, server.address=localhost, http.response.status_code=200, http.request.method=GET, server.port=32862, network.protocol.version=1.1, peer.service=test-peer-service}, capacity=128, totalAddedValues=7}, totalAttributeCount=7, events=[], totalRecordedEvents=0, links=[], totalRecordedLinks=0, status=ImmutableStatusData{statusCode=UNSET, description=}, hasEnded=true} - [otel.javaagent 2026-10-24 23:22:34:752 +0000] [Test worker] INFO io.opentelemetry.exporter.logging.LoggingSpanExporter - 'GET localhost:32862' : 61bf1322c71034621751c66f7c2d977f 29c663537051bf8d CLIENT [tracer: io.opentelemetry.opensearch-rest-1.0:3.0.0-alpha-SNAPSHOT] AttributesMap{data={server.address=localhost, db.system.name=opensearch, db.operation.name=GET, server.port=32862}, capacity=128, totalAddedValues=4} - [otel.javaagent 2026-10-24 23:22:34:752 +0000] [Test worker] INFO io.opentelemetry.javaagent.testing.exporter.OtlpInMemorySpanExporter - Exporting span SpanData{spanContext=ImmutableSpanContext{traceId=61bf1322c71034621751c66f7c2d977f, spanId=29c663537051bf8d, traceFlags=03, traceState=ArrayBasedTraceState{entries=[]}, remote=false, valid=true}, parentSpanContext=ImmutableSpanContext{traceId=00000000000000000000000000000000, spanId=0000000000000000, traceFlags=00, traceState=ArrayBasedTraceState{entries=[]}, remote=false, valid=false}, resource=Resource{schemaUrl=https://opentelemetry.io/schemas/1.40.0, entities=[SdkEntity{type=service.instance, id={service.instance.id="28f21fc4-7a94-411f-b38e-1d5c5dfafb9a"}, description={}, schemaUrl=https://opentelemetry.io/schemas/1.40.0}], attributes={service.instance.id="28f21fc4-7a94-411f-b38e-1d5c5dfafb9a", service.name="unknown_service:java", telemetry.distro.name="opentelemetry-javaagent", telemetry.distro.version="3.0.0-SNAPSHOT", telemetry.sdk.language="java", telemetry.sdk.name="opentelemetry", telemetry.sdk.version="1.67.0"}}, instrumentationScopeInfo=InstrumentationScopeInfo{name=io.opentelemetry.opensearch-rest-1.0, version=3.0.0-alpha-SNAPSHOT, schemaUrl=https://opentelemetry.io/schemas/1.44.0, attributes={}}, name=GET localhost:32862, kind=CLIENT, startEpochNanos=1792884154737437582, endEpochNanos=1792884154752003704, attributes=AttributesMap{data={server.address=localhost, db.system.name=opensearch, db.operation.name=GET, server.port=32862}, capacity=128, totalAddedValues=4}, totalAttributeCount=4, events=[], totalRecordedEvents=0, links=[], totalRecordedLinks=0, status=ImmutableStatusData{statusCode=UNSET, description=}, hasEnded=true} - -OpenSearchRestTest > shouldGetStatusWithTraces() FAILED - org.opentest4j.AssertionFailedError: [Span 1] Expected span to have name but was - at app//io.opentelemetry.javaagent.instrumentation.opensearch.rest.common.AbstractOpenSearchRestTest.lambda$shouldGetStatusWithTraces$2(AbstractOpenSearchRestTest.java:128) - at app//io.opentelemetry.sdk.testing.assertj.TraceAssert.hasSpansSatisfyingExactly(TraceAssert.java:65) - at app//io.opentelemetry.sdk.testing.assertj.TraceAssert.hasSpansSatisfyingExactly(TraceAssert.java:49) - at app//io.opentelemetry.javaagent.instrumentation.opensearch.rest.common.AbstractOpenSearchRestTest.lambda$shouldGetStatusWithTraces$0(AbstractOpenSearchRestTest.java:118) - at app//io.opentelemetry.sdk.testing.assertj.TracesAssert.hasTracesSatisfyingExactly(TracesAssert.java:108) - at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.doAssertTraces(InstrumentationTestRunner.java:191) - at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.lambda$waitAndAssertTraces$0(InstrumentationTestRunner.java:177) - at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.awaitUntilAsserted(InstrumentationTestRunner.java:497) - at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.awaitUntilAsserted(InstrumentationTestRunner.java:480) - at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.waitAndAssertTraces(InstrumentationTestRunner.java:177) - at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.waitAndAssertTraces(InstrumentationTestRunner.java:167) - at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.waitAndAssertTraces(InstrumentationTestRunner.java:163) - at app//io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension.waitAndAssertTraces(InstrumentationExtension.java:167) - at app//io.opentelemetry.javaagent.instrumentation.opensearch.rest.common.AbstractOpenSearchRestTest.shouldGetStatusWithTraces(AbstractOpenSearchRestTest.java:116) - at java.base@25.0.4.1/java.lang.reflect.Method.invoke(Method.java:565) - at java.base@25.0.4.1/java.util.ArrayList.forEach(ArrayList.java:1604) - at java.base@25.0.4.1/java.util.ArrayList.forEach(ArrayList.java:1604) -OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended -[otel.javaagent 2026-10-24 23:22:45:305 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.ExtensionClassLoader - Loaded extension jar file "/tmp/otel-extensions16140003030239743488/opentelemetry-agent-exporter-3.0.0-alpha-SNAPSHOT-all.jar" -[otel.javaagent 2026-10-24 23:22:45:319 +0000] [main] INFO io.opentelemetry.javaagent.tooling.VersionLogger - opentelemetry-javaagent - version: 3.0.0-SNAPSHOT -[otel.javaagent 2026-10-24 23:22:45:319 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.VersionLogger - Running on Java 25.0.4.1. JVM OpenJDK 64-Bit Server VM - Eclipse Adoptium - 25.0.4.1+1-LTS -[otel.javaagent 2026-10-24 23:22:45:319 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller - io.opentelemetry.javaagent.tooling.AgentInstaller loaded on io.opentelemetry.javaagent.bootstrap.AgentClassLoader@5010be6 -[otel.javaagent 2026-10-24 23:22:45:621 +0000] [main] DEBUG io.opentelemetry.javaagent.testing.exporter.OtlpInMemoryMetricExporter - Setting aggregation temporality to DELTA -[otel.javaagent 2026-10-24 23:22:45:729 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$java$util$concurrent$Callable$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$java$lang$Runnable$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$java$util$concurrent$Future$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$java$util$concurrent$ForkJoinTask$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext] -[otel.javaagent 2026-10-24 23:22:45:735 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$java$util$concurrent$ForkJoinTask$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$java$util$concurrent$Future$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$java$util$concurrent$Callable$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$java$lang$Runnable$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext] -[otel.javaagent 2026-10-24 23:22:45:741 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.ExposeAgentBootstrapListener - Adding module read from module java.base to unnamed module @1253e7cb -[otel.javaagent 2026-10-24 23:22:45:741 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask -- null -[otel.javaagent 2026-10-24 23:22:45:744 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.FutureTask -- null -[otel.javaagent 2026-10-24 23:22:45:745 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.Executors$RunnableAdapter -- null -[otel.javaagent 2026-10-24 23:22:45:747 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ThreadPoolExecutor$Worker -- null -[otel.javaagent 2026-10-24 23:22:45:793 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.lang.ApplicationShutdownHooks$1 -- null -[otel.javaagent 2026-10-24 23:22:45:822 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller - Loading extension instrumentation-loader [class io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader] -[otel.javaagent 2026-10-24 23:22:45:855 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.56 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_56.incubator.OpenTelemetryApiIncubatorInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:45:855 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.56 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_56.incubator.OpenTelemetryApiIncubatorInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:45:873 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.65 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_65.incubator.OpenTelemetryApiIncubatorInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:45:873 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.65 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_65.incubator.OpenTelemetryApiIncubatorInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:45:874 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.63 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_63.OpenTelemetryApiInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:45:874 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.63 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_63.OpenTelemetryApiInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:45:874 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.63 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_63.incubator.OpenTelemetryApiIncubatorInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:45:874 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.63 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_63.incubator.OpenTelemetryApiIncubatorInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:45:875 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.50 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_50.OpenTelemetryApiInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:45:875 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.50 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_50.OpenTelemetryApiInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:45:875 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.50 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_50.incubator.OpenTelemetryApiIncubatorInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:45:875 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.50 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_50.incubator.OpenTelemetryApiIncubatorInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:45:876 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.47 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_47.incubator.OpenTelemetryApiIncubatorInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:45:876 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.47 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_47.incubator.OpenTelemetryApiIncubatorInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:45:876 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.42 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_42.OpenTelemetryApiInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:45:877 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.42 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_42.OpenTelemetryApiInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:45:877 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.42 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_42.incubator.OpenTelemetryApiIncubatorInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:45:877 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.42 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_42.incubator.OpenTelemetryApiIncubatorInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:45:877 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.40 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.OpenTelemetryApiIncubatorInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:45:878 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.27 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_27.OpenTelemetryApiInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:45:878 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.40 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_40.incubator.OpenTelemetryApiIncubatorInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:45:878 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.27 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_27.OpenTelemetryApiInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:45:878 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.38 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_38.OpenTelemetryApiInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:45:878 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.38 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_38.OpenTelemetryApiInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:45:879 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.38 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_38.incubator.OpenTelemetryApiIncubatorInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:45:879 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.38 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_38.incubator.OpenTelemetryApiIncubatorInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:45:879 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.32 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_32.OpenTelemetryApiInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:45:880 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.32 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_32.incubator.OpenTelemetryApiIncubatorInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:45:880 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.32 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_32.OpenTelemetryApiInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:45:880 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.32 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_32.incubator.OpenTelemetryApiIncubatorInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:45:880 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.31 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_31.incubator.OpenTelemetryApiInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:45:880 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.31 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_31.incubator.OpenTelemetryApiInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:45:881 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.37 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_37.incubator.OpenTelemetryApiInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:45:881 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.37 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_37.incubator.OpenTelemetryApiInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:45:881 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.15 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_15.OpenTelemetryApiInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:45:881 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.15 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_15.OpenTelemetryApiInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:45:882 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.10 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.OpenTelemetryApiInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:45:882 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.10 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.OpenTelemetryApiInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:45:882 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.4 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_4.OpenTelemetryApiInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:45:882 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.4 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_4.OpenTelemetryApiInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:45:883 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.59 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_59.OpenTelemetryApiInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:45:883 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.59 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_59.OpenTelemetryApiInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:45:883 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-instrumentation-api-1.14 [class io.opentelemetry.javaagent.instrumentation.instrumentationapi.v1_14.InstrumentationApiInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:45:883 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-instrumentation-api-1.14 [class io.opentelemetry.javaagent.instrumentation.instrumentationapi.v1_14.InstrumentationApiInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:45:884 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.0 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_0.OpenTelemetryApiInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:45:884 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.0 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_0.OpenTelemetryApiInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:45:886 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-api-1.57 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_57.OpenTelemetryApiInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:45:886 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-api-1.57 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_57.OpenTelemetryApiInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:45:886 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation executors [class io.opentelemetry.javaagent.instrumentation.executors.ExecutorsInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:45:887 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation executors [class io.opentelemetry.javaagent.instrumentation.executors.ExecutorsInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:45:907 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation internal-application-logger [class io.opentelemetry.javaagent.instrumentation.internal.application.logger.ApplicationLoggingInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:45:908 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation internal-class-loader [class io.opentelemetry.javaagent.instrumentation.internal.classloader.ClassLoaderInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:45:908 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation internal-application-logger is disabled -[otel.javaagent 2026-10-24 23:22:45:908 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation internal-class-loader [class io.opentelemetry.javaagent.instrumentation.internal.classloader.ClassLoaderInstrumentationModule] injects helper classes -[otel.javaagent 2026-10-24 23:22:45:910 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation internal-eclipse-osgi-3.6 [class io.opentelemetry.javaagent.instrumentation.internal.eclipse.osgi.v3_6.EclipseOsgiInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:45:910 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation internal-eclipse-osgi-3.6 [class io.opentelemetry.javaagent.instrumentation.internal.eclipse.osgi.v3_6.EclipseOsgiInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:45:910 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation internal-lambda [class io.opentelemetry.javaagent.instrumentation.internal.lambda.LambdaInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:45:910 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation internal-lambda [class io.opentelemetry.javaagent.instrumentation.internal.lambda.LambdaInstrumentationModule] injects helper classes -[otel.javaagent 2026-10-24 23:22:45:911 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation internal-reflection [class io.opentelemetry.javaagent.instrumentation.internal.reflection.ReflectionInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:45:912 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation internal-reflection [class io.opentelemetry.javaagent.instrumentation.internal.reflection.ReflectionInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:45:912 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation internal-url-class-loader [class io.opentelemetry.javaagent.instrumentation.internal.urlclassloader.UrlClassLoaderInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:45:913 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation internal-url-class-loader [class io.opentelemetry.javaagent.instrumentation.internal.urlclassloader.UrlClassLoaderInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:45:913 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opensearch-rest-1.0 [class io.opentelemetry.javaagent.instrumentation.opensearch.rest.v1_0.OpenSearchRestInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:45:913 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opensearch-rest-1.0 [class io.opentelemetry.javaagent.instrumentation.opensearch.rest.v1_0.OpenSearchRestInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:45:918 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opensearch-rest-3.0 [class io.opentelemetry.javaagent.instrumentation.opensearch.rest.v3_0.OpenSearchRestInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:45:918 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opensearch-rest-3.0 [class io.opentelemetry.javaagent.instrumentation.opensearch.rest.v3_0.OpenSearchRestInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:45:922 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation apache-httpclient-4.0 [class io.opentelemetry.javaagent.instrumentation.apachehttpclient.v4_0.ApacheHttpClientInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:45:922 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation apache-httpclient-4.0 [class io.opentelemetry.javaagent.instrumentation.apachehttpclient.v4_0.ApacheHttpClientInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:45:923 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation apache-httpasyncclient-4.1 [class io.opentelemetry.javaagent.instrumentation.apachehttpasyncclient.v4_1.ApacheHttpAsyncClientInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:45:923 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation apache-httpasyncclient-4.1 [class io.opentelemetry.javaagent.instrumentation.apachehttpasyncclient.v4_1.ApacheHttpAsyncClientInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:45:924 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation deny-unsafe [class io.opentelemetry.javaagent.testing.instrumentation.DenyUnsafeInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:45:924 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation deny-unsafe is disabled -[otel.javaagent 2026-10-24 23:22:45:924 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation opentelemetry-instrumentation-annotations-1.16 [class io.opentelemetry.javaagent.instrumentation.instrumentationannotations.v1_16.AnnotationInstrumentationModule] -[otel.javaagent 2026-10-24 23:22:45:924 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation opentelemetry-instrumentation-annotations-1.16 [class io.opentelemetry.javaagent.instrumentation.instrumentationannotations.v1_16.AnnotationInstrumentationModule] isolates helper classes -[otel.javaagent 2026-10-24 23:22:45:930 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Installed 37 instrumentation(s) -[otel.javaagent 2026-10-24 23:22:45:930 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller - Loading extension test [class io.opentelemetry.javaagent.testing.bytebuddy.TestAgentExtension] -[otel.javaagent 2026-10-24 23:22:45:943 +0000] [main] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller - Installed 2 extension(s) -[otel.javaagent 2026-10-24 23:22:45:946 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.javaagent.shaded.io.opentelemetry.context.StrictContextStorage$PendingScopes -- null -[otel.javaagent 2026-10-24 23:22:45:948 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.javaagent.shaded.io.opentelemetry.context.internal.shaded.WeakConcurrentMap -- null -[otel.javaagent 2026-10-24 23:22:45:949 +0000] [main] DEBUG net.bytebuddy.agent.builder.AgentBuilderUtil - Could not decompose matcher failSafe(try(AnnotationInstrumentationModule#WithSpanInstrumentation(declaresMethods(whereOne((isMethod() and declaresAnnotations(whereOne(ofAnnotationType(name(equals(io.opentelemetry.instrumentation.annotations.WithSpan)))))))))) or false) -[otel.javaagent 2026-10-24 23:22:45:950 +0000] [main] DEBUG net.bytebuddy.agent.builder.AgentBuilderUtil - Could not decompose matcher failSafe(try(AnnotationInstrumentationModule#AddingSpanAttributesInstrumentation(declaresMethods(whereOne((isMethod() and declaresAnnotations(whereOne(ofAnnotationType(name(equals(io.opentelemetry.instrumentation.annotations.AddingSpanAttributes))))) and not(declaresAnnotations(whereOne(ofAnnotationType(name(equals(io.opentelemetry.instrumentation.annotations.WithSpan))))))))))) or false) -[otel.javaagent 2026-10-24 23:22:45:962 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: internal-class-loader [class io.opentelemetry.javaagent.instrumentation.internal.classloader.ClassLoaderInstrumentationModule] on io.opentelemetry.javaagent.bootstrap.AgentClassLoader$BootstrapClassLoaderProxy@377dca04 -[otel.javaagent 2026-10-24 23:22:45:969 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: internal-url-class-loader [class io.opentelemetry.javaagent.instrumentation.internal.urlclassloader.UrlClassLoaderInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@7d2a6eac -[otel.javaagent 2026-10-24 23:22:46:031 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.net.URLClassLoader -- null -[otel.javaagent 2026-10-24 23:22:46:047 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed jdk.internal.loader.BuiltinClassLoader -- null -[otel.javaagent 2026-10-24 23:22:46:070 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.lang.ClassLoader -- null -[otel.javaagent 2026-10-24 23:22:46:097 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: executors [class io.opentelemetry.javaagent.instrumentation.executors.ExecutorsInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@34dc85a -[otel.javaagent 2026-10-24 23:22:46:102 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.RunnableScheduledFuture -[otel.javaagent 2026-10-24 23:22:46:103 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ScheduledFuture -[otel.javaagent 2026-10-24 23:22:46:103 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.RunnableFuture -[otel.javaagent 2026-10-24 23:22:46:111 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.Future -[otel.javaagent 2026-10-24 23:22:46:112 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for java.util.concurrent.ScheduledExecutorService -[otel.javaagent 2026-10-24 23:22:46:112 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for java.util.concurrent.ScheduledExecutorService -[otel.javaagent 2026-10-24 23:22:46:113 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for java.util.concurrent.ExecutorService -[otel.javaagent 2026-10-24 23:22:46:113 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for java.util.concurrent.ExecutorService -[otel.javaagent 2026-10-24 23:22:46:113 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for java.util.concurrent.Executor -[otel.javaagent 2026-10-24 23:22:46:113 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for java.util.concurrent.Executor -[otel.javaagent 2026-10-24 23:22:46:133 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: internal-lambda [class io.opentelemetry.javaagent.instrumentation.internal.lambda.LambdaInstrumentationModule] on io.opentelemetry.javaagent.bootstrap.AgentClassLoader$BootstrapClassLoaderProxy@377dca04 -[otel.javaagent 2026-10-24 23:22:46:136 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: internal-reflection [class io.opentelemetry.javaagent.instrumentation.internal.reflection.ReflectionInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@773e2eb5 -[otel.javaagent 2026-10-24 23:22:46:145 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$java$util$concurrent$Callable$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$java$lang$Runnable$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$java$util$concurrent$Future$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$java$util$concurrent$ForkJoinTask$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext] -[otel.javaagent 2026-10-24 23:22:46:146 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$java$util$concurrent$ForkJoinTask$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$java$util$concurrent$Future$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$java$util$concurrent$Callable$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext, io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$java$lang$Runnable$io$opentelemetry$javaagent$bootstrap$executors$PropagatedContext] -[otel.javaagent 2026-10-24 23:22:46:155 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ThreadPoolExecutor$Worker -- null -[otel.javaagent 2026-10-24 23:22:46:157 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.Executors$RunnableAdapter -- null -[otel.javaagent 2026-10-24 23:22:46:160 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.Callable -- null -[otel.javaagent 2026-10-24 23:22:46:167 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask -- null -[otel.javaagent 2026-10-24 23:22:46:173 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.FutureTask -- null -[otel.javaagent 2026-10-24 23:22:46:174 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.RunnableScheduledFuture -[otel.javaagent 2026-10-24 23:22:46:176 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.RunnableScheduledFuture -- null -[otel.javaagent 2026-10-24 23:22:46:176 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.RunnableFuture -[otel.javaagent 2026-10-24 23:22:46:178 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.RunnableFuture -- null -[otel.javaagent 2026-10-24 23:22:46:212 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ScheduledThreadPoolExecutor -- null -[otel.javaagent 2026-10-24 23:22:46:248 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ThreadPoolExecutor -- null -[otel.javaagent 2026-10-24 23:22:46:253 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinWorkerThread -- null -[otel.javaagent 2026-10-24 23:22:46:260 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask -- null -[otel.javaagent 2026-10-24 23:22:46:262 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$AdaptedRunnable -[otel.javaagent 2026-10-24 23:22:46:263 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedRunnable -- null -[otel.javaagent 2026-10-24 23:22:46:268 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedRunnable -- null -[otel.javaagent 2026-10-24 23:22:46:269 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedCallable -- null -[otel.javaagent 2026-10-24 23:22:46:274 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedCallable -- null -[otel.javaagent 2026-10-24 23:22:46:275 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedRunnableAction -- null -[otel.javaagent 2026-10-24 23:22:46:275 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$AdaptedRunnableAction -[otel.javaagent 2026-10-24 23:22:46:280 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedRunnableAction -- null -[otel.javaagent 2026-10-24 23:22:46:280 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedInterruptibleRunnable -- null -[otel.javaagent 2026-10-24 23:22:46:281 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$AdaptedInterruptibleRunnable -[otel.javaagent 2026-10-24 23:22:46:284 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedInterruptibleRunnable -- null -[otel.javaagent 2026-10-24 23:22:46:284 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$InterruptibleTask -[otel.javaagent 2026-10-24 23:22:46:289 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$InterruptibleTask -- null -[otel.javaagent 2026-10-24 23:22:46:290 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedInterruptibleCallable -- null -[otel.javaagent 2026-10-24 23:22:46:290 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$AdaptedInterruptibleCallable -[otel.javaagent 2026-10-24 23:22:46:295 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedInterruptibleCallable -- null -[otel.javaagent 2026-10-24 23:22:46:297 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.DelayScheduler -- null -[otel.javaagent 2026-10-24 23:22:46:332 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinPool -- null -[otel.javaagent 2026-10-24 23:22:46:335 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$RunnableExecuteAction -- null -[otel.javaagent 2026-10-24 23:22:46:340 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$RunnableExecuteAction -- null -[otel.javaagent 2026-10-24 23:22:46:341 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.DelayScheduler$ScheduledForkJoinTask -- null -[otel.javaagent 2026-10-24 23:22:46:341 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.DelayScheduler$ScheduledForkJoinTask -[otel.javaagent 2026-10-24 23:22:46:345 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.DelayScheduler$ScheduledForkJoinTask -- null -[otel.javaagent 2026-10-24 23:22:46:346 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$CallableWithTimeout -- null -[otel.javaagent 2026-10-24 23:22:46:346 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$CallableWithTimeout -[otel.javaagent 2026-10-24 23:22:46:349 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$CallableWithTimeout -- null -[otel.javaagent 2026-10-24 23:22:46:366 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.AbstractExecutorService -- null -[otel.javaagent 2026-10-24 23:22:46:367 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.instrumentation.internal.lambda.LambdaTransformerHelper] -[otel.javaagent 2026-10-24 23:22:46:372 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.lang.invoke.InnerClassLambdaMetafactory -- null -[otel.javaagent 2026-10-24 23:22:46:377 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed jdk.internal.reflect.Reflection -- null -[otel.javaagent 2026-10-24 23:22:46:381 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.lang.VirtualThread -- null -[otel.javaagent 2026-10-24 23:22:46:383 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed jdk.internal.misc.CarrierThread -- null -[otel.javaagent 2026-10-24 23:22:46:386 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.lang.Class -- null -[otel.javaagent 2026-10-24 23:22:46:406 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$InterruptibleTask -[otel.javaagent 2026-10-24 23:22:46:410 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$CallableWithTimeout -[otel.javaagent 2026-10-24 23:22:46:415 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$CallableWithTimeout -- null -[otel.javaagent 2026-10-24 23:22:46:415 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.DelayScheduler$ScheduledForkJoinTask -[otel.javaagent 2026-10-24 23:22:46:420 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.DelayScheduler$ScheduledForkJoinTask -- null -[otel.javaagent 2026-10-24 23:22:46:425 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$AdaptedInterruptibleCallable -[otel.javaagent 2026-10-24 23:22:46:426 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$RunnableExecuteAction -- null -[otel.javaagent 2026-10-24 23:22:46:429 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedInterruptibleCallable -- null -[otel.javaagent 2026-10-24 23:22:46:429 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$AdaptedInterruptibleRunnable -[otel.javaagent 2026-10-24 23:22:46:434 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedInterruptibleRunnable -- null -[otel.javaagent 2026-10-24 23:22:46:434 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$InterruptibleTask -[otel.javaagent 2026-10-24 23:22:46:438 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$InterruptibleTask -- null -[otel.javaagent 2026-10-24 23:22:46:438 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$AdaptedRunnableAction -[otel.javaagent 2026-10-24 23:22:46:443 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedRunnableAction -- null -[otel.javaagent 2026-10-24 23:22:46:446 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedCallable -- null -[otel.javaagent 2026-10-24 23:22:46:447 +0000] [main] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.ForkJoinTask$AdaptedRunnable -[otel.javaagent 2026-10-24 23:22:46:451 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.ForkJoinTask$AdaptedRunnable -- null -[otel.javaagent 2026-10-24 23:22:46:470 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: internal-class-loader [class io.opentelemetry.javaagent.instrumentation.internal.classloader.ClassLoaderInstrumentationModule] on jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc -[otel.javaagent 2026-10-24 23:22:46:479 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed worker.org.gradle.internal.classloader.FilteringClassLoader -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc -[otel.javaagent 2026-10-24 23:22:46:487 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed worker.org.gradle.internal.classloader.FilteringClassLoader$RetrieveSystemPackagesClassLoader -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - -Gradle Test Executor 29 STANDARD_ERROR - [otel.javaagent 2026-10-24 23:22:46:795 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: executors [class io.opentelemetry.javaagent.instrumentation.executors.ExecutorsInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@59018eed - [otel.javaagent 2026-10-24 23:22:46:808 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.junit.platform.commons.util.ReflectionUtils$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:46:810 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.junit.platform.commons.function.Try$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:46:824 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opensearch-rest-1.0 [class io.opentelemetry.javaagent.instrumentation.opensearch.rest.v1_0.OpenSearchRestInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@7c1503a3 - [otel.javaagent 2026-10-24 23:22:46:825 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$org$opensearch$client$RestClient$io$opentelemetry$javaagent$shaded$instrumentation$api$incubator$semconv$db$internal$DbServerTarget] - [otel.javaagent 2026-10-24 23:22:46:825 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$org$opensearch$client$RestClient$io$opentelemetry$javaagent$shaded$instrumentation$api$incubator$semconv$db$internal$DbServerTarget] - [otel.javaagent 2026-10-24 23:22:46:829 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.bootstrap.field.VirtualFieldAccessor$org$opensearch$client$RestClient$io$opentelemetry$javaagent$shaded$instrumentation$api$incubator$semconv$db$internal$DbServerTarget] - [otel.javaagent 2026-10-24 23:22:46:830 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.HelperInjector - Injecting classes onto class loader -> [io.opentelemetry.javaagent.bootstrap.field.VirtualFieldImpl$org$opensearch$client$RestClient$io$opentelemetry$javaagent$shaded$instrumentation$api$incubator$semconv$db$internal$DbServerTarget] - [otel.javaagent 2026-10-24 23:22:46:833 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.opensearch.client.RestClient -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:46:917 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:46:943 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.junit.platform.commons.util.ReflectionUtils$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:47:008 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed ch.qos.logback.core.hook.ShutdownHook -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:47:076 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.56 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_56.incubator.OpenTelemetryApiIncubatorInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@328e4ec2 - [otel.javaagent 2026-10-24 23:22:47:098 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.65 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_65.incubator.OpenTelemetryApiIncubatorInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@18d30e7 - [otel.javaagent 2026-10-24 23:22:47:103 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.63 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_63.OpenTelemetryApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@3b57f915 - [otel.javaagent 2026-10-24 23:22:47:114 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.27 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_27.OpenTelemetryApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@5d717f19 - [otel.javaagent 2026-10-24 23:22:47:122 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.38 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_38.incubator.OpenTelemetryApiIncubatorInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@7c3c453b - [otel.javaagent 2026-10-24 23:22:47:131 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.32 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_32.OpenTelemetryApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@77cddc0c - [otel.javaagent 2026-10-24 23:22:47:138 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.15 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_15.OpenTelemetryApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@7dd45c93 - [otel.javaagent 2026-10-24 23:22:47:146 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.10 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.OpenTelemetryApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@62108cd3 - [otel.javaagent 2026-10-24 23:22:47:149 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.4 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_4.OpenTelemetryApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@d120d7c - [otel.javaagent 2026-10-24 23:22:47:150 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.59 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_59.OpenTelemetryApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@521ba38f - [otel.javaagent 2026-10-24 23:22:47:157 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.0 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_0.OpenTelemetryApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@247bbfba - [otel.javaagent 2026-10-24 23:22:47:158 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-api-1.57 [class io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_57.OpenTelemetryApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@13908f9c - [otel.javaagent 2026-10-24 23:22:47:168 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.api.GlobalOpenTelemetry -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - -OpenSearchRestTest STANDARD_ERROR - [otel.javaagent 2026-10-24 23:22:47:234 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for org.testcontainers.utility.LazyFuture - [otel.javaagent 2026-10-24 23:22:47:247 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for org.testcontainers.images.RemoteDockerImage - [otel.javaagent 2026-10-24 23:22:47:250 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.images.RemoteDockerImage -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:47:282 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture - [otel.javaagent 2026-10-24 23:22:47:293 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture -- null - [otel.javaagent 2026-10-24 23:22:47:296 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$Completion - [otel.javaagent 2026-10-24 23:22:47:302 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$Completion -- null - [otel.javaagent 2026-10-24 23:22:47:318 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$BiCompletion -- null - [otel.javaagent 2026-10-24 23:22:47:318 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniCompletion - [otel.javaagent 2026-10-24 23:22:47:327 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniCompletion -- null - [otel.javaagent 2026-10-24 23:22:47:328 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$CoCompletion - [otel.javaagent 2026-10-24 23:22:47:336 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$CoCompletion -- null - [otel.javaagent 2026-10-24 23:22:47:337 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$Signaller - [otel.javaagent 2026-10-24 23:22:47:342 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$Signaller -- null - [otel.javaagent 2026-10-24 23:22:47:343 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniApply - [otel.javaagent 2026-10-24 23:22:47:347 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniApply -- null - [otel.javaagent 2026-10-24 23:22:47:348 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniAccept - [otel.javaagent 2026-10-24 23:22:47:354 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniRun - [otel.javaagent 2026-10-24 23:22:47:355 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniAccept -- null - [otel.javaagent 2026-10-24 23:22:47:358 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniRun -- null - [otel.javaagent 2026-10-24 23:22:47:363 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$BiAccept - [otel.javaagent 2026-10-24 23:22:47:363 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$BiApply -- null - [otel.javaagent 2026-10-24 23:22:47:368 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$BiAccept -- null - [otel.javaagent 2026-10-24 23:22:47:368 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$BiRun - [otel.javaagent 2026-10-24 23:22:47:372 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$BiRun -- null - [otel.javaagent 2026-10-24 23:22:47:373 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$OrApply - [otel.javaagent 2026-10-24 23:22:47:376 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$OrApply -- null - [otel.javaagent 2026-10-24 23:22:47:376 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$OrAccept - [otel.javaagent 2026-10-24 23:22:47:379 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$OrAccept -- null - [otel.javaagent 2026-10-24 23:22:47:379 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$OrRun - [otel.javaagent 2026-10-24 23:22:47:382 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$OrRun -- null - [otel.javaagent 2026-10-24 23:22:47:383 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniCompose - [otel.javaagent 2026-10-24 23:22:47:386 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniCompose -- null - [otel.javaagent 2026-10-24 23:22:47:386 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniRelay - [otel.javaagent 2026-10-24 23:22:47:389 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniRelay -- null - [otel.javaagent 2026-10-24 23:22:47:389 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniWhenComplete - [otel.javaagent 2026-10-24 23:22:47:392 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniWhenComplete -- null - [otel.javaagent 2026-10-24 23:22:47:392 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniHandle - [otel.javaagent 2026-10-24 23:22:47:394 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniHandle -- null - [otel.javaagent 2026-10-24 23:22:47:395 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniExceptionally - [otel.javaagent 2026-10-24 23:22:47:397 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniExceptionally -- null - [otel.javaagent 2026-10-24 23:22:47:398 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$UniComposeExceptionally - [otel.javaagent 2026-10-24 23:22:47:400 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$UniComposeExceptionally -- null - [otel.javaagent 2026-10-24 23:22:47:400 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$MinimalStage - [otel.javaagent 2026-10-24 23:22:47:401 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$MinimalStage -- null - [otel.javaagent 2026-10-24 23:22:47:401 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.CompletableFuture$AnyOf - [otel.javaagent 2026-10-24 23:22:47:403 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$AnyOf -- null - [otel.javaagent 2026-10-24 23:22:47:407 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.CompletableFuture$BiRelay -- null - [otel.javaagent 2026-10-24 23:22:47:556 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for java.util.concurrent.RecursiveTask - [otel.javaagent 2026-10-24 23:22:47:560 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.RecursiveTask -- null - [otel.javaagent 2026-10-24 23:22:47:581 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.shaded.com.fasterxml.jackson.databind.util.internal.PrivateMaxEntriesMap$AddTask -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:47:664 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.dockerclient.DockerClientProviderStrategy$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:47:678 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for java.util.concurrent.Executors$AutoShutdownDelegatedExecutorService - [otel.javaagent 2026-10-24 23:22:47:678 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for java.util.concurrent.Executors$AutoShutdownDelegatedExecutorService - [otel.javaagent 2026-10-24 23:22:47:692 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.Executors$DelegatedExecutorService -- null - [otel.javaagent 2026-10-24 23:22:47:694 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed java.util.concurrent.Executors$AutoShutdownDelegatedExecutorService$$Lambda -- null - [otel.javaagent 2026-10-24 23:22:47:696 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.shaded.org.awaitility.core.ConditionAwaiter$ConditionPoller -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:47:949 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for com.github.dockerjava.zerodep.shaded.org.apache.hc.core5.concurrent.BasicFuture - [otel.javaagent 2026-10-24 23:22:47:952 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed com.github.dockerjava.zerodep.shaded.org.apache.hc.core5.concurrent.BasicFuture -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:47:953 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for com.github.dockerjava.zerodep.shaded.org.apache.hc.core5.pool.StrictConnPool$1 - [otel.javaagent 2026-10-24 23:22:47:960 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed com.github.dockerjava.zerodep.shaded.org.apache.hc.core5.pool.StrictConnPool$1 -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:48:172 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.containers.GenericContainer$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:48:608 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.containers.GenericContainer$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:48:609 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for org.testcontainers.shaded.org.awaitility.core.SameThreadExecutorService - [otel.javaagent 2026-10-24 23:22:48:610 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.ExecutorMatchers - Skipping executor instrumentation for org.testcontainers.shaded.org.awaitility.core.SameThreadExecutorService - [otel.javaagent 2026-10-24 23:22:48:733 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.shaded.com.github.dockerjava.core.DefaultInvocationBuilder$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:48:765 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.utility.RyukResourceReaper$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:48:768 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.utility.RyukResourceReaper$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:49:182 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.containers.wait.strategy.HttpWaitStrategy$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:49:184 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.rnorth.ducttape.unreliables.Unreliables$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:22:49:187 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.testcontainers.containers.wait.strategy.HttpWaitStrategy$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:23:00:957 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: apache-httpasyncclient-4.1 [class io.opentelemetry.javaagent.instrumentation.apachehttpasyncclient.v4_1.ApacheHttpAsyncClientInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@7a364e1c - [otel.javaagent 2026-10-24 23:23:00:959 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.nio.client.HttpAsyncClient -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:23:00:961 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.impl.nio.client.CloseableHttpAsyncClient -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:23:00:966 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.nio.client.HttpPipeliningClient -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:23:00:969 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.impl.nio.client.CloseableHttpPipeliningClient -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:23:00:971 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.impl.nio.client.CloseableHttpAsyncClientBase -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:23:00:974 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.impl.nio.client.InternalHttpAsyncClient -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:23:00:998 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:23:01:020 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.impl.nio.client.CloseableHttpAsyncClientBase$1 -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - -OpenSearchRestTest > recordsFailureResponseStatus() STANDARD_ERROR - [otel.javaagent 2026-10-24 23:23:01:078 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for org.apache.http.concurrent.BasicFuture - [otel.javaagent 2026-10-24 23:23:01:079 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.concurrent.BasicFuture -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:23:01:104 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for org.apache.http.nio.pool.AbstractNIOConnPool$3 - [otel.javaagent 2026-10-24 23:23:01:106 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.nio.pool.AbstractNIOConnPool$3 -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:23:01:106 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager$2 - [otel.javaagent 2026-10-24 23:23:01:110 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager$2 -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:23:01:111 +0000] [Test worker] DEBUG io.opentelemetry.javaagent.instrumentation.executors.FutureInstrumentation - Skipping future instrumentation for org.apache.http.impl.nio.client.FutureWrapper - [otel.javaagent 2026-10-24 23:23:01:111 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.apache.http.impl.nio.client.FutureWrapper -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:23:01:196 +0000] [I/O dispatcher 1] INFO io.opentelemetry.exporter.logging.LoggingSpanExporter - 'HEAD' : bc9d5c2f57ab40b44ab9d61f73ecd5a5 82ff008888680f7c CLIENT [tracer: io.opentelemetry.apache-httpasyncclient-4.1:3.0.0-alpha-SNAPSHOT] AttributesMap{data={url.full=https://localhost:32871/missing-index, server.address=localhost, error.type=404, http.response.status_code=404, http.request.method=HEAD, server.port=32871, network.protocol.version=1.1, peer.service=test-peer-service}, capacity=128, totalAddedValues=8} - [otel.javaagent 2026-10-24 23:23:01:197 +0000] [I/O dispatcher 1] INFO io.opentelemetry.javaagent.testing.exporter.OtlpInMemorySpanExporter - Exporting span SpanData{spanContext=ImmutableSpanContext{traceId=bc9d5c2f57ab40b44ab9d61f73ecd5a5, spanId=82ff008888680f7c, traceFlags=03, traceState=ArrayBasedTraceState{entries=[]}, remote=false, valid=true}, parentSpanContext=ImmutableSpanContext{traceId=bc9d5c2f57ab40b44ab9d61f73ecd5a5, spanId=0d22b5db25e03c01, traceFlags=03, traceState=ArrayBasedTraceState{entries=[]}, remote=false, valid=true}, resource=Resource{schemaUrl=https://opentelemetry.io/schemas/1.40.0, entities=[SdkEntity{type=service.instance, id={service.instance.id="f9f37671-dfcf-498e-bcaa-92ca690bcc00"}, description={}, schemaUrl=https://opentelemetry.io/schemas/1.40.0}], attributes={service.instance.id="f9f37671-dfcf-498e-bcaa-92ca690bcc00", service.name="unknown_service:java", telemetry.distro.name="opentelemetry-javaagent", telemetry.distro.version="3.0.0-SNAPSHOT", telemetry.sdk.language="java", telemetry.sdk.name="opentelemetry", telemetry.sdk.version="1.67.0"}}, instrumentationScopeInfo=InstrumentationScopeInfo{name=io.opentelemetry.apache-httpasyncclient-4.1, version=3.0.0-alpha-SNAPSHOT, schemaUrl=https://opentelemetry.io/schemas/1.41.0, attributes={}}, name=HEAD, kind=CLIENT, startEpochNanos=1792884181094773705, endEpochNanos=1792884181195788712, attributes=AttributesMap{data={url.full=https://localhost:32871/missing-index, server.address=localhost, error.type=404, http.response.status_code=404, http.request.method=HEAD, server.port=32871, network.protocol.version=1.1, peer.service=test-peer-service}, capacity=128, totalAddedValues=8}, totalAttributeCount=8, events=[], totalRecordedEvents=0, links=[], totalRecordedLinks=0, status=ImmutableStatusData{statusCode=ERROR, description=}, hasEnded=true} - [otel.javaagent 2026-10-24 23:23:01:199 +0000] [Test worker] INFO io.opentelemetry.exporter.logging.LoggingSpanExporter - 'HEAD localhost:32871' : bc9d5c2f57ab40b44ab9d61f73ecd5a5 0d22b5db25e03c01 CLIENT [tracer: io.opentelemetry.opensearch-rest-1.0:3.0.0-alpha-SNAPSHOT] AttributesMap{data={server.address=localhost, db.system.name=opensearch, error.type=404, db.operation.name=HEAD, db.response.status_code=404, server.port=32871}, capacity=128, totalAddedValues=6} - [otel.javaagent 2026-10-24 23:23:01:215 +0000] [Test worker] INFO io.opentelemetry.javaagent.testing.exporter.OtlpInMemorySpanExporter - Exporting span SpanData{spanContext=ImmutableSpanContext{traceId=bc9d5c2f57ab40b44ab9d61f73ecd5a5, spanId=0d22b5db25e03c01, traceFlags=03, traceState=ArrayBasedTraceState{entries=[]}, remote=false, valid=true}, parentSpanContext=ImmutableSpanContext{traceId=00000000000000000000000000000000, spanId=0000000000000000, traceFlags=00, traceState=ArrayBasedTraceState{entries=[]}, remote=false, valid=false}, resource=Resource{schemaUrl=https://opentelemetry.io/schemas/1.40.0, entities=[SdkEntity{type=service.instance, id={service.instance.id="f9f37671-dfcf-498e-bcaa-92ca690bcc00"}, description={}, schemaUrl=https://opentelemetry.io/schemas/1.40.0}], attributes={service.instance.id="f9f37671-dfcf-498e-bcaa-92ca690bcc00", service.name="unknown_service:java", telemetry.distro.name="opentelemetry-javaagent", telemetry.distro.version="3.0.0-SNAPSHOT", telemetry.sdk.language="java", telemetry.sdk.name="opentelemetry", telemetry.sdk.version="1.67.0"}}, instrumentationScopeInfo=InstrumentationScopeInfo{name=io.opentelemetry.opensearch-rest-1.0, version=3.0.0-alpha-SNAPSHOT, schemaUrl=https://opentelemetry.io/schemas/1.44.0, attributes={}}, name=HEAD localhost:32871, kind=CLIENT, startEpochNanos=1792884181069622677, endEpochNanos=1792884181199417504, attributes=AttributesMap{data={server.address=localhost, db.system.name=opensearch, error.type=404, db.operation.name=HEAD, db.response.status_code=404, server.port=32871}, capacity=128, totalAddedValues=6}, totalAttributeCount=6, events=[], totalRecordedEvents=0, links=[], totalRecordedLinks=0, status=ImmutableStatusData{statusCode=UNSET, description=}, hasEnded=true} - [otel.javaagent 2026-10-24 23:23:01:263 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.instrumentation.testing.InstrumentationTestRunner$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:23:01:382 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed org.awaitility.core.ConditionAwaiter$ConditionPoller -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:23:11:370 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.context.internal.shaded.AbstractWeakConcurrentMap -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:23:11:373 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.context.internal.shaded.WeakConcurrentMap -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:23:11:378 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.context.StrictContextStorage$PendingScopes -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:23:11:383 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.context.ContextStorageWrappers -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:23:11:392 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.context.ArrayBasedContext -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:23:11:421 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: opentelemetry-instrumentation-api-1.14 [class io.opentelemetry.javaagent.instrumentation.instrumentationapi.v1_14.InstrumentationApiInstrumentationModule] on io.opentelemetry.javaagent.tooling.instrumentation.indy.InstrumentationModuleClassLoader@5bc1903 - [otel.javaagent 2026-10-24 23:23:11:428 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.instrumentation.api.internal.HttpRouteState -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:23:11:439 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.instrumentation.api.internal.SpanKey -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - [otel.javaagent 2026-10-24 23:23:11:449 +0000] [otel-javaagent-transform-safe-logger] DEBUG io.opentelemetry.javaagent.tooling.AgentInstaller$TransformLoggingListener - Transformed io.opentelemetry.instrumentation.testing.util.ContextStorageCloser$$Lambda -- jdk.internal.loader.ClassLoaders$AppClassLoader@14dad5dc - -OpenSearchRestTest > recordsFailureResponseStatus() FAILED - org.opentest4j.AssertionFailedError: [Span 1] Expected span to have name but was - at app//io.opentelemetry.javaagent.instrumentation.opensearch.rest.common.AbstractOpenSearchRestTest.lambda$recordsFailureResponseStatus$2(AbstractOpenSearchRestTest.java:107) - at app//io.opentelemetry.sdk.testing.assertj.TraceAssert.hasSpansSatisfyingExactly(TraceAssert.java:65) - at app//io.opentelemetry.sdk.testing.assertj.TraceAssert.hasSpansSatisfyingExactly(TraceAssert.java:49) - at app//io.opentelemetry.javaagent.instrumentation.opensearch.rest.common.AbstractOpenSearchRestTest.lambda$recordsFailureResponseStatus$0(AbstractOpenSearchRestTest.java:93) - at app//io.opentelemetry.sdk.testing.assertj.TracesAssert.hasTracesSatisfyingExactly(TracesAssert.java:108) - at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.doAssertTraces(InstrumentationTestRunner.java:191) - at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.lambda$waitAndAssertTraces$0(InstrumentationTestRunner.java:177) - at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.awaitUntilAsserted(InstrumentationTestRunner.java:497) - at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.awaitUntilAsserted(InstrumentationTestRunner.java:480) - at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.waitAndAssertTraces(InstrumentationTestRunner.java:177) - at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.waitAndAssertTraces(InstrumentationTestRunner.java:167) - at app//io.opentelemetry.instrumentation.testing.InstrumentationTestRunner.waitAndAssertTraces(InstrumentationTestRunner.java:163) - at app//io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension.waitAndAssertTraces(InstrumentationExtension.java:167) - at app//io.opentelemetry.javaagent.instrumentation.opensearch.rest.common.AbstractOpenSearchRestTest.recordsFailureResponseStatus(AbstractOpenSearchRestTest.java:91) - at java.base@25.0.4.1/java.lang.reflect.Method.invoke(Method.java:565) - at java.base@25.0.4.1/java.util.ArrayList.forEach(ArrayList.java:1604) - at java.base@25.0.4.1/java.util.ArrayList.forEach(ArrayList.java:1604) - -OpenSearchRestTest > shouldGetStatusWithTraces() STANDARD_ERROR - [otel.javaagent 2026-10-24 23:23:11:508 +0000] [Test worker] INFO io.opentelemetry.exporter.logging.LoggingSpanExporter - 'GET localhost:32871' : fe6b9ed9d4d9195eb166c0d998783fc8 ab92d7d033308894 CLIENT [tracer: io.opentelemetry.opensearch-rest-1.0:3.0.0-alpha-SNAPSHOT] AttributesMap{data={server.address=localhost, db.system.name=opensearch, db.operation.name=GET, server.port=32871}, capacity=128, totalAddedValues=4} - [otel.javaagent 2026-10-24 23:23:11:508 +0000] [Test worker] INFO io.opentelemetry.javaagent.testing.exporter.OtlpInMemorySpanExporter - Exporting span SpanData{spanContext=ImmutableSpanContext{traceId=fe6b9ed9d4d9195eb166c0d998783fc8, spanId=ab92d7d033308894, traceFlags=03, traceState=ArrayBasedTraceState{entries=[]}, remote=false, valid=true}, parentSpanContext=ImmutableSpanContext{traceId=00000000000000000000000000000000, spanId=0000000000000000, traceFlags=00, traceState=ArrayBasedTraceState{entries=[]}, remote=false, valid=false}, resource=Resource{schemaUrl=https://opentelemetry.io/schemas/1.40.0, entities=[SdkEntity{type=service.instance, id={service.instance.id="f9f37671-dfcf-498e-bcaa-92ca690bcc00"}, description={}, schemaUrl=https://opentelemetry.io/schemas/1.40.0}], attributes={service.instance.id="f9f37671-dfcf-498e-bcaa-92ca690bcc00", service.name="unknown_service:java", telemetry.distro.name="opentelemetry-javaagent", telemetry.distro.version="3.0.0-SNAPSHOT", telemetry.sdk.language="java", telemetry.sdk.name="opentelemetry", telemetry.sdk.version="1.67.0"}}, instrumentationScopeInfo=InstrumentationScopeInfo{name=io.opentelemetry.opensearch-rest-1.0, version=3.0.0-alpha-SNAPSHOT, schemaUrl=https://opentelemetry.io/schemas/1.44.0, attributes={}}, name=GET localhost:32871, kind=CLIENT, startEpochNanos=1792884191486832625, endEpochNanos=1792884191508225587, attributes=AttributesMap{data={server.address=localhost, db.system.name=opensearch, db.operation.name=GET, server.port=32871}, capacity=128, totalAddedValues=4}, totalAttributeCount=4, events=[], totalRecordedEvents=0, links=[], totalRecordedLinks=0, status=ImmutableStatusData{statusCode=UNSET, description=}, hasEnded=true} - [otel.javaagent 2026-10-24 23:23:11:508 +0000] [I/O dispatcher 1] INFO io.opentelemetry.exporter.logging.LoggingSpanExporter - 'GET' : fe6b9ed9d4d9195eb166c0d998783fc8 fe87214284d120b3 CLIENT [tracer: io.opentelemetry.apache-httpasyncclient-4.1:3.0.0-alpha-SNAPSHOT] AttributesMap{data={url.full=https://localhost:32871/_cluster/health, server.address=localhost, http.response.status_code=200, http.request.method=GET, server.port=32871, network.protocol.version=1.1, peer.service=test-peer-service}, capacity=128, totalAddedValues=7} - [otel.javaagent 2026-10-24 23:23:11:511 +0000] [I/O dispatcher 1] INFO io.opentelemetry.javaagent.testing.exporter.OtlpInMemorySpanExporter - Exporting span SpanData{spanContext=ImmutableSpanContext{traceId=fe6b9ed9d4d9195eb166c0d998783fc8, spanId=fe87214284d120b3, traceFlags=03, traceState=ArrayBasedTraceState{entries=[]}, remote=false, valid=true}, parentSpanContext=ImmutableSpanContext{traceId=fe6b9ed9d4d9195eb166c0d998783fc8, spanId=ab92d7d033308894, traceFlags=03, traceState=ArrayBasedTraceState{entries=[]}, remote=false, valid=true}, resource=Resource{schemaUrl=https://opentelemetry.io/schemas/1.40.0, entities=[SdkEntity{type=service.instance, id={service.instance.id="f9f37671-dfcf-498e-bcaa-92ca690bcc00"}, description={}, schemaUrl=https://opentelemetry.io/schemas/1.40.0}], attributes={service.instance.id="f9f37671-dfcf-498e-bcaa-92ca690bcc00", service.name="unknown_service:java", telemetry.distro.name="opentelemetry-javaagent", telemetry.distro.version="3.0.0-SNAPSHOT", telemetry.sdk.language="java", telemetry.sdk.name="opentelemetry", telemetry.sdk.version="1.67.0"}}, instrumentationScopeInfo=InstrumentationScopeInfo{name=io.opentelemetry.apache-httpasyncclient-4.1, version=3.0.0-alpha-SNAPSHOT, schemaUrl=https://opentelemetry.io/schemas/1.41.0, attributes={}}, name=GET, kind=CLIENT, startEpochNanos=1792884191487459348, endEpochNanos=1792884191508911118, attributes=AttributesMap{data={url.full=https://localhost:32871/_cluster/health, server.address=localhost, http.response.status_code=200, http.request.method=GET, server.port=32871, network.protocol.version=1.1, peer.service=test-peer-service}, capacity=128, totalAddedValues=7}, totalAttributeCount=7, events=[], totalRecordedEvents=0, links=[], totalRecordedLinks=0, status=ImmutableStatusData{statusCode=UNSET, description=}, hasEnded=true} From 2ab78abb8043a443458ec30192892c6cb2d777dd Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 24 Oct 2026 23:46:43 +0000 Subject: [PATCH 05/33] Exclude client-only database statuses while preserving error classification Co-authored-by: trask <218610+trask@users.noreply.github.com> --- .../v0_5/ClickHouseAttributesGetter.java | 10 +- .../v0_5/ClickHouseInstrumenterFactory.java | 9 +- .../javaagent/build.gradle.kts | 17 ++++ .../v0_5/ClickHouseClientV1Singletons.java | 10 +- .../v0_5/ClickHouseErrorCodeExtractor.java | 54 +++++++++++ .../clientv1/v0_5/ClickHouseClientV1Test.java | 41 ++++++++ .../ClickHouseErrorCodeExtractorTest.java | 95 +++++++++++++++++++ .../rest/v5_0/ElasticsearchRest5Test.java | 4 +- .../ElasticsearchDbAttributesGetterTest.java | 4 +- .../v5_0/ElasticsearchDbAttributesGetter.java | 3 + .../jdbc/internal/JdbcAttributesGetter.java | 21 ++-- .../internal/JdbcAttributesGetterTest.java | 24 +++++ .../v3_0/OpenSearchAttributesGetterTest.java | 48 ++++++++++ .../v3_0/OpenSearchAttributesGetter.java | 25 ++--- .../OpenSearchRestAttributesGetterTest.java | 36 +++++++ .../v1_0/OpenSearchRestAttributesGetter.java | 3 + .../common/AbstractOpenSearchRestTest.java | 4 +- .../internal/R2dbcSqlAttributesGetter.java | 10 +- .../sqlclient/v5_0/VertxSqlClientTest.java | 2 +- .../VertxSqlClientAttributesGetterTest.java | 54 +++++++++++ .../v4_0/VertxSqlClientAttributesGetter.java | 10 +- 21 files changed, 441 insertions(+), 43 deletions(-) create mode 100644 instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv1/v0_5/ClickHouseErrorCodeExtractor.java create mode 100644 instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/src/unitTests/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv1/v0_5/ClickHouseErrorCodeExtractorTest.java create mode 100644 instrumentation/opensearch/opensearch-java-3.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/opensearch/v3_0/OpenSearchAttributesGetterTest.java create mode 100644 instrumentation/opensearch/opensearch-rest-common-1.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/v1_0/OpenSearchRestAttributesGetterTest.java create mode 100644 instrumentation/vertx/vertx-sql-client/vertx-sql-client-5.0/javaagent/src/unitTests/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetterTest.java diff --git a/instrumentation/clickhouse/clickhouse-client-common-0.5/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/clickhouse/client/common/v0_5/ClickHouseAttributesGetter.java b/instrumentation/clickhouse/clickhouse-client-common-0.5/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/clickhouse/client/common/v0_5/ClickHouseAttributesGetter.java index c68ff740f713..d17db25a9f07 100644 --- a/instrumentation/clickhouse/clickhouse-client-common-0.5/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/clickhouse/client/common/v0_5/ClickHouseAttributesGetter.java +++ b/instrumentation/clickhouse/clickhouse-client-common-0.5/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/clickhouse/client/common/v0_5/ClickHouseAttributesGetter.java @@ -19,9 +19,13 @@ class ClickHouseAttributesGetter implements SqlClientAttributesGetter { private final Function errorCodeExtractor; + private final Function responseStatusExtractor; - ClickHouseAttributesGetter(Function errorCodeExtractor) { + ClickHouseAttributesGetter( + Function errorCodeExtractor, + Function responseStatusExtractor) { this.errorCodeExtractor = errorCodeExtractor; + this.responseStatusExtractor = responseStatusExtractor; } @Override @@ -56,14 +60,14 @@ public String getDbNamespace(ClickHouseDbRequest request) { @Override public String getErrorType( ClickHouseDbRequest request, @Nullable Void response, @Nullable Throwable error) { - return getDbResponseStatusCode(request, null, error); + return errorCodeExtractor.apply(error); } @Nullable @Override public String getDbResponseStatusCode( ClickHouseDbRequest request, @Nullable Void response, @Nullable Throwable error) { - return errorCodeExtractor.apply(error); + return responseStatusExtractor.apply(error); } @Nullable diff --git a/instrumentation/clickhouse/clickhouse-client-common-0.5/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/clickhouse/client/common/v0_5/ClickHouseInstrumenterFactory.java b/instrumentation/clickhouse/clickhouse-client-common-0.5/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/clickhouse/client/common/v0_5/ClickHouseInstrumenterFactory.java index 464c7585d7a6..f06744cbbab7 100644 --- a/instrumentation/clickhouse/clickhouse-client-common-0.5/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/clickhouse/client/common/v0_5/ClickHouseInstrumenterFactory.java +++ b/instrumentation/clickhouse/clickhouse-client-common-0.5/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/clickhouse/client/common/v0_5/ClickHouseInstrumenterFactory.java @@ -22,8 +22,15 @@ public class ClickHouseInstrumenterFactory { public static Instrumenter createInstrumenter( String instrumenterName, Function errorCodeExtractor) { + return createInstrumenter(instrumenterName, errorCodeExtractor, errorCodeExtractor); + } + + public static Instrumenter createInstrumenter( + String instrumenterName, + Function errorCodeExtractor, + Function responseStatusExtractor) { ClickHouseAttributesGetter dbAttributesGetter = - new ClickHouseAttributesGetter(errorCodeExtractor); + new ClickHouseAttributesGetter(errorCodeExtractor, responseStatusExtractor); InstrumenterBuilder builder = Instrumenter.builder( diff --git a/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/build.gradle.kts b/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/build.gradle.kts index daef0cb38c3a..3f48e6dfe574 100644 --- a/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/build.gradle.kts +++ b/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/build.gradle.kts @@ -22,3 +22,20 @@ dependencies { testInstrumentation(project(":instrumentation:clickhouse:clickhouse-client-v2-0.8:javaagent")) } + +testing { + suites { + register("unitTests") { + dependencies { + implementation(project()) + implementation("com.clickhouse:clickhouse-client:0.5.0") + } + } + } +} + +tasks { + check { + dependsOn(testing.suites) + } +} diff --git a/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv1/v0_5/ClickHouseClientV1Singletons.java b/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv1/v0_5/ClickHouseClientV1Singletons.java index aaf571326bb4..8b0b5d80de29 100644 --- a/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv1/v0_5/ClickHouseClientV1Singletons.java +++ b/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv1/v0_5/ClickHouseClientV1Singletons.java @@ -5,7 +5,6 @@ package io.opentelemetry.javaagent.instrumentation.clickhouse.clientv1.v0_5; -import com.clickhouse.client.ClickHouseException; import com.clickhouse.client.ClickHouseNode; import com.clickhouse.client.ClickHouseNodes; import com.clickhouse.client.ClickHouseProtocol; @@ -39,13 +38,8 @@ public class ClickHouseClientV1Singletons { instrumenter = ClickHouseInstrumenterFactory.createInstrumenter( INSTRUMENTER_NAME, - error -> { - if (error instanceof ClickHouseException) { - int errorCode = ((ClickHouseException) error).getErrorCode(); - return errorCode == 0 ? null : Integer.toString(errorCode); - } - return null; - }); + ClickHouseErrorCodeExtractor::getErrorType, + ClickHouseErrorCodeExtractor::getDbResponseStatusCode); } public static Instrumenter instrumenter() { diff --git a/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv1/v0_5/ClickHouseErrorCodeExtractor.java b/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv1/v0_5/ClickHouseErrorCodeExtractor.java new file mode 100644 index 000000000000..12a13a13ac7e --- /dev/null +++ b/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv1/v0_5/ClickHouseErrorCodeExtractor.java @@ -0,0 +1,54 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.clickhouse.clientv1.v0_5; + +import com.clickhouse.client.ClickHouseException; +import java.io.InterruptedIOException; +import java.net.ConnectException; +import java.net.UnknownHostException; +import java.util.concurrent.CancellationException; +import java.util.concurrent.TimeoutException; +import javax.annotation.Nullable; + +final class ClickHouseErrorCodeExtractor { + + @Nullable + static String getErrorType(@Nullable Throwable error) { + if (error instanceof ClickHouseException) { + int errorCode = ((ClickHouseException) error).getErrorCode(); + return errorCode == 0 ? null : Integer.toString(errorCode); + } + return null; + } + + @Nullable + static String getDbResponseStatusCode(@Nullable Throwable error) { + if (!(error instanceof ClickHouseException)) { + return null; + } + Throwable cause = error.getCause(); + if (cause != null) { + // V1 also assigns server-like codes to client failures. Server responses wrapped in + // exceptions retain the server's "Code:" message, unlike transport and cancellation errors. + if (cause instanceof ConnectException + || cause instanceof UnknownHostException + || cause instanceof InterruptedIOException + || cause instanceof TimeoutException + || cause instanceof CancellationException + || cause instanceof InterruptedException) { + return null; + } + String message = cause.getMessage(); + if (message == null + || !(message.startsWith("Code:") || message.startsWith("Poco::Exception. Code: "))) { + return null; + } + } + return getErrorType(error); + } + + private ClickHouseErrorCodeExtractor() {} +} diff --git a/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv1/v0_5/ClickHouseClientV1Test.java b/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv1/v0_5/ClickHouseClientV1Test.java index 9447af25f9d5..97784983f889 100644 --- a/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv1/v0_5/ClickHouseClientV1Test.java +++ b/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv1/v0_5/ClickHouseClientV1Test.java @@ -35,6 +35,7 @@ import com.clickhouse.client.TestClickHouseClient; import com.clickhouse.data.ClickHouseFormat; import io.opentelemetry.api.trace.SpanKind; +import io.opentelemetry.instrumentation.test.utils.PortUtils; import io.opentelemetry.instrumentation.testing.internal.AutoCleanupExtension; import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; @@ -335,6 +336,46 @@ void testExecuteAndWaitWithStringQueryAndId() throws ClickHouseException { equalTo(DB_QUERY_SUMMARY, "select test_table")))); } + @Test + void testClientConnectionFailureOmitsResponseStatus() { + int unavailablePort = PortUtils.findOpenPort(); + ClickHouseNode unavailableServer = + ClickHouseNode.of("http://127.0.0.1:" + unavailablePort + "/default?compress=0"); + Throwable thrown = + catchThrowable( + () -> { + ClickHouseResponse response = + client + .read(unavailableServer) + .query("select * from non_existent_table") + .executeAndWait(); + response.close(); + }); + + assertThat(thrown).isInstanceOf(ClickHouseException.class); + assertThat(((ClickHouseException) thrown).getErrorCode()).isEqualTo(210); + + testing.waitAndAssertTraces( + trace -> + trace.hasSpansSatisfyingExactly( + span -> + span.hasName("select non_existent_table") + .hasKind(SpanKind.CLIENT) + .hasStatus(StatusData.error()) + .hasException(thrown) + .hasAttributesSatisfyingExactly( + equalTo(DB_SYSTEM_NAME, CLICKHOUSE), + equalTo(DB_NAMESPACE, DATABASE_NAME), + equalTo(SERVER_ADDRESS, "127.0.0.1"), + equalTo(SERVER_PORT, unavailablePort), + equalTo(NETWORK_PEER_ADDRESS, "127.0.0.1"), + equalTo(NETWORK_PEER_PORT, unavailablePort), + equalTo(DB_QUERY_TEXT, "select * from non_existent_table"), + equalTo(DB_QUERY_SUMMARY, "select non_existent_table"), + equalTo(ERROR_TYPE, "210"), + equalTo(DB_RESPONSE_STATUS_CODE, null)))); + } + @Test void testExecuteAndWaitThrowsException() { Throwable thrown = diff --git a/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/src/unitTests/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv1/v0_5/ClickHouseErrorCodeExtractorTest.java b/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/src/unitTests/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv1/v0_5/ClickHouseErrorCodeExtractorTest.java new file mode 100644 index 000000000000..6159f4b23bb9 --- /dev/null +++ b/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/src/unitTests/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv1/v0_5/ClickHouseErrorCodeExtractorTest.java @@ -0,0 +1,95 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.clickhouse.clientv1.v0_5; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.params.provider.Arguments.argumentSet; + +import com.clickhouse.client.ClickHouseException; +import java.io.IOException; +import java.net.ConnectException; +import java.net.SocketTimeoutException; +import java.net.UnknownHostException; +import java.util.concurrent.CancellationException; +import java.util.concurrent.TimeoutException; +import java.util.stream.Stream; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; +import org.junit.jupiter.params.provider.ValueSource; + +class ClickHouseErrorCodeExtractorTest { + + @ParameterizedTest + @ValueSource(ints = {60, 159, 210, 394, 1002}) + void keepsServerCodesEvenWhenTheyOverlapClientCodes(int code) { + String message = "Code: " + code + ". DB::Exception: test"; + ClickHouseException response = ClickHouseException.of(message, null); + ClickHouseException wrappedResponse = ClickHouseException.of(new IOException(message), null); + + assertThat(ClickHouseErrorCodeExtractor.getDbResponseStatusCode(response)) + .isEqualTo(Integer.toString(code)); + assertThat(ClickHouseErrorCodeExtractor.getDbResponseStatusCode(wrappedResponse)) + .isEqualTo(Integer.toString(code)); + } + + @ParameterizedTest + @MethodSource("clientFailures") + void omitsClientCodesWithoutChangingErrorType( + ClickHouseException error, String expectedErrorType) { + assertThat(ClickHouseErrorCodeExtractor.getErrorType(error)).isEqualTo(expectedErrorType); + assertThat(ClickHouseErrorCodeExtractor.getDbResponseStatusCode(error)).isNull(); + } + + private static Stream clientFailures() { + return Stream.of( + argumentSet( + "connection failure", + ClickHouseException.of(new ConnectException("refused"), null), + "210"), + argumentSet( + "unknown host", + ClickHouseException.of(new UnknownHostException("unknown"), null), + "210"), + argumentSet( + "socket timeout", + ClickHouseException.of(new SocketTimeoutException("timed out"), null), + "159"), + argumentSet( + "execution timeout", + ClickHouseException.of(new TimeoutException("timed out"), null), + "159"), + argumentSet( + "cancellation", + ClickHouseException.forCancellation(new CancellationException("cancelled"), null), + "236"), + argumentSet( + "interruption", + ClickHouseException.forCancellation(new InterruptedException("interrupted"), null), + "236"), + argumentSet( + "cancelled code", + new ClickHouseException(394, new CancellationException("cancelled"), null), + "394"), + argumentSet( + "unknown client failure", + ClickHouseException.of(new IOException("connection closed"), null), + "1002")); + } + + @Test + void omitsUnavailableCodes() { + assertThat(ClickHouseErrorCodeExtractor.getDbResponseStatusCode(null)).isNull(); + assertThat( + ClickHouseErrorCodeExtractor.getDbResponseStatusCode(new IllegalStateException("test"))) + .isNull(); + assertThat( + ClickHouseErrorCodeExtractor.getDbResponseStatusCode( + new ClickHouseException(0, "test", null))) + .isNull(); + } +} diff --git a/instrumentation/elasticsearch/elasticsearch-rest-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/v5_0/ElasticsearchRest5Test.java b/instrumentation/elasticsearch/elasticsearch-rest-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/v5_0/ElasticsearchRest5Test.java index ad0e55182ace..aa84232985b9 100644 --- a/instrumentation/elasticsearch/elasticsearch-rest-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/v5_0/ElasticsearchRest5Test.java +++ b/instrumentation/elasticsearch/elasticsearch-rest-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/v5_0/ElasticsearchRest5Test.java @@ -115,7 +115,7 @@ void recordsFailureResponseStatus() throws IOException { equalTo(SERVER_ADDRESS, httpHost.getHostName()), equalTo(SERVER_PORT, httpHost.getPort()), equalTo(URL_FULL, httpHost.toURI() + "/missing-index")), - span -> span.hasName("GET").hasKind(SpanKind.CLIENT).hasParent(trace.getSpan(0)))); + span -> span.hasName("HEAD").hasKind(SpanKind.CLIENT).hasParent(trace.getSpan(0)))); } @Test @@ -141,7 +141,7 @@ void elasticsearchStatus() throws IOException { equalTo(SERVER_PORT, httpHost.getPort()), equalTo(URL_FULL, httpHost.toURI() + "/_cluster/health")), span -> - span.hasName("HEAD") + span.hasName("GET") .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( diff --git a/instrumentation/elasticsearch/elasticsearch-rest-common-5.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/common/v5_0/ElasticsearchDbAttributesGetterTest.java b/instrumentation/elasticsearch/elasticsearch-rest-common-5.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/common/v5_0/ElasticsearchDbAttributesGetterTest.java index 4d03b5ad5c46..a5f19090d90f 100644 --- a/instrumentation/elasticsearch/elasticsearch-rest-common-5.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/common/v5_0/ElasticsearchDbAttributesGetterTest.java +++ b/instrumentation/elasticsearch/elasticsearch-rest-common-5.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/common/v5_0/ElasticsearchDbAttributesGetterTest.java @@ -38,7 +38,7 @@ class ElasticsearchDbAttributesGetterTest { private static final String SANITIZED_BODY = "{\"query\":{\"match\":{\"title\":\"?\"}}}"; @ParameterizedTest - @ValueSource(ints = {99, 200, 302, 404, 503}) + @ValueSource(ints = {0, 99, 200, 302, 404, 503}) void recordsResponseStatusOnlyForFailureCodes(int statusCode) { ElasticsearchDbAttributesGetter getter = new ElasticsearchDbAttributesGetter(null); ElasticsearchRestRequest request = searchRequest(null); @@ -47,7 +47,7 @@ void recordsResponseStatusOnlyForFailureCodes(int statusCode) { .thenReturn(new BasicStatusLine(new ProtocolVersion("HTTP", 1, 1), statusCode, "")); assertThat(getter.getDbResponseStatusCode(request, response, null)) - .isEqualTo(statusCode >= 400 || statusCode < 100 ? Integer.toString(statusCode) : null); + .isEqualTo(statusCode >= 400 ? Integer.toString(statusCode) : null); assertThat(getter.getErrorType(request, response, null)) .isEqualTo(statusCode >= 400 || statusCode < 100 ? Integer.toString(statusCode) : null); } diff --git a/instrumentation/elasticsearch/elasticsearch-rest-common-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/common/v5_0/ElasticsearchDbAttributesGetter.java b/instrumentation/elasticsearch/elasticsearch-rest-common-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/common/v5_0/ElasticsearchDbAttributesGetter.java index ebefb8466772..657a8c29e402 100644 --- a/instrumentation/elasticsearch/elasticsearch-rest-common-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/common/v5_0/ElasticsearchDbAttributesGetter.java +++ b/instrumentation/elasticsearch/elasticsearch-rest-common-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/common/v5_0/ElasticsearchDbAttributesGetter.java @@ -152,6 +152,9 @@ public String getErrorType( @Nullable public String getDbResponseStatusCode( ElasticsearchRestRequest request, @Nullable Response response, @Nullable Throwable error) { + if (response == null || response.getStatusLine().getStatusCode() < 400) { + return null; + } return getErrorType(request, response, error); } diff --git a/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcAttributesGetter.java b/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcAttributesGetter.java index ad1899a5b5d2..c97618902385 100644 --- a/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcAttributesGetter.java +++ b/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcAttributesGetter.java @@ -52,13 +52,6 @@ public Long getDbOperationBatchSize(DbRequest request) { @Override public String getErrorType( DbRequest request, @Nullable Void response, @Nullable Throwable error) { - return getDbResponseStatusCode(request, null, error); - } - - @Nullable - @Override - public String getDbResponseStatusCode( - DbRequest request, @Nullable Void response, @Nullable Throwable error) { if (error instanceof SQLException) { SQLException sqlException = (SQLException) error; int errorCode = sqlException.getErrorCode(); @@ -74,6 +67,20 @@ public String getDbResponseStatusCode( return null; } + @Nullable + @Override + public String getDbResponseStatusCode( + DbRequest request, @Nullable Void response, @Nullable Throwable error) { + if ("oracle.db".equals(getDbSystemName(request)) && error instanceof SQLException) { + int errorCode = ((SQLException) error).getErrorCode(); + // Oracle Statement.ensureOpen() generates these locally, before any server request. + if (errorCode == 17008 || errorCode == 17009) { + return null; + } + } + return getErrorType(request, null, error); + } + @Override public Map getDbQueryParameters(DbRequest request) { return request.getPreparedStatementParameters(); diff --git a/instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcAttributesGetterTest.java b/instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcAttributesGetterTest.java index ba87c11e51c6..a197e0e75a72 100644 --- a/instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcAttributesGetterTest.java +++ b/instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcAttributesGetterTest.java @@ -28,6 +28,7 @@ import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; +import org.junit.jupiter.params.provider.ValueSource; class JdbcAttributesGetterTest { @@ -85,6 +86,29 @@ request, null, new SQLException("test", sqlState, errorCode))) .isEqualTo(expectedErrorType); } + @ParameterizedTest + @ValueSource(ints = {17008, 17009}) + void omitsOracleLocalClosedCodesWithoutChangingErrorType(int errorCode) { + DbRequest request = + DbRequest.create(DbInfo.builder().dbSystemName(ORACLE_DB).build(), "SELECT 1", false); + SQLException error = new SQLException("Closed locally", "99999", errorCode); + + assertThat(attributesGetter.getErrorType(request, null, error)) + .isEqualTo(Integer.toString(errorCode)); + assertThat(attributesGetter.getDbResponseStatusCode(request, null, error)).isNull(); + } + + @ParameterizedTest + @ValueSource(ints = {17008, 17009}) + void keepsOtherDatabaseCodesThatOverlapOracleLocalCodes(int errorCode) { + DbRequest request = + DbRequest.create(DbInfo.builder().dbSystemName(POSTGRESQL).build(), "SELECT 1", false); + SQLException error = new SQLException("Server failure", "99999", errorCode); + + assertThat(attributesGetter.getDbResponseStatusCode(request, null, error)) + .isEqualTo(Integer.toString(errorCode)); + } + @Test void omitsResponseStatusWithoutSqlException() { DbRequest request = diff --git a/instrumentation/opensearch/opensearch-java-3.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/opensearch/v3_0/OpenSearchAttributesGetterTest.java b/instrumentation/opensearch/opensearch-java-3.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/opensearch/v3_0/OpenSearchAttributesGetterTest.java new file mode 100644 index 000000000000..91582e26d908 --- /dev/null +++ b/instrumentation/opensearch/opensearch-java-3.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/opensearch/v3_0/OpenSearchAttributesGetterTest.java @@ -0,0 +1,48 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.opensearch.v3_0; + +import static org.assertj.core.api.Assertions.assertThat; + +import java.util.concurrent.CompletionException; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.ValueSource; +import org.opensearch.client.opensearch._types.ErrorResponse; +import org.opensearch.client.opensearch._types.OpenSearchException; + +class OpenSearchAttributesGetterTest { + + private final OpenSearchAttributesGetter getter = new OpenSearchAttributesGetter(); + private final OpenSearchRequest request = OpenSearchRequest.create("GET", null, null); + + @ParameterizedTest + @ValueSource(ints = {-1, 0, 99, 200, 302, 404, 503}) + void responseStatusExcludesSentinelsAndSuccesses(int statusCode) { + OpenSearchException error = + new OpenSearchException( + ErrorResponse.of( + response -> + response.status(statusCode).error(cause -> cause.type("test").reason("test")))); + + assertStatus(error, statusCode); + assertStatus(new CompletionException(error), statusCode); + } + + private void assertStatus(Throwable error, int statusCode) { + assertThat(getter.getDbResponseStatusCode(request, null, error)) + .isEqualTo(statusCode >= 400 ? Integer.toString(statusCode) : null); + assertThat(getter.getErrorType(request, null, error)) + .isEqualTo(statusCode >= 400 || statusCode < 100 ? Integer.toString(statusCode) : null); + } + + @Test + void omitsResponseStatusWithoutServerCode() { + assertThat(getter.getDbResponseStatusCode(request, null, null)).isNull(); + assertThat(getter.getDbResponseStatusCode(request, null, new IllegalStateException("test"))) + .isNull(); + } +} diff --git a/instrumentation/opensearch/opensearch-java-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/v3_0/OpenSearchAttributesGetter.java b/instrumentation/opensearch/opensearch-java-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/v3_0/OpenSearchAttributesGetter.java index ef5538586a18..ad51927eeac6 100644 --- a/instrumentation/opensearch/opensearch-java-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/v3_0/OpenSearchAttributesGetter.java +++ b/instrumentation/opensearch/opensearch-java-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/v3_0/OpenSearchAttributesGetter.java @@ -42,23 +42,18 @@ public String getDbOperationName(OpenSearchRequest request) { @Nullable public String getErrorType( OpenSearchRequest request, @Nullable Void response, @Nullable Throwable error) { - if (error instanceof CompletionException) { - error = error.getCause(); - } - if (error instanceof OpenSearchException) { - int statusCode = ((OpenSearchException) error).status(); - if (statusCode >= 400 || statusCode < 100) { - return Integer.toString(statusCode); - } - } - return null; + Integer statusCode = getResponseStatusCode(error); + return statusCode != null && (statusCode >= 400 || statusCode < 100) + ? statusCode.toString() + : null; } @Override @Nullable public String getDbResponseStatusCode( OpenSearchRequest request, @Nullable Void response, @Nullable Throwable error) { - return getErrorType(request, null, error); + Integer statusCode = getResponseStatusCode(error); + return statusCode != null && statusCode >= 400 ? statusCode.toString() : null; } @Override @@ -74,4 +69,12 @@ public Integer getServerPort(OpenSearchRequest request) { DbServerTarget target = request.getServerTarget(); return target != null ? target.getPort() : null; } + + @Nullable + private static Integer getResponseStatusCode(@Nullable Throwable error) { + if (error instanceof CompletionException) { + error = error.getCause(); + } + return error instanceof OpenSearchException ? ((OpenSearchException) error).status() : null; + } } diff --git a/instrumentation/opensearch/opensearch-rest-common-1.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/v1_0/OpenSearchRestAttributesGetterTest.java b/instrumentation/opensearch/opensearch-rest-common-1.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/v1_0/OpenSearchRestAttributesGetterTest.java new file mode 100644 index 000000000000..e0265f03ae46 --- /dev/null +++ b/instrumentation/opensearch/opensearch-rest-common-1.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/v1_0/OpenSearchRestAttributesGetterTest.java @@ -0,0 +1,36 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.opensearch.rest.common.v1_0; + +import static org.assertj.core.api.Assertions.assertThat; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.ValueSource; + +class OpenSearchRestAttributesGetterTest { + + private final OpenSearchRestAttributesGetter getter = new OpenSearchRestAttributesGetter(); + private final OpenSearchRestRequest request = OpenSearchRestRequest.create("GET", null); + + @ParameterizedTest + @ValueSource(ints = {-1, 0, 99, 200, 302, 404, 503}) + void responseStatusExcludesSentinelsAndSuccesses(int statusCode) { + OpenSearchRestResponse response = () -> statusCode; + + assertThat(getter.getDbResponseStatusCode(request, response, null)) + .isEqualTo(statusCode >= 400 ? Integer.toString(statusCode) : null); + assertThat(getter.getErrorType(request, response, null)) + .isEqualTo(statusCode >= 400 || statusCode < 100 ? Integer.toString(statusCode) : null); + } + + @Test + void omitsResponseStatusWithoutResponse() { + assertThat(getter.getDbResponseStatusCode(request, null, null)).isNull(); + assertThat(getter.getDbResponseStatusCode(request, null, new IllegalStateException("test"))) + .isNull(); + } +} diff --git a/instrumentation/opensearch/opensearch-rest-common-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/v1_0/OpenSearchRestAttributesGetter.java b/instrumentation/opensearch/opensearch-rest-common-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/v1_0/OpenSearchRestAttributesGetter.java index e6b736bec7bc..5671ec1fbf16 100644 --- a/instrumentation/opensearch/opensearch-rest-common-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/v1_0/OpenSearchRestAttributesGetter.java +++ b/instrumentation/opensearch/opensearch-rest-common-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/v1_0/OpenSearchRestAttributesGetter.java @@ -57,6 +57,9 @@ public String getDbResponseStatusCode( OpenSearchRestRequest request, @Nullable OpenSearchRestResponse response, @Nullable Throwable error) { + if (response == null || response.getStatusCode() < 400) { + return null; + } return getErrorType(request, response, error); } diff --git a/instrumentation/opensearch/opensearch-rest-common-1.0/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/AbstractOpenSearchRestTest.java b/instrumentation/opensearch/opensearch-rest-common-1.0/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/AbstractOpenSearchRestTest.java index 0d05c977696c..f9ae5000cddc 100644 --- a/instrumentation/opensearch/opensearch-rest-common-1.0/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/AbstractOpenSearchRestTest.java +++ b/instrumentation/opensearch/opensearch-rest-common-1.0/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/AbstractOpenSearchRestTest.java @@ -105,7 +105,7 @@ void recordsFailureResponseStatus() throws IOException { equalTo(SERVER_ADDRESS, httpHost.getHost()), equalTo(SERVER_PORT, Long.valueOf(httpHost.getPort()))), span -> - span.hasName("GET").hasKind(SpanKind.CLIENT).hasParent(trace.getSpan(0)))); + span.hasName("HEAD").hasKind(SpanKind.CLIENT).hasParent(trace.getSpan(0)))); } @Test @@ -126,7 +126,7 @@ void shouldGetStatusWithTraces() throws IOException { equalTo(SERVER_ADDRESS, httpHost.getHost()), equalTo(SERVER_PORT, Long.valueOf(httpHost.getPort()))), span -> - span.hasName("HEAD") + span.hasName("GET") .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( diff --git a/instrumentation/r2dbc-1.0/library/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/internal/R2dbcSqlAttributesGetter.java b/instrumentation/r2dbc-1.0/library/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/internal/R2dbcSqlAttributesGetter.java index 5b398ad52dec..6985617d6a7b 100644 --- a/instrumentation/r2dbc-1.0/library/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/internal/R2dbcSqlAttributesGetter.java +++ b/instrumentation/r2dbc-1.0/library/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/internal/R2dbcSqlAttributesGetter.java @@ -51,17 +51,17 @@ public Long getDbOperationBatchSize(DbExecution request) { @Override public String getErrorType( DbExecution request, @Nullable Void response, @Nullable Throwable error) { - return getDbResponseStatusCode(request, null, error); + if (error instanceof R2dbcException) { + return ((R2dbcException) error).getSqlState(); + } + return null; } @Nullable @Override public String getDbResponseStatusCode( DbExecution request, @Nullable Void response, @Nullable Throwable error) { - if (error instanceof R2dbcException) { - return ((R2dbcException) error).getSqlState(); - } - return null; + return getErrorType(request, null, error); } @Nullable diff --git a/instrumentation/vertx/vertx-sql-client/vertx-sql-client-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/v5_0/VertxSqlClientTest.java b/instrumentation/vertx/vertx-sql-client/vertx-sql-client-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/v5_0/VertxSqlClientTest.java index 65b5c7ba1c69..83249e7ff220 100644 --- a/instrumentation/vertx/vertx-sql-client/vertx-sql-client-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/v5_0/VertxSqlClientTest.java +++ b/instrumentation/vertx/vertx-sql-client/vertx-sql-client-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/v5_0/VertxSqlClientTest.java @@ -1884,7 +1884,7 @@ private static void assertOracleConnectFailure(TraceAssert trace, Throwable erro equalTo(SERVER_ADDRESS, "127.0.0.1"), equalTo(SERVER_PORT, 1), equalTo(ERROR_TYPE, "66000"), - equalTo(DB_RESPONSE_STATUS_CODE, "66000"))); + equalTo(DB_RESPONSE_STATUS_CODE, null))); } private static void select(SqlClient client) throws Exception { diff --git a/instrumentation/vertx/vertx-sql-client/vertx-sql-client-5.0/javaagent/src/unitTests/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetterTest.java b/instrumentation/vertx/vertx-sql-client/vertx-sql-client-5.0/javaagent/src/unitTests/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetterTest.java new file mode 100644 index 000000000000..2d6558c623fd --- /dev/null +++ b/instrumentation/vertx/vertx-sql-client/vertx-sql-client-5.0/javaagent/src/unitTests/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetterTest.java @@ -0,0 +1,54 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.vertx.sqlclient.common.v4_0; + +import static org.assertj.core.api.Assertions.assertThat; + +import io.vertx.sqlclient.DatabaseException; +import java.io.IOException; +import java.net.ConnectException; +import java.sql.SQLException; +import org.junit.jupiter.api.Test; + +class VertxSqlClientAttributesGetterTest { + + private final VertxSqlClientAttributesGetter getter = new VertxSqlClientAttributesGetter(); + private final VertxSqlClientRequest request = + new VertxSqlClientRequest( + "select 1", VertxSqlClientInfo.createUnknown("oracle.db"), false, null); + + @Test + void omitsClientConnectionStatusWithoutChangingErrorType() { + SQLException cause = + new SQLException( + "No listener", + "66000", + 12541, + new IOException("Oracle network failure", new ConnectException("Connection refused"))); + DatabaseException error = new DatabaseException("No listener", 12541, "66000", cause) {}; + + assertThat(getter.getErrorType(request, null, error)).isEqualTo("66000"); + assertThat(getter.getDbResponseStatusCode(request, null, error)).isNull(); + } + + @Test + void keepsServerStatusWithoutTransportFailure() { + SQLException cause = new SQLException("Server failure", "66000", 12541); + DatabaseException error = new DatabaseException("Server failure", 12541, "66000", cause) {}; + + assertThat(getter.getErrorType(request, null, error)).isEqualTo("66000"); + assertThat(getter.getDbResponseStatusCode(request, null, error)).isEqualTo("66000"); + } + + @Test + void handlesCyclicCauseChain() { + SQLException cause = new SQLException("Server failure", "66000", 12541); + DatabaseException error = new DatabaseException("Server failure", 12541, "66000", cause) {}; + cause.initCause(error); + + assertThat(getter.getDbResponseStatusCode(request, null, error)).isEqualTo("66000"); + } +} diff --git a/instrumentation/vertx/vertx-sql-client/vertx-sql-client-common-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetter.java b/instrumentation/vertx/vertx-sql-client/vertx-sql-client-common-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetter.java index b33e362165a4..e5135091cce9 100644 --- a/instrumentation/vertx/vertx-sql-client/vertx-sql-client-common-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetter.java +++ b/instrumentation/vertx/vertx-sql-client/vertx-sql-client-common-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetter.java @@ -10,8 +10,10 @@ import io.opentelemetry.instrumentation.api.incubator.semconv.db.SqlClientAttributesGetter; import io.opentelemetry.instrumentation.api.incubator.semconv.db.SqlDialect; +import io.opentelemetry.instrumentation.api.internal.CauseUnwrapper; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; +import java.net.ConnectException; import java.util.Collection; import java.util.function.Function; import javax.annotation.Nullable; @@ -65,13 +67,19 @@ public Long getDbOperationBatchSize(VertxSqlClientRequest request) { @Override public String getErrorType( VertxSqlClientRequest request, @Nullable Void response, @Nullable Throwable error) { - return getDbResponseStatusCode(request, null, error); + return responseStatusExtractor.apply(error); } @Nullable @Override public String getDbResponseStatusCode( VertxSqlClientRequest request, @Nullable Void response, @Nullable Throwable error) { + if (error != null + && "oracle.db".equals(request.getDbSystemName()) + && CauseUnwrapper.unwrap(error, cause -> !(cause instanceof ConnectException)) + instanceof ConnectException) { + return null; + } return responseStatusExtractor.apply(error); } From 8b4c4af33a5ca964fd59ab430e78fdbd8c49c273 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 25 Oct 2026 00:33:43 +0000 Subject: [PATCH 06/33] Fix database failure status extraction gaps Co-authored-by: trask <218610+trask@users.noreply.github.com> --- .../rest/v5_0/ElasticsearchRest5Test.java | 68 ++++++++++++++++++ .../ElasticsearchDbAttributesGetterTest.java | 15 ++++ .../v5_0/ElasticsearchDbAttributesGetter.java | 4 ++ .../jdbc/internal/JdbcAttributesGetter.java | 9 +++ .../internal/JdbcAttributesGetterTest.java | 20 ++++++ .../AbstractJdbcInstrumentationTest.java | 4 +- .../rest/v1_0/OpenSearchRestSingletons.java | 9 +++ .../rest/v1_0/RestClientInstrumentation.java | 11 ++- .../rest/v3_0/OpenSearchRestSingletons.java | 9 +++ .../rest/v3_0/RestClientInstrumentation.java | 11 ++- .../common/v1_0/RestResponseListener.java | 14 +++- .../common/AbstractOpenSearchRestTest.java | 69 +++++++++++++++++++ .../VertxSqlClientAttributesGetterTest.java | 8 +++ .../v4_0/VertxSqlClientAttributesGetter.java | 18 +++-- 14 files changed, 253 insertions(+), 16 deletions(-) diff --git a/instrumentation/elasticsearch/elasticsearch-rest-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/v5_0/ElasticsearchRest5Test.java b/instrumentation/elasticsearch/elasticsearch-rest-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/v5_0/ElasticsearchRest5Test.java index aa84232985b9..6ad213f9b282 100644 --- a/instrumentation/elasticsearch/elasticsearch-rest-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/v5_0/ElasticsearchRest5Test.java +++ b/instrumentation/elasticsearch/elasticsearch-rest-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/v5_0/ElasticsearchRest5Test.java @@ -25,6 +25,7 @@ import static java.util.Collections.emptyMap; import static java.util.concurrent.TimeUnit.SECONDS; import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.catchThrowableOfType; import com.fasterxml.jackson.databind.ObjectMapper; import io.opentelemetry.api.trace.SpanKind; @@ -35,10 +36,12 @@ import java.io.IOException; import java.util.Map; import java.util.concurrent.CountDownLatch; +import java.util.concurrent.atomic.AtomicReference; import org.apache.http.HttpHost; import org.apache.http.entity.ContentType; import org.apache.http.entity.StringEntity; import org.elasticsearch.client.Response; +import org.elasticsearch.client.ResponseException; import org.elasticsearch.client.ResponseListener; import org.elasticsearch.client.RestClient; import org.junit.jupiter.api.BeforeAll; @@ -118,6 +121,71 @@ void recordsFailureResponseStatus() throws IOException { span -> span.hasName("HEAD").hasKind(SpanKind.CLIENT).hasParent(trace.getSpan(0)))); } + @Test + void recordsFailureResponseStatusFromException() throws IOException { + ResponseException error = + catchThrowableOfType( + () -> client.performRequest("GET", "/missing-index"), ResponseException.class); + + assertThat(error.getResponse().getStatusLine().getStatusCode()).isEqualTo(404); + testing.waitAndAssertTraces( + trace -> + trace.hasSpansSatisfyingExactly( + span -> + span.hasName(httpHost.getHostName() + ":" + httpHost.getPort()) + .hasKind(SpanKind.CLIENT) + .hasStatus(StatusData.error()) + .hasAttributesSatisfyingExactly( + equalTo(DB_SYSTEM_NAME, ELASTICSEARCH), + equalTo(DB_RESPONSE_STATUS_CODE, "404"), + equalTo(ERROR_TYPE, ResponseException.class.getName()), + equalTo(HTTP_REQUEST_METHOD, "GET"), + equalTo(SERVER_ADDRESS, httpHost.getHostName()), + equalTo(SERVER_PORT, httpHost.getPort())), + span -> span.hasName("GET").hasKind(SpanKind.CLIENT).hasParent(trace.getSpan(0)))); + } + + @Test + void recordsAsyncFailureResponseStatusFromException() throws InterruptedException { + AtomicReference exception = new AtomicReference<>(); + CountDownLatch countDownLatch = new CountDownLatch(1); + client.performRequestAsync( + "GET", + "/missing-index", + new ResponseListener() { + @Override + public void onSuccess(Response response) { + countDownLatch.countDown(); + } + + @Override + public void onFailure(Exception e) { + exception.set(e); + countDownLatch.countDown(); + } + }); + + assertThat(countDownLatch.await(10, SECONDS)).isTrue(); + assertThat(exception.get()).isInstanceOf(ResponseException.class); + assertThat(((ResponseException) exception.get()).getResponse().getStatusLine().getStatusCode()) + .isEqualTo(404); + testing.waitAndAssertTraces( + trace -> + trace.hasSpansSatisfyingExactly( + span -> + span.hasName(httpHost.getHostName() + ":" + httpHost.getPort()) + .hasKind(SpanKind.CLIENT) + .hasStatus(StatusData.error()) + .hasAttributesSatisfyingExactly( + equalTo(DB_SYSTEM_NAME, ELASTICSEARCH), + equalTo(DB_RESPONSE_STATUS_CODE, "404"), + equalTo(ERROR_TYPE, ResponseException.class.getName()), + equalTo(HTTP_REQUEST_METHOD, "GET"), + equalTo(SERVER_ADDRESS, httpHost.getHostName()), + equalTo(SERVER_PORT, httpHost.getPort())), + span -> span.hasName("GET").hasKind(SpanKind.CLIENT).hasParent(trace.getSpan(0)))); + } + @Test void elasticsearchStatus() throws IOException { Response response = client.performRequest("GET", "_cluster/health"); diff --git a/instrumentation/elasticsearch/elasticsearch-rest-common-5.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/common/v5_0/ElasticsearchDbAttributesGetterTest.java b/instrumentation/elasticsearch/elasticsearch-rest-common-5.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/common/v5_0/ElasticsearchDbAttributesGetterTest.java index a5f19090d90f..08c48616912a 100644 --- a/instrumentation/elasticsearch/elasticsearch-rest-common-5.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/common/v5_0/ElasticsearchDbAttributesGetterTest.java +++ b/instrumentation/elasticsearch/elasticsearch-rest-common-5.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/common/v5_0/ElasticsearchDbAttributesGetterTest.java @@ -25,6 +25,7 @@ import org.apache.http.entity.StringEntity; import org.apache.http.message.BasicStatusLine; import org.elasticsearch.client.Response; +import org.elasticsearch.client.ResponseException; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; @@ -62,6 +63,20 @@ void omitsResponseStatusWithoutResponse() { .isNull(); } + @Test + void getsResponseStatusFromResponseException() throws IOException { + ElasticsearchDbAttributesGetter getter = new ElasticsearchDbAttributesGetter(null); + ElasticsearchRestRequest request = searchRequest(null); + Response response = mock(Response.class); + when(response.getStatusLine()) + .thenReturn(new BasicStatusLine(new ProtocolVersion("HTTP", 1, 1), 404, "")); + ResponseException error = mock(ResponseException.class); + when(error.getResponse()).thenReturn(response); + + assertThat(getter.getDbResponseStatusCode(request, null, error)).isEqualTo("404"); + assertThat(getter.getErrorType(request, null, error)).isNull(); + } + /** Records the bodies it is given and returns whatever it was configured to return. */ private static class RecordingSanitizer implements UnaryOperator { final List sanitized = new ArrayList<>(); diff --git a/instrumentation/elasticsearch/elasticsearch-rest-common-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/common/v5_0/ElasticsearchDbAttributesGetter.java b/instrumentation/elasticsearch/elasticsearch-rest-common-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/common/v5_0/ElasticsearchDbAttributesGetter.java index 657a8c29e402..f8e46cf0cd18 100644 --- a/instrumentation/elasticsearch/elasticsearch-rest-common-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/common/v5_0/ElasticsearchDbAttributesGetter.java +++ b/instrumentation/elasticsearch/elasticsearch-rest-common-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/common/v5_0/ElasticsearchDbAttributesGetter.java @@ -20,6 +20,7 @@ import javax.annotation.Nullable; import org.apache.http.HttpEntity; import org.elasticsearch.client.Response; +import org.elasticsearch.client.ResponseException; /** * This class is internal and is hence not for public use. Its APIs are unstable and can change at @@ -152,6 +153,9 @@ public String getErrorType( @Nullable public String getDbResponseStatusCode( ElasticsearchRestRequest request, @Nullable Response response, @Nullable Throwable error) { + if (response == null && error instanceof ResponseException) { + response = ((ResponseException) error).getResponse(); + } if (response == null || response.getStatusLine().getStatusCode() < 400) { return null; } diff --git a/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcAttributesGetter.java b/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcAttributesGetter.java index c97618902385..61508b3786a9 100644 --- a/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcAttributesGetter.java +++ b/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcAttributesGetter.java @@ -22,6 +22,9 @@ */ public final class JdbcAttributesGetter implements SqlClientAttributesGetter { + private static final String H2_DATABASE = "h2database"; + private static final int H2_OBJECT_CLOSED_ERROR_CODE = 90007; + @Override public String getDbSystemName(DbRequest request) { return request.getDbInfo().getDbSystemName(); @@ -71,6 +74,12 @@ public String getErrorType( @Override public String getDbResponseStatusCode( DbRequest request, @Nullable Void response, @Nullable Throwable error) { + if (H2_DATABASE.equals(getDbSystemName(request)) + && error instanceof SQLException + && ((SQLException) error).getErrorCode() == H2_OBJECT_CLOSED_ERROR_CODE + && "90007".equals(((SQLException) error).getSQLState())) { + return null; + } if ("oracle.db".equals(getDbSystemName(request)) && error instanceof SQLException) { int errorCode = ((SQLException) error).getErrorCode(); // Oracle Statement.ensureOpen() generates these locally, before any server request. diff --git a/instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcAttributesGetterTest.java b/instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcAttributesGetterTest.java index a197e0e75a72..732ea36c3d02 100644 --- a/instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcAttributesGetterTest.java +++ b/instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcAttributesGetterTest.java @@ -14,6 +14,7 @@ import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DbSystemIncubatingValues.DERBY; import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DbSystemIncubatingValues.HSQLDB; import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DbSystemNameIncubatingValues.CLICKHOUSE; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DbSystemNameIncubatingValues.H2DATABASE; import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DbSystemNameIncubatingValues.IBM_DB2; import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DbSystemNameIncubatingValues.ORACLE_DB; import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DbSystemNameIncubatingValues.SAP_HANA; @@ -109,6 +110,25 @@ void keepsOtherDatabaseCodesThatOverlapOracleLocalCodes(int errorCode) { .isEqualTo(Integer.toString(errorCode)); } + @Test + void omitsH2LocalClosedConnectionCodeWithoutChangingErrorType() { + DbRequest request = + DbRequest.create(DbInfo.builder().dbSystemName(H2DATABASE).build(), "SELECT 1", false); + SQLException error = new SQLException("The object is already closed", "90007", 90007); + + assertThat(attributesGetter.getErrorType(request, null, error)).isEqualTo("90007"); + assertThat(attributesGetter.getDbResponseStatusCode(request, null, error)).isNull(); + } + + @Test + void keepsH2ClosedObjectCodeForOtherDatabaseSystems() { + DbRequest request = + DbRequest.create(DbInfo.builder().dbSystemName(POSTGRESQL).build(), "SELECT 1", false); + SQLException error = new SQLException("Server failure", "90007", 90007); + + assertThat(attributesGetter.getDbResponseStatusCode(request, null, error)).isEqualTo("90007"); + } + @Test void omitsResponseStatusWithoutSqlException() { DbRequest request = diff --git a/instrumentation/jdbc/testing/src/main/java/io/opentelemetry/instrumentation/jdbc/testing/AbstractJdbcInstrumentationTest.java b/instrumentation/jdbc/testing/src/main/java/io/opentelemetry/instrumentation/jdbc/testing/AbstractJdbcInstrumentationTest.java index 21c6e145f753..fe0d487f288d 100644 --- a/instrumentation/jdbc/testing/src/main/java/io/opentelemetry/instrumentation/jdbc/testing/AbstractJdbcInstrumentationTest.java +++ b/instrumentation/jdbc/testing/src/main/java/io/opentelemetry/instrumentation/jdbc/testing/AbstractJdbcInstrumentationTest.java @@ -2157,9 +2157,7 @@ void testFailedTransaction(String operation, ThrowingConsumer transa equalTo(DB_NAMESPACE, DATABASE_NAME_LOWER), equalTo(DB_OPERATION_NAME, operation), equalTo(ERROR_TYPE, Integer.toString(error.getErrorCode())), - equalTo( - DB_RESPONSE_STATUS_CODE, - Integer.toString(error.getErrorCode()))))); + equalTo(DB_RESPONSE_STATUS_CODE, null)))); if (emitExceptionAsLogs()) { testing() diff --git a/instrumentation/opensearch/opensearch-rest-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/v1_0/OpenSearchRestSingletons.java b/instrumentation/opensearch/opensearch-rest-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/v1_0/OpenSearchRestSingletons.java index d918d71a3708..6ae3e9a59923 100644 --- a/instrumentation/opensearch/opensearch-rest-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/v1_0/OpenSearchRestSingletons.java +++ b/instrumentation/opensearch/opensearch-rest-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/v1_0/OpenSearchRestSingletons.java @@ -11,6 +11,7 @@ import io.opentelemetry.javaagent.instrumentation.opensearch.rest.common.v1_0.OpenSearchRestResponse; import javax.annotation.Nullable; import org.opensearch.client.Response; +import org.opensearch.client.ResponseException; class OpenSearchRestSingletons { @@ -35,5 +36,13 @@ public int getStatusCode() { }; } + @Nullable + static OpenSearchRestResponse convertException(@Nullable Throwable error) { + if (error instanceof ResponseException) { + return convertResponse(((ResponseException) error).getResponse()); + } + return null; + } + private OpenSearchRestSingletons() {} } diff --git a/instrumentation/opensearch/opensearch-rest-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/v1_0/RestClientInstrumentation.java b/instrumentation/opensearch/opensearch-rest-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/v1_0/RestClientInstrumentation.java index 9558ef9c8e14..271a2d6da236 100644 --- a/instrumentation/opensearch/opensearch-rest-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/v1_0/RestClientInstrumentation.java +++ b/instrumentation/opensearch/opensearch-rest-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/v1_0/RestClientInstrumentation.java @@ -81,13 +81,20 @@ public ResponseListener wrapListener(ResponseListener responseListener) { instrumenter(), context, otelRequest, - OpenSearchRestSingletons::convertResponse); + OpenSearchRestSingletons::convertResponse, + OpenSearchRestSingletons::convertException); } public void endWithResponse(@Nullable Response response, @Nullable Throwable throwable) { scope.close(); instrumenter() - .end(context, otelRequest, OpenSearchRestSingletons.convertResponse(response), throwable); + .end( + context, + otelRequest, + response != null + ? OpenSearchRestSingletons.convertResponse(response) + : OpenSearchRestSingletons.convertException(throwable), + throwable); } public void endWithListener(@Nullable Throwable throwable) { diff --git a/instrumentation/opensearch/opensearch-rest-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/v3_0/OpenSearchRestSingletons.java b/instrumentation/opensearch/opensearch-rest-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/v3_0/OpenSearchRestSingletons.java index bb9e3a30b3de..642bed1a9a2d 100644 --- a/instrumentation/opensearch/opensearch-rest-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/v3_0/OpenSearchRestSingletons.java +++ b/instrumentation/opensearch/opensearch-rest-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/v3_0/OpenSearchRestSingletons.java @@ -11,6 +11,7 @@ import io.opentelemetry.javaagent.instrumentation.opensearch.rest.common.v1_0.OpenSearchRestResponse; import javax.annotation.Nullable; import org.opensearch.client.Response; +import org.opensearch.client.ResponseException; class OpenSearchRestSingletons { @@ -35,5 +36,13 @@ public int getStatusCode() { }; } + @Nullable + static OpenSearchRestResponse convertException(@Nullable Throwable error) { + if (error instanceof ResponseException) { + return convertResponse(((ResponseException) error).getResponse()); + } + return null; + } + private OpenSearchRestSingletons() {} } diff --git a/instrumentation/opensearch/opensearch-rest-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/v3_0/RestClientInstrumentation.java b/instrumentation/opensearch/opensearch-rest-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/v3_0/RestClientInstrumentation.java index 213f48e7a341..57b57ffe884f 100644 --- a/instrumentation/opensearch/opensearch-rest-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/v3_0/RestClientInstrumentation.java +++ b/instrumentation/opensearch/opensearch-rest-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/v3_0/RestClientInstrumentation.java @@ -81,13 +81,20 @@ public ResponseListener wrapListener(ResponseListener responseListener) { instrumenter(), context, otelRequest, - OpenSearchRestSingletons::convertResponse); + OpenSearchRestSingletons::convertResponse, + OpenSearchRestSingletons::convertException); } public void endWithResponse(@Nullable Response response, @Nullable Throwable throwable) { scope.close(); instrumenter() - .end(context, otelRequest, OpenSearchRestSingletons.convertResponse(response), throwable); + .end( + context, + otelRequest, + response != null + ? OpenSearchRestSingletons.convertResponse(response) + : OpenSearchRestSingletons.convertException(throwable), + throwable); } public void endWithListener(@Nullable Throwable throwable) { diff --git a/instrumentation/opensearch/opensearch-rest-common-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/v1_0/RestResponseListener.java b/instrumentation/opensearch/opensearch-rest-common-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/v1_0/RestResponseListener.java index bda55c249e36..17ff4073f07a 100644 --- a/instrumentation/opensearch/opensearch-rest-common-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/v1_0/RestResponseListener.java +++ b/instrumentation/opensearch/opensearch-rest-common-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/v1_0/RestResponseListener.java @@ -9,17 +9,25 @@ import io.opentelemetry.context.Scope; import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter; import java.util.function.Function; +import javax.annotation.Nullable; import org.opensearch.client.Response; import org.opensearch.client.ResponseListener; public class RestResponseListener implements ResponseListener { + @FunctionalInterface + public interface ExceptionConverter { + @Nullable + OpenSearchRestResponse convert(Throwable error); + } + private final ResponseListener listener; private final Context parentContext; private final Instrumenter instrumenter; private final Context context; private final OpenSearchRestRequest request; private final Function responseConverter; + private final ExceptionConverter exceptionConverter; public RestResponseListener( ResponseListener listener, @@ -27,13 +35,15 @@ public RestResponseListener( Instrumenter instrumenter, Context context, OpenSearchRestRequest request, - Function responseConverter) { + Function responseConverter, + ExceptionConverter exceptionConverter) { this.listener = listener; this.parentContext = parentContext; this.instrumenter = instrumenter; this.context = context; this.request = request; this.responseConverter = responseConverter; + this.exceptionConverter = exceptionConverter; } @Override @@ -46,7 +56,7 @@ public void onSuccess(Response response) { @Override public void onFailure(Exception e) { - instrumenter.end(context, request, null, e); + instrumenter.end(context, request, exceptionConverter.convert(e), e); try (Scope ignored = parentContext.makeCurrent()) { listener.onFailure(e); } diff --git a/instrumentation/opensearch/opensearch-rest-common-1.0/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/AbstractOpenSearchRestTest.java b/instrumentation/opensearch/opensearch-rest-common-1.0/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/AbstractOpenSearchRestTest.java index f9ae5000cddc..cab7b78fd19e 100644 --- a/instrumentation/opensearch/opensearch-rest-common-1.0/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/AbstractOpenSearchRestTest.java +++ b/instrumentation/opensearch/opensearch-rest-common-1.0/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/AbstractOpenSearchRestTest.java @@ -22,6 +22,7 @@ import static io.opentelemetry.semconv.UrlAttributes.URL_FULL; import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DbSystemNameIncubatingValues.OPENSEARCH; import static java.util.concurrent.TimeUnit.SECONDS; +import static org.assertj.core.api.Assertions.catchThrowableOfType; import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.instrumentation.testing.internal.AutoCleanupExtension; @@ -37,6 +38,7 @@ import org.junit.jupiter.api.extension.RegisterExtension; import org.opensearch.client.Request; import org.opensearch.client.Response; +import org.opensearch.client.ResponseException; import org.opensearch.client.ResponseListener; import org.opensearch.client.RestClient; import org.opensearch.testcontainers.OpensearchContainer; @@ -108,6 +110,73 @@ void recordsFailureResponseStatus() throws IOException { span.hasName("HEAD").hasKind(SpanKind.CLIENT).hasParent(trace.getSpan(0)))); } + @Test + void recordsFailureResponseStatusFromException() throws IOException { + ResponseException error = + catchThrowableOfType( + () -> client.performRequest(new Request("GET", "/missing-index")), + ResponseException.class); + assertThat(getResponseStatus(error.getResponse())).isEqualTo(404); + + getTesting() + .waitAndAssertTraces( + trace -> + trace.hasSpansSatisfyingExactly( + span -> + span.hasName("GET " + httpHost.getHost() + ":" + httpHost.getPort()) + .hasKind(SpanKind.CLIENT) + .hasAttributesSatisfyingExactly( + equalTo(DB_SYSTEM_NAME, OPENSEARCH), + equalTo(DB_OPERATION_NAME, "GET"), + equalTo(DB_RESPONSE_STATUS_CODE, "404"), + equalTo(ERROR_TYPE, "404"), + equalTo(SERVER_ADDRESS, httpHost.getHost()), + equalTo(SERVER_PORT, Long.valueOf(httpHost.getPort()))), + span -> + span.hasName("GET").hasKind(SpanKind.CLIENT).hasParent(trace.getSpan(0)))); + } + + @Test + void recordsAsyncFailureResponseStatusFromException() throws InterruptedException { + AtomicReference exception = new AtomicReference<>(); + CountDownLatch countDownLatch = new CountDownLatch(1); + client.performRequestAsync( + new Request("GET", "/missing-index"), + new ResponseListener() { + @Override + public void onSuccess(Response response) { + countDownLatch.countDown(); + } + + @Override + public void onFailure(Exception e) { + exception.set(e); + countDownLatch.countDown(); + } + }); + + assertThat(countDownLatch.await(10, SECONDS)).isTrue(); + assertThat(exception.get()).isInstanceOf(ResponseException.class); + assertThat(getResponseStatus(((ResponseException) exception.get()).getResponse())) + .isEqualTo(404); + getTesting() + .waitAndAssertTraces( + trace -> + trace.hasSpansSatisfyingExactly( + span -> + span.hasName("GET " + httpHost.getHost() + ":" + httpHost.getPort()) + .hasKind(SpanKind.CLIENT) + .hasAttributesSatisfyingExactly( + equalTo(DB_SYSTEM_NAME, OPENSEARCH), + equalTo(DB_OPERATION_NAME, "GET"), + equalTo(DB_RESPONSE_STATUS_CODE, "404"), + equalTo(ERROR_TYPE, "404"), + equalTo(SERVER_ADDRESS, httpHost.getHost()), + equalTo(SERVER_PORT, Long.valueOf(httpHost.getPort()))), + span -> + span.hasName("GET").hasKind(SpanKind.CLIENT).hasParent(trace.getSpan(0)))); + } + @Test void shouldGetStatusWithTraces() throws IOException { Response response = client.performRequest(new Request("GET", "_cluster/health")); diff --git a/instrumentation/vertx/vertx-sql-client/vertx-sql-client-5.0/javaagent/src/unitTests/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetterTest.java b/instrumentation/vertx/vertx-sql-client/vertx-sql-client-5.0/javaagent/src/unitTests/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetterTest.java index 2d6558c623fd..a5079c2385e9 100644 --- a/instrumentation/vertx/vertx-sql-client/vertx-sql-client-5.0/javaagent/src/unitTests/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetterTest.java +++ b/instrumentation/vertx/vertx-sql-client/vertx-sql-client-5.0/javaagent/src/unitTests/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetterTest.java @@ -43,6 +43,14 @@ void keepsServerStatusWithoutTransportFailure() { assertThat(getter.getDbResponseStatusCode(request, null, error)).isEqualTo("66000"); } + @Test + void omitsNullSqlStateWithoutChangingErrorType() { + DatabaseException error = new DatabaseException("Unknown SQLSTATE", 0, null) {}; + + assertThat(getter.getErrorType(request, null, error)).isEqualTo("null"); + assertThat(getter.getDbResponseStatusCode(request, null, error)).isNull(); + } + @Test void handlesCyclicCauseChain() { SQLException cause = new SQLException("Server failure", "66000", 12541); diff --git a/instrumentation/vertx/vertx-sql-client/vertx-sql-client-common-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetter.java b/instrumentation/vertx/vertx-sql-client/vertx-sql-client-common-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetter.java index e5135091cce9..37ee2e58fe4f 100644 --- a/instrumentation/vertx/vertx-sql-client/vertx-sql-client-common-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetter.java +++ b/instrumentation/vertx/vertx-sql-client/vertx-sql-client-common-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetter.java @@ -22,7 +22,9 @@ class VertxSqlClientAttributesGetter implements SqlClientAttributesGetter { private static final Function responseStatusExtractor = - createResponseStatusExtractor(); + createResponseStatusExtractor(false); + private static final Function dbResponseStatusExtractor = + createResponseStatusExtractor(true); @Override public String getDbSystemName(VertxSqlClientRequest request) { @@ -80,7 +82,7 @@ public String getDbResponseStatusCode( instanceof ConnectException) { return null; } - return responseStatusExtractor.apply(error); + return dbResponseStatusExtractor.apply(error); } @Override @@ -89,12 +91,13 @@ public boolean isParameterizedQuery(VertxSqlClientRequest request, int queryInde return request.isParameterizedQuery(); } - private static Function createResponseStatusExtractor() { + private static Function createResponseStatusExtractor(boolean preserveNull) { Function extractor = - responseStatusExtractor("io.vertx.sqlclient.DatabaseException", "getSqlState"); + responseStatusExtractor( + "io.vertx.sqlclient.DatabaseException", "getSqlState", preserveNull); // older versions only have this method Function fallback = - responseStatusExtractor("io.vertx.pgclient.PgException", "getCode"); + responseStatusExtractor("io.vertx.pgclient.PgException", "getCode", preserveNull); return error -> { String status = extractor.apply(error); return status != null ? status : fallback.apply(error); @@ -102,7 +105,7 @@ private static Function createResponseStatusExtractor() { } private static Function responseStatusExtractor( - String className, String methodName) { + String className, String methodName, boolean preserveNull) { try { // loaded via reflection, because this class is not available in all versions that we support Class exClass = Class.forName(className); @@ -111,7 +114,8 @@ private static Function responseStatusExtractor( return (error) -> { if (exClass.isInstance(error)) { try { - return String.valueOf(method.invoke(error)); // can be String or int + Object status = method.invoke(error); // can be String or int + return status == null && preserveNull ? null : String.valueOf(status); } catch (IllegalAccessException | InvocationTargetException ignored) { return null; } From af18e659df2cb5b6bc4162cc8410694b22aacd3f Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 25 Oct 2026 00:53:05 +0000 Subject: [PATCH 07/33] Preserve OpenSearch error type on failed responses Co-authored-by: trask <218610+trask@users.noreply.github.com> --- .../common/v1_0/OpenSearchRestAttributesGetterTest.java | 9 +++++++++ .../rest/common/v1_0/OpenSearchRestAttributesGetter.java | 4 ++-- .../rest/common/AbstractOpenSearchRestTest.java | 4 ++-- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/instrumentation/opensearch/opensearch-rest-common-1.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/v1_0/OpenSearchRestAttributesGetterTest.java b/instrumentation/opensearch/opensearch-rest-common-1.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/v1_0/OpenSearchRestAttributesGetterTest.java index e0265f03ae46..f3322625f1ff 100644 --- a/instrumentation/opensearch/opensearch-rest-common-1.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/v1_0/OpenSearchRestAttributesGetterTest.java +++ b/instrumentation/opensearch/opensearch-rest-common-1.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/v1_0/OpenSearchRestAttributesGetterTest.java @@ -33,4 +33,13 @@ void omitsResponseStatusWithoutResponse() { assertThat(getter.getDbResponseStatusCode(request, null, new IllegalStateException("test"))) .isNull(); } + + @Test + void responseStatusDoesNotChangeErrorTypeForExceptions() { + OpenSearchRestResponse response = () -> 404; + IllegalStateException error = new IllegalStateException("test"); + + assertThat(getter.getDbResponseStatusCode(request, response, error)).isEqualTo("404"); + assertThat(getter.getErrorType(request, response, error)).isNull(); + } } diff --git a/instrumentation/opensearch/opensearch-rest-common-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/v1_0/OpenSearchRestAttributesGetter.java b/instrumentation/opensearch/opensearch-rest-common-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/v1_0/OpenSearchRestAttributesGetter.java index 5671ec1fbf16..214a66780792 100644 --- a/instrumentation/opensearch/opensearch-rest-common-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/v1_0/OpenSearchRestAttributesGetter.java +++ b/instrumentation/opensearch/opensearch-rest-common-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/v1_0/OpenSearchRestAttributesGetter.java @@ -42,7 +42,7 @@ public String getErrorType( @Nullable OpenSearchRestResponse response, @Nullable Throwable error) { - if (response != null) { + if (error == null && response != null) { int statusCode = response.getStatusCode(); if (statusCode >= 400 || statusCode < 100) { return Integer.toString(statusCode); @@ -60,7 +60,7 @@ public String getDbResponseStatusCode( if (response == null || response.getStatusCode() < 400) { return null; } - return getErrorType(request, response, error); + return Integer.toString(response.getStatusCode()); } @Override diff --git a/instrumentation/opensearch/opensearch-rest-common-1.0/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/AbstractOpenSearchRestTest.java b/instrumentation/opensearch/opensearch-rest-common-1.0/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/AbstractOpenSearchRestTest.java index cab7b78fd19e..85347294f14e 100644 --- a/instrumentation/opensearch/opensearch-rest-common-1.0/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/AbstractOpenSearchRestTest.java +++ b/instrumentation/opensearch/opensearch-rest-common-1.0/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/AbstractOpenSearchRestTest.java @@ -129,7 +129,7 @@ void recordsFailureResponseStatusFromException() throws IOException { equalTo(DB_SYSTEM_NAME, OPENSEARCH), equalTo(DB_OPERATION_NAME, "GET"), equalTo(DB_RESPONSE_STATUS_CODE, "404"), - equalTo(ERROR_TYPE, "404"), + equalTo(ERROR_TYPE, ResponseException.class.getName()), equalTo(SERVER_ADDRESS, httpHost.getHost()), equalTo(SERVER_PORT, Long.valueOf(httpHost.getPort()))), span -> @@ -170,7 +170,7 @@ public void onFailure(Exception e) { equalTo(DB_SYSTEM_NAME, OPENSEARCH), equalTo(DB_OPERATION_NAME, "GET"), equalTo(DB_RESPONSE_STATUS_CODE, "404"), - equalTo(ERROR_TYPE, "404"), + equalTo(ERROR_TYPE, ResponseException.class.getName()), equalTo(SERVER_ADDRESS, httpHost.getHost()), equalTo(SERVER_PORT, Long.valueOf(httpHost.getPort()))), span -> From d4014281999e9f5379b959c0d64df5738725db08 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 25 Oct 2026 03:56:30 +0000 Subject: [PATCH 08/33] Separate database status extraction from classification Co-authored-by: trask <218610+trask@users.noreply.github.com> --- .../internal/DynamoDbAttributesGetter.java | 7 ++- .../v0_5/ClickHouseErrorCodeExtractor.java | 7 ++- .../v5_0/ElasticsearchDbAttributesGetter.java | 5 +- .../jdbc/internal/JdbcAttributesGetter.java | 33 +++++++------ .../v4_0/LettuceBatchAttributesGetter.java | 4 +- .../v4_0/LettuceDbAttributesGetter.java | 4 +- .../lettuce/v4_0/LettuceRedisErrorType.java | 2 +- .../v5_0/LettuceBatchAttributesGetter.java | 4 +- .../v5_0/LettuceDbAttributesGetter.java | 4 +- .../lettuce/v5_0/LettuceRedisErrorType.java | 2 +- .../internal/R2dbcSqlAttributesGetter.java | 15 ++++-- .../v1_8/RediscalaAttributesGetter.java | 7 ++- .../v2_12/SpymemcachedAttributesGetter.java | 46 +++++++++++++------ .../VertxRedisClientAttributesGetter.java | 4 +- .../v4_0/VertxRedisClientError.java | 2 +- 15 files changed, 96 insertions(+), 50 deletions(-) diff --git a/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/internal/DynamoDbAttributesGetter.java b/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/internal/DynamoDbAttributesGetter.java index 39ef9b4481f9..90ed4afc00ec 100644 --- a/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/internal/DynamoDbAttributesGetter.java +++ b/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/internal/DynamoDbAttributesGetter.java @@ -72,7 +72,7 @@ public String getDbResponseStatusCode( ExecutionAttributes executionAttributes, @Nullable Response response, @Nullable Throwable error) { - return getErrorType(executionAttributes, response, error); + return getServiceErrorCode(error); } @Override @@ -81,6 +81,11 @@ public String getErrorType( ExecutionAttributes executionAttributes, @Nullable Response response, @Nullable Throwable error) { + return getServiceErrorCode(error); + } + + @Nullable + private static String getServiceErrorCode(@Nullable Throwable error) { if (!(error instanceof AwsServiceException)) { return null; } diff --git a/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv1/v0_5/ClickHouseErrorCodeExtractor.java b/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv1/v0_5/ClickHouseErrorCodeExtractor.java index 12a13a13ac7e..439c2c5ffb86 100644 --- a/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv1/v0_5/ClickHouseErrorCodeExtractor.java +++ b/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv1/v0_5/ClickHouseErrorCodeExtractor.java @@ -17,6 +17,11 @@ final class ClickHouseErrorCodeExtractor { @Nullable static String getErrorType(@Nullable Throwable error) { + return getNumericErrorCode(error); + } + + @Nullable + private static String getNumericErrorCode(@Nullable Throwable error) { if (error instanceof ClickHouseException) { int errorCode = ((ClickHouseException) error).getErrorCode(); return errorCode == 0 ? null : Integer.toString(errorCode); @@ -47,7 +52,7 @@ static String getDbResponseStatusCode(@Nullable Throwable error) { return null; } } - return getErrorType(error); + return getNumericErrorCode(error); } private ClickHouseErrorCodeExtractor() {} diff --git a/instrumentation/elasticsearch/elasticsearch-rest-common-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/common/v5_0/ElasticsearchDbAttributesGetter.java b/instrumentation/elasticsearch/elasticsearch-rest-common-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/common/v5_0/ElasticsearchDbAttributesGetter.java index f8e46cf0cd18..40340a8a1852 100644 --- a/instrumentation/elasticsearch/elasticsearch-rest-common-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/common/v5_0/ElasticsearchDbAttributesGetter.java +++ b/instrumentation/elasticsearch/elasticsearch-rest-common-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/common/v5_0/ElasticsearchDbAttributesGetter.java @@ -156,10 +156,11 @@ public String getDbResponseStatusCode( if (response == null && error instanceof ResponseException) { response = ((ResponseException) error).getResponse(); } - if (response == null || response.getStatusLine().getStatusCode() < 400) { + if (response == null) { return null; } - return getErrorType(request, response, error); + int statusCode = response.getStatusLine().getStatusCode(); + return statusCode >= 400 ? Integer.toString(statusCode) : null; } @Override diff --git a/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcAttributesGetter.java b/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcAttributesGetter.java index 61508b3786a9..c6f84cee1abb 100644 --- a/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcAttributesGetter.java +++ b/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcAttributesGetter.java @@ -55,19 +55,7 @@ public Long getDbOperationBatchSize(DbRequest request) { @Override public String getErrorType( DbRequest request, @Nullable Void response, @Nullable Throwable error) { - if (error instanceof SQLException) { - SQLException sqlException = (SQLException) error; - int errorCode = sqlException.getErrorCode(); - if (errorCode != 0) { - return Integer.toString(errorCode); - } - String sqlState = sqlException.getSQLState(); - if (sqlState == null || sqlState.isEmpty() || sqlState.equals("00000")) { - return null; - } - return sqlState; - } - return null; + return getSqlExceptionCode(error); } @Nullable @@ -87,7 +75,24 @@ public String getDbResponseStatusCode( return null; } } - return getErrorType(request, null, error); + return getSqlExceptionCode(error); + } + + @Nullable + private static String getSqlExceptionCode(@Nullable Throwable error) { + if (!(error instanceof SQLException)) { + return null; + } + SQLException sqlException = (SQLException) error; + int errorCode = sqlException.getErrorCode(); + if (errorCode != 0) { + return Integer.toString(errorCode); + } + String sqlState = sqlException.getSQLState(); + if (sqlState == null || sqlState.isEmpty() || sqlState.equals("00000")) { + return null; + } + return sqlState; } @Override diff --git a/instrumentation/lettuce/lettuce-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceBatchAttributesGetter.java b/instrumentation/lettuce/lettuce-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceBatchAttributesGetter.java index daacd1ba1c9f..82bd17c31151 100644 --- a/instrumentation/lettuce/lettuce-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceBatchAttributesGetter.java +++ b/instrumentation/lettuce/lettuce-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceBatchAttributesGetter.java @@ -46,14 +46,14 @@ public Long getDbOperationBatchSize(LettuceBatchRequest request) { @Override public String getDbResponseStatusCode( LettuceBatchRequest request, @Nullable Void response, @Nullable Throwable error) { - return LettuceRedisErrorType.getErrorType(error); + return LettuceRedisErrorType.getResponseStatusCode(error); } @Nullable @Override public String getErrorType( LettuceBatchRequest request, @Nullable Void response, @Nullable Throwable error) { - return LettuceRedisErrorType.getErrorType(error); + return LettuceRedisErrorType.getResponseStatusCode(error); } @Nullable diff --git a/instrumentation/lettuce/lettuce-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceDbAttributesGetter.java b/instrumentation/lettuce/lettuce-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceDbAttributesGetter.java index 91b641e0c870..d092a32d0e11 100644 --- a/instrumentation/lettuce/lettuce-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceDbAttributesGetter.java +++ b/instrumentation/lettuce/lettuce-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceDbAttributesGetter.java @@ -43,14 +43,14 @@ public String getDbOperationName(RedisCommand request) { @Override public String getDbResponseStatusCode( RedisCommand request, @Nullable Void response, @Nullable Throwable error) { - return LettuceRedisErrorType.getErrorType(error); + return LettuceRedisErrorType.getResponseStatusCode(error); } @Nullable @Override public String getErrorType( RedisCommand request, @Nullable Void response, @Nullable Throwable error) { - return LettuceRedisErrorType.getErrorType(error); + return LettuceRedisErrorType.getResponseStatusCode(error); } @Nullable diff --git a/instrumentation/lettuce/lettuce-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceRedisErrorType.java b/instrumentation/lettuce/lettuce-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceRedisErrorType.java index f159be9e3707..665dea7431b3 100644 --- a/instrumentation/lettuce/lettuce-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceRedisErrorType.java +++ b/instrumentation/lettuce/lettuce-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceRedisErrorType.java @@ -12,7 +12,7 @@ public final class LettuceRedisErrorType { @Nullable - static String getErrorType(@Nullable Throwable error) { + static String getResponseStatusCode(@Nullable Throwable error) { if (!(error instanceof RedisCommandExecutionException)) { return null; } diff --git a/instrumentation/lettuce/lettuce-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceBatchAttributesGetter.java b/instrumentation/lettuce/lettuce-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceBatchAttributesGetter.java index cb6d2752821d..7b764c62a2b2 100644 --- a/instrumentation/lettuce/lettuce-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceBatchAttributesGetter.java +++ b/instrumentation/lettuce/lettuce-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceBatchAttributesGetter.java @@ -46,14 +46,14 @@ public Long getDbOperationBatchSize(LettuceBatchRequest request) { @Override public String getDbResponseStatusCode( LettuceBatchRequest request, @Nullable Void response, @Nullable Throwable error) { - return LettuceRedisErrorType.getErrorType(error); + return LettuceRedisErrorType.getResponseStatusCode(error); } @Nullable @Override public String getErrorType( LettuceBatchRequest request, @Nullable Void response, @Nullable Throwable error) { - return LettuceRedisErrorType.getErrorType(error); + return LettuceRedisErrorType.getResponseStatusCode(error); } @Nullable diff --git a/instrumentation/lettuce/lettuce-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceDbAttributesGetter.java b/instrumentation/lettuce/lettuce-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceDbAttributesGetter.java index 273425156c6b..a1d132e46b6b 100644 --- a/instrumentation/lettuce/lettuce-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceDbAttributesGetter.java +++ b/instrumentation/lettuce/lettuce-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceDbAttributesGetter.java @@ -60,14 +60,14 @@ public String getDbOperationName(RedisCommand request) { @Override public String getDbResponseStatusCode( RedisCommand request, @Nullable Void response, @Nullable Throwable error) { - return LettuceRedisErrorType.getErrorType(error); + return LettuceRedisErrorType.getResponseStatusCode(error); } @Nullable @Override public String getErrorType( RedisCommand request, @Nullable Void response, @Nullable Throwable error) { - return LettuceRedisErrorType.getErrorType(error); + return LettuceRedisErrorType.getResponseStatusCode(error); } @Nullable diff --git a/instrumentation/lettuce/lettuce-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceRedisErrorType.java b/instrumentation/lettuce/lettuce-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceRedisErrorType.java index 79b1b0d610d6..3c7161b9625a 100644 --- a/instrumentation/lettuce/lettuce-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceRedisErrorType.java +++ b/instrumentation/lettuce/lettuce-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceRedisErrorType.java @@ -12,7 +12,7 @@ public final class LettuceRedisErrorType { @Nullable - static String getErrorType(@Nullable Throwable error) { + static String getResponseStatusCode(@Nullable Throwable error) { if (!(error instanceof RedisCommandExecutionException)) { return null; } diff --git a/instrumentation/r2dbc-1.0/library/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/internal/R2dbcSqlAttributesGetter.java b/instrumentation/r2dbc-1.0/library/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/internal/R2dbcSqlAttributesGetter.java index 6985617d6a7b..2d72b759e78d 100644 --- a/instrumentation/r2dbc-1.0/library/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/internal/R2dbcSqlAttributesGetter.java +++ b/instrumentation/r2dbc-1.0/library/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/internal/R2dbcSqlAttributesGetter.java @@ -51,17 +51,22 @@ public Long getDbOperationBatchSize(DbExecution request) { @Override public String getErrorType( DbExecution request, @Nullable Void response, @Nullable Throwable error) { - if (error instanceof R2dbcException) { - return ((R2dbcException) error).getSqlState(); - } - return null; + return getSqlState(error); } @Nullable @Override public String getDbResponseStatusCode( DbExecution request, @Nullable Void response, @Nullable Throwable error) { - return getErrorType(request, null, error); + return getSqlState(error); + } + + @Nullable + private static String getSqlState(@Nullable Throwable error) { + if (error instanceof R2dbcException) { + return ((R2dbcException) error).getSqlState(); + } + return null; } @Nullable diff --git a/instrumentation/rediscala-1.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rediscala/v1_8/RediscalaAttributesGetter.java b/instrumentation/rediscala-1.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rediscala/v1_8/RediscalaAttributesGetter.java index b8c61bf70d61..09a2b6a5561e 100644 --- a/instrumentation/rediscala-1.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rediscala/v1_8/RediscalaAttributesGetter.java +++ b/instrumentation/rediscala-1.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rediscala/v1_8/RediscalaAttributesGetter.java @@ -49,13 +49,18 @@ public Long getDbOperationBatchSize(RediscalaRequest request) { @Override public String getDbResponseStatusCode( RediscalaRequest request, @Nullable Void response, @Nullable Throwable error) { - return getErrorType(request, null, error); + return getRedisErrorCode(error); } @Nullable @Override public String getErrorType( RediscalaRequest request, @Nullable Void unused, @Nullable Throwable error) { + return getRedisErrorCode(error); + } + + @Nullable + private static String getRedisErrorCode(@Nullable Throwable error) { // Rediscala wraps decoded Redis error replies in ReplyErrorException. RESP errors start with an // error prefix; a missing prefix preserves the shared exception-class fallback. // https://redis.io/docs/latest/develop/reference/protocol-spec/#resp-errors diff --git a/instrumentation/spymemcached-2.12/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spymemcached/v2_12/SpymemcachedAttributesGetter.java b/instrumentation/spymemcached-2.12/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spymemcached/v2_12/SpymemcachedAttributesGetter.java index 42076b3dfd46..869bf39a4ee5 100644 --- a/instrumentation/spymemcached-2.12/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spymemcached/v2_12/SpymemcachedAttributesGetter.java +++ b/instrumentation/spymemcached-2.12/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spymemcached/v2_12/SpymemcachedAttributesGetter.java @@ -42,27 +42,34 @@ public String getDbOperationName(SpymemcachedRequest spymemcachedRequest) { @Nullable public String getDbResponseStatusCode( SpymemcachedRequest request, @Nullable Object response, @Nullable Throwable error) { - String code = getErrorType(request, response, error); - if (StatusCode.TIMEDOUT.name().equals(code) - || StatusCode.INTERRUPTED.name().equals(code) - || StatusCode.ERR_CLIENT.name().equals(code)) { + OperationStatus status = getOperationStatus(response, error); + if (status == null || status.isSuccess()) { + return null; + } + StatusCode code = status.getStatusCode(); + if (code == null) { return null; } - return code; + switch (code) { + case SUCCESS: + case ERR_NOT_FOUND: + case ERR_EXISTS: + case ERR_NOT_STORED: + case CANCELLED: + case TIMEDOUT: + case INTERRUPTED: + case ERR_CLIENT: + return null; + default: + return code.name(); + } } @Override @Nullable public String getErrorType( SpymemcachedRequest request, @Nullable Object response, @Nullable Throwable error) { - if (error != null || !(response instanceof OperationFuture)) { - return null; - } - OperationFuture future = (OperationFuture) response; - if (future.isCancelled()) { - return null; - } - OperationStatus status = future.getStatus(); + OperationStatus status = getOperationStatus(response, error); if (status == null || status.isSuccess()) { return null; } @@ -82,6 +89,19 @@ public String getErrorType( } } + @Nullable + private static OperationStatus getOperationStatus( + @Nullable Object response, @Nullable Throwable error) { + if (error != null || !(response instanceof OperationFuture)) { + return null; + } + OperationFuture future = (OperationFuture) response; + if (future.isCancelled()) { + return null; + } + return future.getStatus(); + } + @Override @Nullable public InetSocketAddress getNetworkPeerInetSocketAddress( diff --git a/instrumentation/vertx/vertx-redis-client/vertx-redis-client-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/redisclient/v4_0/VertxRedisClientAttributesGetter.java b/instrumentation/vertx/vertx-redis-client/vertx-redis-client-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/redisclient/v4_0/VertxRedisClientAttributesGetter.java index a828af9eaf30..845e1df6ebc8 100644 --- a/instrumentation/vertx/vertx-redis-client/vertx-redis-client-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/redisclient/v4_0/VertxRedisClientAttributesGetter.java +++ b/instrumentation/vertx/vertx-redis-client/vertx-redis-client-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/redisclient/v4_0/VertxRedisClientAttributesGetter.java @@ -78,13 +78,13 @@ public Integer getNetworkPeerPort(VertxRedisClientRequest request, @Nullable Voi @Nullable public String getDbResponseStatusCode( VertxRedisClientRequest request, @Nullable Void response, @Nullable Throwable error) { - return VertxRedisClientError.getErrorType(error); + return VertxRedisClientError.getResponseStatusCode(error); } @Override @Nullable public String getErrorType( VertxRedisClientRequest request, @Nullable Void response, @Nullable Throwable error) { - return VertxRedisClientError.getErrorType(error); + return VertxRedisClientError.getResponseStatusCode(error); } } diff --git a/instrumentation/vertx/vertx-redis-client/vertx-redis-client-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/redisclient/v4_0/VertxRedisClientError.java b/instrumentation/vertx/vertx-redis-client/vertx-redis-client-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/redisclient/v4_0/VertxRedisClientError.java index 2e668cecbc5f..b3c9c999cfd3 100644 --- a/instrumentation/vertx/vertx-redis-client/vertx-redis-client-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/redisclient/v4_0/VertxRedisClientError.java +++ b/instrumentation/vertx/vertx-redis-client/vertx-redis-client-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/redisclient/v4_0/VertxRedisClientError.java @@ -39,7 +39,7 @@ public static void captureServerError(ErrorType error) { } @Nullable - static String getErrorType(@Nullable Throwable error) { + static String getResponseStatusCode(@Nullable Throwable error) { return error instanceof ErrorType ? SERVER_ERROR.get((ErrorType) error) : null; } From 73442092e30d1c7903ce4c38080451daa5deb804 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 25 Oct 2026 04:40:23 +0000 Subject: [PATCH 09/33] Decouple database response status extraction Co-authored-by: trask <218610+trask@users.noreply.github.com> --- .../internal/MongoDbAttributesGetter.java | 11 +++++++--- .../rest/v1_0/OpenSearchRestSingletons.java | 9 ++++++--- .../rest/v1_0/RestClientInstrumentation.java | 11 ++-------- .../rest/v3_0/OpenSearchRestSingletons.java | 9 ++++++--- .../rest/v3_0/RestClientInstrumentation.java | 11 ++-------- .../OpenSearchRestAttributesGetterTest.java | 15 ++++++++++++-- .../v1_0/OpenSearchRestAttributesGetter.java | 20 ++++++++++++++++--- .../OpenSearchRestInstrumenterFactory.java | 12 +++++++++-- .../common/v1_0/RestResponseListener.java | 14 ++----------- 9 files changed, 66 insertions(+), 46 deletions(-) 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 cdf5adf6c1c0..7c5e88da827e 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 @@ -179,7 +179,7 @@ public String getErrorType( CommandStartedEvent request, @Nullable CommandSucceededEvent response, @Nullable Throwable error) { - return getDbResponseStatusCode(request, response, error); + return getServerErrorCode(response, error); } @Nullable @@ -188,6 +188,12 @@ public String getDbResponseStatusCode( CommandStartedEvent request, @Nullable CommandSucceededEvent response, @Nullable Throwable error) { + return getServerErrorCode(response, error); + } + + @Nullable + private static String getServerErrorCode( + @Nullable CommandSucceededEvent response, @Nullable Throwable error) { Integer writeErrorCode = getWriteErrorCode(response); if (writeErrorCode != null) { return writeErrorCode.toString(); @@ -195,8 +201,7 @@ public String getDbResponseStatusCode( if (error instanceof MongoException) { // MongoException.getCode() only returns a real server error code (a positive value) when the // exception came from a server command error. For client-side exceptions the driver uses - // negative sentinels (e.g. -2, -3, -4), which are meaningless as an error.type. Returning - // null in that case lets the shared extractor fall back to the exception class name. + // negative sentinels (e.g. -2, -3, -4), which are not protocol response codes. int code = ((MongoException) error).getCode(); if (code > 0) { return Integer.toString(code); diff --git a/instrumentation/opensearch/opensearch-rest-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/v1_0/OpenSearchRestSingletons.java b/instrumentation/opensearch/opensearch-rest-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/v1_0/OpenSearchRestSingletons.java index 6ae3e9a59923..83efc9d51c97 100644 --- a/instrumentation/opensearch/opensearch-rest-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/v1_0/OpenSearchRestSingletons.java +++ b/instrumentation/opensearch/opensearch-rest-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/v1_0/OpenSearchRestSingletons.java @@ -16,7 +16,9 @@ class OpenSearchRestSingletons { private static final Instrumenter instrumenter = - OpenSearchRestInstrumenterFactory.create("io.opentelemetry.opensearch-rest-1.0"); + OpenSearchRestInstrumenterFactory.create( + "io.opentelemetry.opensearch-rest-1.0", + OpenSearchRestSingletons::getStatusCodeFromException); static Instrumenter instrumenter() { return instrumenter; @@ -37,9 +39,10 @@ public int getStatusCode() { } @Nullable - static OpenSearchRestResponse convertException(@Nullable Throwable error) { + static Integer getStatusCodeFromException(Throwable error) { if (error instanceof ResponseException) { - return convertResponse(((ResponseException) error).getResponse()); + Response response = ((ResponseException) error).getResponse(); + return response != null ? response.getStatusLine().getStatusCode() : null; } return null; } diff --git a/instrumentation/opensearch/opensearch-rest-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/v1_0/RestClientInstrumentation.java b/instrumentation/opensearch/opensearch-rest-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/v1_0/RestClientInstrumentation.java index 271a2d6da236..9558ef9c8e14 100644 --- a/instrumentation/opensearch/opensearch-rest-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/v1_0/RestClientInstrumentation.java +++ b/instrumentation/opensearch/opensearch-rest-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/v1_0/RestClientInstrumentation.java @@ -81,20 +81,13 @@ public ResponseListener wrapListener(ResponseListener responseListener) { instrumenter(), context, otelRequest, - OpenSearchRestSingletons::convertResponse, - OpenSearchRestSingletons::convertException); + OpenSearchRestSingletons::convertResponse); } public void endWithResponse(@Nullable Response response, @Nullable Throwable throwable) { scope.close(); instrumenter() - .end( - context, - otelRequest, - response != null - ? OpenSearchRestSingletons.convertResponse(response) - : OpenSearchRestSingletons.convertException(throwable), - throwable); + .end(context, otelRequest, OpenSearchRestSingletons.convertResponse(response), throwable); } public void endWithListener(@Nullable Throwable throwable) { diff --git a/instrumentation/opensearch/opensearch-rest-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/v3_0/OpenSearchRestSingletons.java b/instrumentation/opensearch/opensearch-rest-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/v3_0/OpenSearchRestSingletons.java index 642bed1a9a2d..22c3c9532b0c 100644 --- a/instrumentation/opensearch/opensearch-rest-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/v3_0/OpenSearchRestSingletons.java +++ b/instrumentation/opensearch/opensearch-rest-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/v3_0/OpenSearchRestSingletons.java @@ -16,7 +16,9 @@ class OpenSearchRestSingletons { private static final Instrumenter instrumenter = - OpenSearchRestInstrumenterFactory.create("io.opentelemetry.opensearch-rest-3.0"); + OpenSearchRestInstrumenterFactory.create( + "io.opentelemetry.opensearch-rest-3.0", + OpenSearchRestSingletons::getStatusCodeFromException); static Instrumenter instrumenter() { return instrumenter; @@ -37,9 +39,10 @@ public int getStatusCode() { } @Nullable - static OpenSearchRestResponse convertException(@Nullable Throwable error) { + static Integer getStatusCodeFromException(Throwable error) { if (error instanceof ResponseException) { - return convertResponse(((ResponseException) error).getResponse()); + Response response = ((ResponseException) error).getResponse(); + return response != null ? response.getStatusLine().getStatusCode() : null; } return null; } diff --git a/instrumentation/opensearch/opensearch-rest-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/v3_0/RestClientInstrumentation.java b/instrumentation/opensearch/opensearch-rest-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/v3_0/RestClientInstrumentation.java index 57b57ffe884f..213f48e7a341 100644 --- a/instrumentation/opensearch/opensearch-rest-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/v3_0/RestClientInstrumentation.java +++ b/instrumentation/opensearch/opensearch-rest-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/v3_0/RestClientInstrumentation.java @@ -81,20 +81,13 @@ public ResponseListener wrapListener(ResponseListener responseListener) { instrumenter(), context, otelRequest, - OpenSearchRestSingletons::convertResponse, - OpenSearchRestSingletons::convertException); + OpenSearchRestSingletons::convertResponse); } public void endWithResponse(@Nullable Response response, @Nullable Throwable throwable) { scope.close(); instrumenter() - .end( - context, - otelRequest, - response != null - ? OpenSearchRestSingletons.convertResponse(response) - : OpenSearchRestSingletons.convertException(throwable), - throwable); + .end(context, otelRequest, OpenSearchRestSingletons.convertResponse(response), throwable); } public void endWithListener(@Nullable Throwable throwable) { diff --git a/instrumentation/opensearch/opensearch-rest-common-1.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/v1_0/OpenSearchRestAttributesGetterTest.java b/instrumentation/opensearch/opensearch-rest-common-1.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/v1_0/OpenSearchRestAttributesGetterTest.java index f3322625f1ff..c627fdec4d77 100644 --- a/instrumentation/opensearch/opensearch-rest-common-1.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/v1_0/OpenSearchRestAttributesGetterTest.java +++ b/instrumentation/opensearch/opensearch-rest-common-1.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/v1_0/OpenSearchRestAttributesGetterTest.java @@ -13,7 +13,8 @@ class OpenSearchRestAttributesGetterTest { - private final OpenSearchRestAttributesGetter getter = new OpenSearchRestAttributesGetter(); + private final OpenSearchRestAttributesGetter getter = + new OpenSearchRestAttributesGetter(error -> null); private final OpenSearchRestRequest request = OpenSearchRestRequest.create("GET", null); @ParameterizedTest @@ -36,10 +37,20 @@ void omitsResponseStatusWithoutResponse() { @Test void responseStatusDoesNotChangeErrorTypeForExceptions() { + OpenSearchRestAttributesGetter getter = new OpenSearchRestAttributesGetter(error -> 503); OpenSearchRestResponse response = () -> 404; IllegalStateException error = new IllegalStateException("test"); assertThat(getter.getDbResponseStatusCode(request, response, error)).isEqualTo("404"); - assertThat(getter.getErrorType(request, response, error)).isNull(); + assertThat(getter.getErrorType(request, response, error)).isEqualTo("404"); + } + + @Test + void responseStatusCanBeExtractedFromErrorIndependentlyOfErrorType() { + OpenSearchRestAttributesGetter getter = new OpenSearchRestAttributesGetter(error -> 503); + IllegalStateException error = new IllegalStateException("test"); + + assertThat(getter.getDbResponseStatusCode(request, null, error)).isEqualTo("503"); + assertThat(getter.getErrorType(request, null, error)).isNull(); } } diff --git a/instrumentation/opensearch/opensearch-rest-common-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/v1_0/OpenSearchRestAttributesGetter.java b/instrumentation/opensearch/opensearch-rest-common-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/v1_0/OpenSearchRestAttributesGetter.java index 214a66780792..f873ce3fbb11 100644 --- a/instrumentation/opensearch/opensearch-rest-common-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/v1_0/OpenSearchRestAttributesGetter.java +++ b/instrumentation/opensearch/opensearch-rest-common-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/v1_0/OpenSearchRestAttributesGetter.java @@ -13,6 +13,14 @@ final class OpenSearchRestAttributesGetter implements DbClientAttributesGetter { + private final OpenSearchRestInstrumenterFactory.ExceptionStatusCodeExtractor + exceptionStatusCodeExtractor; + + OpenSearchRestAttributesGetter( + OpenSearchRestInstrumenterFactory.ExceptionStatusCodeExtractor exceptionStatusCodeExtractor) { + this.exceptionStatusCodeExtractor = exceptionStatusCodeExtractor; + } + @Override public String getDbSystemName(OpenSearchRestRequest request) { return DbSystemNameIncubatingValues.OPENSEARCH; @@ -42,7 +50,7 @@ public String getErrorType( @Nullable OpenSearchRestResponse response, @Nullable Throwable error) { - if (error == null && response != null) { + if (response != null) { int statusCode = response.getStatusCode(); if (statusCode >= 400 || statusCode < 100) { return Integer.toString(statusCode); @@ -57,10 +65,16 @@ public String getDbResponseStatusCode( OpenSearchRestRequest request, @Nullable OpenSearchRestResponse response, @Nullable Throwable error) { - if (response == null || response.getStatusCode() < 400) { + Integer statusCode = null; + if (response != null) { + statusCode = response.getStatusCode(); + } else if (error != null) { + statusCode = exceptionStatusCodeExtractor.getStatusCode(error); + } + if (statusCode == null || statusCode < 400) { return null; } - return Integer.toString(response.getStatusCode()); + return Integer.toString(statusCode); } @Override diff --git a/instrumentation/opensearch/opensearch-rest-common-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/v1_0/OpenSearchRestInstrumenterFactory.java b/instrumentation/opensearch/opensearch-rest-common-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/v1_0/OpenSearchRestInstrumenterFactory.java index e0f83d846b53..907c4d2e5727 100644 --- a/instrumentation/opensearch/opensearch-rest-common-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/v1_0/OpenSearchRestInstrumenterFactory.java +++ b/instrumentation/opensearch/opensearch-rest-common-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/v1_0/OpenSearchRestInstrumenterFactory.java @@ -15,12 +15,14 @@ import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter; import io.opentelemetry.instrumentation.api.instrumenter.InstrumenterBuilder; import io.opentelemetry.instrumentation.api.instrumenter.SpanKindExtractor; +import javax.annotation.Nullable; public class OpenSearchRestInstrumenterFactory { public static Instrumenter create( - String instrumentationName) { - OpenSearchRestAttributesGetter dbClientAttributesGetter = new OpenSearchRestAttributesGetter(); + String instrumentationName, ExceptionStatusCodeExtractor exceptionStatusCodeExtractor) { + OpenSearchRestAttributesGetter dbClientAttributesGetter = + new OpenSearchRestAttributesGetter(exceptionStatusCodeExtractor); InstrumenterBuilder builder = Instrumenter.builder( @@ -35,4 +37,10 @@ public static Instrumenter create } private OpenSearchRestInstrumenterFactory() {} + + @FunctionalInterface + public interface ExceptionStatusCodeExtractor { + @Nullable + Integer getStatusCode(Throwable error); + } } diff --git a/instrumentation/opensearch/opensearch-rest-common-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/v1_0/RestResponseListener.java b/instrumentation/opensearch/opensearch-rest-common-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/v1_0/RestResponseListener.java index 17ff4073f07a..bda55c249e36 100644 --- a/instrumentation/opensearch/opensearch-rest-common-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/v1_0/RestResponseListener.java +++ b/instrumentation/opensearch/opensearch-rest-common-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/v1_0/RestResponseListener.java @@ -9,25 +9,17 @@ import io.opentelemetry.context.Scope; import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter; import java.util.function.Function; -import javax.annotation.Nullable; import org.opensearch.client.Response; import org.opensearch.client.ResponseListener; public class RestResponseListener implements ResponseListener { - @FunctionalInterface - public interface ExceptionConverter { - @Nullable - OpenSearchRestResponse convert(Throwable error); - } - private final ResponseListener listener; private final Context parentContext; private final Instrumenter instrumenter; private final Context context; private final OpenSearchRestRequest request; private final Function responseConverter; - private final ExceptionConverter exceptionConverter; public RestResponseListener( ResponseListener listener, @@ -35,15 +27,13 @@ public RestResponseListener( Instrumenter instrumenter, Context context, OpenSearchRestRequest request, - Function responseConverter, - ExceptionConverter exceptionConverter) { + Function responseConverter) { this.listener = listener; this.parentContext = parentContext; this.instrumenter = instrumenter; this.context = context; this.request = request; this.responseConverter = responseConverter; - this.exceptionConverter = exceptionConverter; } @Override @@ -56,7 +46,7 @@ public void onSuccess(Response response) { @Override public void onFailure(Exception e) { - instrumenter.end(context, request, exceptionConverter.convert(e), e); + instrumenter.end(context, request, null, e); try (Scope ignored = parentContext.makeCurrent()) { listener.onFailure(e); } From f1fa5cc7b409f3725167b9f977f41b365bb0f022 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 25 Oct 2026 04:41:58 +0000 Subject: [PATCH 10/33] Clarify OpenSearch status precedence test Co-authored-by: trask <218610+trask@users.noreply.github.com> --- .../rest/common/v1_0/OpenSearchRestAttributesGetterTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/instrumentation/opensearch/opensearch-rest-common-1.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/v1_0/OpenSearchRestAttributesGetterTest.java b/instrumentation/opensearch/opensearch-rest-common-1.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/v1_0/OpenSearchRestAttributesGetterTest.java index c627fdec4d77..9e6ee83aa0de 100644 --- a/instrumentation/opensearch/opensearch-rest-common-1.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/v1_0/OpenSearchRestAttributesGetterTest.java +++ b/instrumentation/opensearch/opensearch-rest-common-1.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/v1_0/OpenSearchRestAttributesGetterTest.java @@ -36,7 +36,7 @@ void omitsResponseStatusWithoutResponse() { } @Test - void responseStatusDoesNotChangeErrorTypeForExceptions() { + void responseStatusTakesPrecedenceOverExceptionStatus() { OpenSearchRestAttributesGetter getter = new OpenSearchRestAttributesGetter(error -> 503); OpenSearchRestResponse response = () -> 404; IllegalStateException error = new IllegalStateException("test"); From 4b3621e66341f3d3cc4bebbb5eca0281a12ed39f Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 25 Oct 2026 20:10:53 +0000 Subject: [PATCH 11/33] Exclude PostgreSQL client-local response codes Co-authored-by: trask <218610+trask@users.noreply.github.com> --- .../jdbc/internal/JdbcAttributesGetter.java | 18 +++++++ .../internal/JdbcAttributesGetterTest.java | 24 +++++++++ .../internal/R2dbcSqlAttributesGetter.java | 11 ++++ .../v1_0/R2dbcSqlAttributesGetterTest.java | 51 +++++++++++++++++++ 4 files changed, 104 insertions(+) diff --git a/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcAttributesGetter.java b/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcAttributesGetter.java index c6f84cee1abb..76b111b22d13 100644 --- a/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcAttributesGetter.java +++ b/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcAttributesGetter.java @@ -24,6 +24,9 @@ public final class JdbcAttributesGetter implements SqlClientAttributesGetter 0 + && POSTGRESQL_CONNECTION_CLASS.equals(stackTrace[0].getClassName()) + && "checkClosed".equals(stackTrace[0].getMethodName()); + } + @Nullable private static String getSqlExceptionCode(@Nullable Throwable error) { if (!(error instanceof SQLException)) { diff --git a/instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcAttributesGetterTest.java b/instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcAttributesGetterTest.java index 732ea36c3d02..e0774035f4ee 100644 --- a/instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcAttributesGetterTest.java +++ b/instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcAttributesGetterTest.java @@ -120,6 +120,30 @@ void omitsH2LocalClosedConnectionCodeWithoutChangingErrorType() { assertThat(attributesGetter.getDbResponseStatusCode(request, null, error)).isNull(); } + @Test + void omitsPostgresqlLocalClosedConnectionCodeWithoutChangingErrorType() { + DbRequest request = + DbRequest.create(DbInfo.builder().dbSystemName(POSTGRESQL).build(), "SELECT 1", false); + SQLException error = new SQLException("This connection has been closed.", "08003"); + error.setStackTrace( + new StackTraceElement[] { + new StackTraceElement("org.postgresql.jdbc.PgConnection", "checkClosed", null, -1) + }); + + assertThat(attributesGetter.getErrorType(request, null, error)).isEqualTo("08003"); + assertThat(attributesGetter.getDbResponseStatusCode(request, null, error)).isNull(); + } + + @Test + void keepsPostgresqlServerConnectionDoesNotExistCode() { + DbRequest request = + DbRequest.create(DbInfo.builder().dbSystemName(POSTGRESQL).build(), "SELECT 1", false); + SQLException error = new SQLException("Server connection does not exist", "08003"); + + assertThat(attributesGetter.getErrorType(request, null, error)).isEqualTo("08003"); + assertThat(attributesGetter.getDbResponseStatusCode(request, null, error)).isEqualTo("08003"); + } + @Test void keepsH2ClosedObjectCodeForOtherDatabaseSystems() { DbRequest request = diff --git a/instrumentation/r2dbc-1.0/library/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/internal/R2dbcSqlAttributesGetter.java b/instrumentation/r2dbc-1.0/library/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/internal/R2dbcSqlAttributesGetter.java index 2d72b759e78d..fcebbdc760aa 100644 --- a/instrumentation/r2dbc-1.0/library/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/internal/R2dbcSqlAttributesGetter.java +++ b/instrumentation/r2dbc-1.0/library/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/internal/R2dbcSqlAttributesGetter.java @@ -20,6 +20,11 @@ public final class R2dbcSqlAttributesGetter implements SqlClientAttributesGetter { + private static final String POSTGRESQL_DATABASE = "postgresql"; + private static final String POSTGRESQL_CLOSED_CONNECTION_EXCEPTION = + "io.r2dbc.postgresql.client.ReactorNettyClient$PostgresConnectionClosedException"; + private static final String POSTGRESQL_CONNECTION_FAILURE = "08006"; + @Override public String getDbSystemName(DbExecution request) { return request.getSystemName(); @@ -58,6 +63,12 @@ public String getErrorType( @Override public String getDbResponseStatusCode( DbExecution request, @Nullable Void response, @Nullable Throwable error) { + if (POSTGRESQL_DATABASE.equals(getDbSystemName(request)) + && error != null + && POSTGRESQL_CLOSED_CONNECTION_EXCEPTION.equals(error.getClass().getName()) + && POSTGRESQL_CONNECTION_FAILURE.equals(getSqlState(error))) { + return null; + } return getSqlState(error); } diff --git a/instrumentation/r2dbc-1.0/library/src/test/java/io/opentelemetry/instrumentation/r2dbc/v1_0/R2dbcSqlAttributesGetterTest.java b/instrumentation/r2dbc-1.0/library/src/test/java/io/opentelemetry/instrumentation/r2dbc/v1_0/R2dbcSqlAttributesGetterTest.java index 1876ef56b92f..f2bd8e48ebab 100644 --- a/instrumentation/r2dbc-1.0/library/src/test/java/io/opentelemetry/instrumentation/r2dbc/v1_0/R2dbcSqlAttributesGetterTest.java +++ b/instrumentation/r2dbc-1.0/library/src/test/java/io/opentelemetry/instrumentation/r2dbc/v1_0/R2dbcSqlAttributesGetterTest.java @@ -19,6 +19,7 @@ import io.r2dbc.proxy.test.MockQueryExecutionInfo; import io.r2dbc.spi.ConnectionFactoryOptions; import io.r2dbc.spi.R2dbcBadGrammarException; +import java.lang.reflect.Constructor; import java.util.Collection; import java.util.stream.Stream; import org.junit.jupiter.api.Test; @@ -51,6 +52,56 @@ private static Stream responseStatuses() { argumentSet("success", null, null)); } + @Test + void omitsPostgresqlLocalClosedConnectionCodeWithoutChangingErrorType() + throws ReflectiveOperationException { + DbExecution request = + new DbExecution( + queryExecutionInfo(), + ConnectionFactoryOptions.parse("r2dbc:postgresql://localhost/db")); + Throwable error = postgresqlConnectionClosedException(); + + assertThat(getter.getErrorType(request, null, error)).isEqualTo("08006"); + assertThat(getter.getDbResponseStatusCode(request, null, error)).isNull(); + } + + @Test + void keepsPostgresqlServerConnectionFailureCode() throws ReflectiveOperationException { + DbExecution request = + new DbExecution( + queryExecutionInfo(), + ConnectionFactoryOptions.parse("r2dbc:postgresql://localhost/db")); + Throwable error = postgresqlServerConnectionFailure(); + + assertThat(getter.getErrorType(request, null, error)).isEqualTo("08006"); + assertThat(getter.getDbResponseStatusCode(request, null, error)).isEqualTo("08006"); + } + + private static Throwable postgresqlConnectionClosedException() + throws ReflectiveOperationException { + Class exceptionClass = + Class.forName( + "io.r2dbc.postgresql.client.ReactorNettyClient$PostgresConnectionClosedException"); + Constructor constructor = exceptionClass.getDeclaredConstructor(String.class); + constructor.setAccessible(true); + return (Throwable) constructor.newInstance("Connection closed"); + } + + private static Throwable postgresqlServerConnectionFailure() throws ReflectiveOperationException { + Class errorDetailsClass = Class.forName("io.r2dbc.postgresql.api.ErrorDetails"); + Object errorDetails = + errorDetailsClass + .getMethod("fromCodeAndMessage", String.class, String.class) + .invoke(null, "08006", "Server connection failure"); + Class exceptionClass = + Class.forName( + "io.r2dbc.postgresql.ExceptionFactory$PostgresqlNonTransientResourceException"); + Constructor constructor = + exceptionClass.getDeclaredConstructor(errorDetailsClass, String.class); + constructor.setAccessible(true); + return (Throwable) constructor.newInstance(errorDetails, "SELECT 1"); + } + @Test void rawQueryTextsForSingleQuery() { QueryExecutionInfo queryExecutionInfo = From 7de993a07194c57c0ab12be1a4ae48c4050e2613 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 26 Oct 2026 18:10:54 +0000 Subject: [PATCH 12/33] Emit spymemcached completion statuses Co-authored-by: trask <218610+trask@users.noreply.github.com> --- .../SpymemcachedAttributesGetterTest.java | 55 ++++++++++++++- .../v2_12/SpymemcachedAttributesGetter.java | 30 ++++++-- .../spymemcached/v2_12/SpymemcachedTest.java | 69 ++++++++++++++++++- 3 files changed, 144 insertions(+), 10 deletions(-) diff --git a/instrumentation/spymemcached-2.12/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/spymemcached/v2_12/SpymemcachedAttributesGetterTest.java b/instrumentation/spymemcached-2.12/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/spymemcached/v2_12/SpymemcachedAttributesGetterTest.java index dbc23795686e..ebc9aebfea71 100644 --- a/instrumentation/spymemcached-2.12/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/spymemcached/v2_12/SpymemcachedAttributesGetterTest.java +++ b/instrumentation/spymemcached-2.12/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/spymemcached/v2_12/SpymemcachedAttributesGetterTest.java @@ -23,9 +23,11 @@ import java.net.SocketAddress; import java.net.UnknownHostException; import java.util.List; +import java.util.concurrent.ExecutionException; import java.util.concurrent.atomic.AtomicReference; import net.spy.memcached.MemcachedConnection; import net.spy.memcached.MemcachedNode; +import net.spy.memcached.internal.GetFuture; import net.spy.memcached.internal.OperationFuture; import net.spy.memcached.ops.OperationStatus; import net.spy.memcached.ops.StatusCode; @@ -37,8 +39,34 @@ class SpymemcachedAttributesGetterTest { private final SpymemcachedAttributesGetter getter = new SpymemcachedAttributesGetter(); + @ParameterizedTest + @EnumSource( + value = StatusCode.class, + names = { + "SUCCESS", + "ERR_NOT_FOUND", + "ERR_EXISTS", + "ERR_2BIG", + "ERR_INVAL", + "ERR_NOT_STORED", + "ERR_DELTA_BADVAL", + "ERR_NOT_MY_VBUCKET", + "ERR_UNKNOWN_COMMAND", + "ERR_NO_MEM", + "ERR_NOT_SUPPORTED", + "ERR_INTERNAL", + "ERR_BUSY", + "ERR_TEMP_FAIL" + }) + void databaseOutcomeStatusesAreReportedRegardlessOfSuccess(StatusCode code) { + OperationFuture future = mock(OperationFuture.class); + when(future.getStatus()).thenReturn(new OperationStatus(true, "status", code)); + + assertThat(getter.getDbResponseStatusCode(null, future, null)).isEqualTo(code.name()); + } + @Test - void responseStatusUsesOnlyExistingServerFailureClassification() { + void responseStatusDoesNotChangeErrorTypeClassification() { OperationFuture future = mock(OperationFuture.class); when(future.getStatus()) .thenReturn(new OperationStatus(false, "too large", StatusCode.ERR_2BIG)); @@ -46,7 +74,7 @@ void responseStatusUsesOnlyExistingServerFailureClassification() { assertThat(getter.getErrorType(null, future, null)).isEqualTo("ERR_2BIG"); when(future.getStatus()).thenReturn(new OperationStatus(true, "stored", StatusCode.SUCCESS)); - assertThat(getter.getDbResponseStatusCode(null, future, null)).isNull(); + assertThat(getter.getDbResponseStatusCode(null, future, null)).isEqualTo("SUCCESS"); when(future.getStatus()) .thenReturn(new OperationStatus(false, "cancelled", StatusCode.CANCELLED)); assertThat(getter.getDbResponseStatusCode(null, future, null)).isNull(); @@ -55,6 +83,29 @@ void responseStatusUsesOnlyExistingServerFailureClassification() { assertThat(getter.getDbResponseStatusCode(null, null, null)).isNull(); } + @Test + void operationFutureStatusIsAvailableWhenResultRetrievalFails() { + OperationFuture future = mock(OperationFuture.class); + when(future.getStatus()) + .thenReturn(new OperationStatus(false, "too large", StatusCode.ERR_2BIG)); + Throwable error = new ExecutionException(new IllegalStateException()); + + assertThat(getter.getDbResponseStatusCode(null, future, error)).isEqualTo("ERR_2BIG"); + assertThat(getter.getErrorType(null, future, error)).isNull(); + } + + @Test + void getFutureStatusIsAvailableWhenResultRetrievalFails() { + GetFuture future = mock(GetFuture.class); + when(future.getStatus()) + .thenReturn(new OperationStatus(false, "too large", StatusCode.ERR_2BIG)); + Throwable error = new ExecutionException(new IllegalStateException()); + + assertThat(getter.getDbResponseStatusCode(null, future, error)).isEqualTo("ERR_2BIG"); + assertThat(getter.getErrorType(null, future, error)).isNull(); + assertThat(getter.getErrorType(null, future, null)).isNull(); + } + @ParameterizedTest @EnumSource( value = StatusCode.class, diff --git a/instrumentation/spymemcached-2.12/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spymemcached/v2_12/SpymemcachedAttributesGetter.java b/instrumentation/spymemcached-2.12/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spymemcached/v2_12/SpymemcachedAttributesGetter.java index 869bf39a4ee5..0b9b5fe7c9b2 100644 --- a/instrumentation/spymemcached-2.12/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spymemcached/v2_12/SpymemcachedAttributesGetter.java +++ b/instrumentation/spymemcached-2.12/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spymemcached/v2_12/SpymemcachedAttributesGetter.java @@ -10,6 +10,7 @@ import io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DbSystemNameIncubatingValues; import java.net.InetSocketAddress; import javax.annotation.Nullable; +import net.spy.memcached.internal.GetFuture; import net.spy.memcached.internal.OperationFuture; import net.spy.memcached.ops.OperationStatus; import net.spy.memcached.ops.StatusCode; @@ -42,8 +43,8 @@ public String getDbOperationName(SpymemcachedRequest spymemcachedRequest) { @Nullable public String getDbResponseStatusCode( SpymemcachedRequest request, @Nullable Object response, @Nullable Throwable error) { - OperationStatus status = getOperationStatus(response, error); - if (status == null || status.isSuccess()) { + OperationStatus status = getOperationStatus(response); + if (status == null) { return null; } StatusCode code = status.getStatusCode(); @@ -51,13 +52,9 @@ public String getDbResponseStatusCode( return null; } switch (code) { - case SUCCESS: - case ERR_NOT_FOUND: - case ERR_EXISTS: - case ERR_NOT_STORED: case CANCELLED: - case TIMEDOUT: case INTERRUPTED: + case TIMEDOUT: case ERR_CLIENT: return null; default: @@ -102,6 +99,25 @@ private static OperationStatus getOperationStatus( return future.getStatus(); } + @Nullable + private static OperationStatus getOperationStatus(@Nullable Object response) { + if (response instanceof OperationFuture) { + OperationFuture future = (OperationFuture) response; + if (future.isCancelled()) { + return null; + } + return future.getStatus(); + } + if (response instanceof GetFuture) { + GetFuture getFuture = (GetFuture) response; + if (getFuture.isCancelled()) { + return null; + } + return getFuture.getStatus(); + } + return null; + } + @Override @Nullable public InetSocketAddress getNetworkPeerInetSocketAddress( diff --git a/instrumentation/spymemcached-2.12/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spymemcached/v2_12/SpymemcachedTest.java b/instrumentation/spymemcached-2.12/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spymemcached/v2_12/SpymemcachedTest.java index d713b020bd45..e81d44830787 100644 --- a/instrumentation/spymemcached-2.12/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spymemcached/v2_12/SpymemcachedTest.java +++ b/instrumentation/spymemcached-2.12/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spymemcached/v2_12/SpymemcachedTest.java @@ -261,7 +261,9 @@ void storeRejectedAsTooLarge() throws Exception { NETWORK_PEER_ADDRESS, memcachedAddress.getAddress().getHostAddress()), equalTo(NETWORK_PEER_PORT, memcachedAddress.getPort()), - equalTo(DB_RESPONSE_STATUS_CODE, testLatestDeps() ? "ERR_2BIG" : null), + equalTo( + DB_RESPONSE_STATUS_CODE, + testLatestDeps() ? "ERR_2BIG" : "ERR_INTERNAL"), equalTo(ERROR_TYPE, errorType)))); assertDurationMetric( testing, @@ -293,6 +295,7 @@ void getHit() { equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "get"), equalTo(DB_QUERY_TEXT, "get test-get"), + equalTo(DB_RESPONSE_STATUS_CODE, "SUCCESS"), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -320,6 +323,38 @@ void getMiss() { equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "get"), equalTo(DB_QUERY_TEXT, "get test-get-key-that-doesn't-exist"), + equalTo(DB_RESPONSE_STATUS_CODE, "ERR_NOT_FOUND"), + equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), + equalTo( + NETWORK_PEER_ADDRESS, + memcachedAddress.getAddress().getHostAddress()), + equalTo(NETWORK_PEER_PORT, (long) memcachedAddress.getPort()), + equalTo(SERVER_PORT, memcachedAddress.getPort()), + equalTo(stringKey("spymemcached.result"), experimental("miss"))))); + } + + @Test + void asciiGetMiss() throws Exception { + MemcachedClient memcached = getMemcached(emptyMap(), builder -> builder.setProtocol(TEXT)); + testing.runWithSpan( + "parent", + () -> + assertThat(memcached.asyncGet("test-ascii-get-key-that-doesn't-exist").get()) + .isNull()); + + testing.waitAndAssertTraces( + trace -> + trace.hasSpansSatisfyingExactly( + span -> span.hasName("parent").hasNoParent().hasTotalAttributeCount(0), + span -> + span.hasName(spanName("get")) + .hasKind(SpanKind.CLIENT) + .hasParent(trace.getSpan(0)) + .hasAttributesSatisfyingExactly( + equalTo(DB_SYSTEM_NAME, MEMCACHED), + equalTo(DB_OPERATION_NAME, "get"), + equalTo(DB_QUERY_TEXT, "get test-ascii-get-key-that-doesn't-exist"), + equalTo(DB_RESPONSE_STATUS_CODE, "ERR_NOT_FOUND"), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -715,6 +750,7 @@ void set() throws Exception { equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "set"), equalTo(DB_QUERY_TEXT, "set test-set 3600 ?"), + equalTo(DB_RESPONSE_STATUS_CODE, "SUCCESS"), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -786,6 +822,7 @@ void add() throws Exception { equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "add"), equalTo(DB_QUERY_TEXT, "add test-add 3600 ?"), + equalTo(DB_RESPONSE_STATUS_CODE, "SUCCESS"), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -800,6 +837,7 @@ void add() throws Exception { equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "get"), equalTo(DB_QUERY_TEXT, "get test-add"), + equalTo(DB_RESPONSE_STATUS_CODE, "SUCCESS"), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -831,6 +869,7 @@ void secondAdd() throws Exception { equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "add"), equalTo(DB_QUERY_TEXT, "add test-add2 3600 ?"), + equalTo(DB_RESPONSE_STATUS_CODE, "SUCCESS"), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -845,6 +884,7 @@ void secondAdd() throws Exception { equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "add"), equalTo(DB_QUERY_TEXT, "add test-add2 3600 ?"), + equalTo(DB_RESPONSE_STATUS_CODE, "ERR_EXISTS"), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -875,6 +915,7 @@ void delete() throws Exception { equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "delete"), equalTo(DB_QUERY_TEXT, "delete test-delete"), + equalTo(DB_RESPONSE_STATUS_CODE, "SUCCESS"), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -889,6 +930,7 @@ void delete() throws Exception { equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "get"), equalTo(DB_QUERY_TEXT, "get test-delete"), + equalTo(DB_RESPONSE_STATUS_CODE, "ERR_NOT_FOUND"), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -919,6 +961,7 @@ void deleteNonExistent() throws Exception { equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "delete"), equalTo(DB_QUERY_TEXT, "delete test-delete-non-existent"), + equalTo(DB_RESPONSE_STATUS_CODE, "ERR_NOT_FOUND"), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -950,6 +993,7 @@ void replace() throws Exception { equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "replace"), equalTo(DB_QUERY_TEXT, "replace test-replace 3600 ?"), + equalTo(DB_RESPONSE_STATUS_CODE, "SUCCESS"), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -964,6 +1008,7 @@ void replace() throws Exception { equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "get"), equalTo(DB_QUERY_TEXT, "get test-replace"), + equalTo(DB_RESPONSE_STATUS_CODE, "SUCCESS"), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -998,6 +1043,7 @@ void replaceNonExistent() throws Exception { equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "replace"), equalTo(DB_QUERY_TEXT, "replace test-replace-non-existent 3600 ?"), + equalTo(DB_RESPONSE_STATUS_CODE, "ERR_NOT_FOUND"), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -1030,6 +1076,7 @@ void append() throws Exception { equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "gets"), equalTo(DB_QUERY_TEXT, "gets test-append"), + equalTo(DB_RESPONSE_STATUS_CODE, "SUCCESS"), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -1045,6 +1092,7 @@ void append() throws Exception { equalTo(DB_OPERATION_NAME, "append"), satisfies( DB_QUERY_TEXT, val -> val.matches("append \\d+ test-append \\?")), + equalTo(DB_RESPONSE_STATUS_CODE, "SUCCESS"), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -1059,6 +1107,7 @@ void append() throws Exception { equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "get"), equalTo(DB_QUERY_TEXT, "get test-append"), + equalTo(DB_RESPONSE_STATUS_CODE, "SUCCESS"), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -1092,6 +1141,7 @@ void prepend() throws Exception { equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "gets"), equalTo(DB_QUERY_TEXT, "gets test-prepend"), + equalTo(DB_RESPONSE_STATUS_CODE, "SUCCESS"), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -1107,6 +1157,7 @@ void prepend() throws Exception { equalTo(DB_OPERATION_NAME, "prepend"), satisfies( DB_QUERY_TEXT, val -> val.matches("prepend \\d+ test-prepend \\?")), + equalTo(DB_RESPONSE_STATUS_CODE, "SUCCESS"), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -1121,6 +1172,7 @@ void prepend() throws Exception { equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "get"), equalTo(DB_QUERY_TEXT, "get test-prepend"), + equalTo(DB_RESPONSE_STATUS_CODE, "SUCCESS"), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -1153,6 +1205,7 @@ void cas() { equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "gets"), equalTo(DB_QUERY_TEXT, "gets test-cas"), + equalTo(DB_RESPONSE_STATUS_CODE, "SUCCESS"), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -1168,6 +1221,7 @@ void cas() { equalTo(DB_OPERATION_NAME, "cas"), satisfies( DB_QUERY_TEXT, val -> val.matches("cas test-cas \\d+ 3600 \\?")), + equalTo(DB_RESPONSE_STATUS_CODE, "SUCCESS"), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -1217,6 +1271,7 @@ void casNotFound(boolean numericValue, boolean withExpiration) throws Exception + (numericValue && !withExpiration ? " 1234 ?" : " 1234 3600 ?")), + equalTo(DB_RESPONSE_STATUS_CODE, "ERR_NOT_FOUND"), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -1246,6 +1301,7 @@ void touch() throws Exception { equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "touch"), equalTo(DB_QUERY_TEXT, "touch test-touch 3600"), + equalTo(DB_RESPONSE_STATUS_CODE, "SUCCESS"), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -1276,6 +1332,7 @@ void touchNonExistent() throws Exception { equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "touch"), equalTo(DB_QUERY_TEXT, "touch test-touch-non-existent 3600"), + equalTo(DB_RESPONSE_STATUS_CODE, "ERR_NOT_FOUND"), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -1306,6 +1363,7 @@ void getAndTouch() { equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "gat"), equalTo(DB_QUERY_TEXT, "getAndTouch test-touch 3600"), + equalTo(DB_RESPONSE_STATUS_CODE, "SUCCESS"), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -1335,6 +1393,7 @@ void getAndTouchNonExistent() { equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "gat"), equalTo(DB_QUERY_TEXT, "getAndTouch test-touch-non-existent 3600"), + equalTo(DB_RESPONSE_STATUS_CODE, "ERR_NOT_FOUND"), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -1383,6 +1442,7 @@ it needs values to be strings (with digits in them) and it returns actual long f equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "get"), equalTo(DB_QUERY_TEXT, "get test-decr"), + equalTo(DB_RESPONSE_STATUS_CODE, "SUCCESS"), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -1486,6 +1546,7 @@ it needs values to be strings (with digits in them) and it returns actual long f equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "get"), equalTo(DB_QUERY_TEXT, "get test-incr"), + equalTo(DB_RESPONSE_STATUS_CODE, "SUCCESS"), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -1631,6 +1692,7 @@ void optimizedRedistributionOmitsPeerFromEveryRequest() throws Exception { equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "get"), equalTo(DB_QUERY_TEXT, "get " + keys.get(0)), + equalTo(DB_RESPONSE_STATUS_CODE, "ERR_NOT_FOUND"), equalTo(SERVER_ADDRESS, target), equalTo(stringKey("spymemcached.result"), experimental("miss"))), span -> @@ -1641,6 +1703,7 @@ void optimizedRedistributionOmitsPeerFromEveryRequest() throws Exception { equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "get"), equalTo(DB_QUERY_TEXT, "get " + keys.get(1)), + equalTo(DB_RESPONSE_STATUS_CODE, "ERR_NOT_FOUND"), equalTo(SERVER_ADDRESS, target), equalTo(stringKey("spymemcached.result"), experimental("miss"))))); } @@ -1713,6 +1776,7 @@ void sequentialSingleKeyRetriesUseLastPeer(Protocol protocol, int retries) throw equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "get"), equalTo(DB_QUERY_TEXT, "get " + requestKey), + equalTo(DB_RESPONSE_STATUS_CODE, "ERR_NOT_FOUND"), equalTo(SERVER_ADDRESS, target), equalTo(NETWORK_PEER_ADDRESS, peer.getAddress().getHostAddress()), equalTo(NETWORK_PEER_PORT, (long) peer.getPort()), @@ -1798,6 +1862,7 @@ void retryBeforeInitialEnqueueReturnsKeepsRetryPeer() throws Exception { equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "get"), equalTo(DB_QUERY_TEXT, "get " + requestKey), + equalTo(DB_RESPONSE_STATUS_CODE, "ERR_NOT_FOUND"), equalTo(SERVER_ADDRESS, target), equalTo(NETWORK_PEER_ADDRESS, retryPeer.getAddress().getHostAddress()), equalTo(NETWORK_PEER_PORT, (long) retryPeer.getPort()), @@ -1829,6 +1894,7 @@ void severalConfiguredNodesAreReportedTogether() { equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "get"), equalTo(DB_QUERY_TEXT, "get test-several-nodes"), + equalTo(DB_RESPONSE_STATUS_CODE, "ERR_NOT_FOUND"), satisfies( SERVER_ADDRESS, val -> { @@ -1888,6 +1954,7 @@ void clientKeepsTheNodesItWasCreatedWith() { equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "get"), equalTo(DB_QUERY_TEXT, "get test-node-list-mutation"), + equalTo(DB_RESPONSE_STATUS_CODE, "ERR_NOT_FOUND"), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, From 1581087051d78a35affd21130f5b13a2545d4da1 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 26 Oct 2026 18:50:51 +0000 Subject: [PATCH 13/33] Emit successful REST response statuses Co-authored-by: trask <218610+trask@users.noreply.github.com> --- .../rest/v5_0/ElasticsearchRest5Test.java | 4 ++++ .../v5_0/ElasticsearchDbAttributesGetterTest.java | 6 +++--- .../common/v5_0/ElasticsearchDbAttributesGetter.java | 2 +- .../jdbc/internal/JdbcAttributesGetter.java | 1 + .../v1_0/OpenSearchRestAttributesGetterTest.java | 10 +++++----- .../common/v1_0/OpenSearchRestAttributesGetter.java | 2 +- .../rest/common/AbstractOpenSearchRestTest.java | 3 +++ 7 files changed, 18 insertions(+), 10 deletions(-) diff --git a/instrumentation/elasticsearch/elasticsearch-rest-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/v5_0/ElasticsearchRest5Test.java b/instrumentation/elasticsearch/elasticsearch-rest-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/v5_0/ElasticsearchRest5Test.java index 6ad213f9b282..02dc991b6ed1 100644 --- a/instrumentation/elasticsearch/elasticsearch-rest-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/v5_0/ElasticsearchRest5Test.java +++ b/instrumentation/elasticsearch/elasticsearch-rest-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/v5_0/ElasticsearchRest5Test.java @@ -204,6 +204,7 @@ void elasticsearchStatus() throws IOException { .hasNoParent() .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM_NAME, ELASTICSEARCH), + equalTo(DB_RESPONSE_STATUS_CODE, "200"), equalTo(HTTP_REQUEST_METHOD, "GET"), equalTo(SERVER_ADDRESS, httpHost.getHostName()), equalTo(SERVER_PORT, httpHost.getPort()), @@ -250,6 +251,7 @@ void searchQueryIsCapturedAndSanitized() throws IOException { .hasNoParent() .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM_NAME, ELASTICSEARCH), + equalTo(DB_RESPONSE_STATUS_CODE, "200"), equalTo(DB_QUERY_TEXT, "{\"query\":{\"match\":{\"title\":\"?\"}}}"), equalTo(HTTP_REQUEST_METHOD, "POST"), equalTo(SERVER_ADDRESS, httpHost.getHostName()), @@ -319,6 +321,7 @@ public void onFailure(Exception e) { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM_NAME, ELASTICSEARCH), + equalTo(DB_RESPONSE_STATUS_CODE, "200"), equalTo(HTTP_REQUEST_METHOD, "GET"), equalTo(SERVER_ADDRESS, httpHost.getHostName()), equalTo(SERVER_PORT, httpHost.getPort()), @@ -388,6 +391,7 @@ private static void assertConfiguredTarget(String hostList) { .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM_NAME, ELASTICSEARCH), + equalTo(DB_RESPONSE_STATUS_CODE, "200"), equalTo(HTTP_REQUEST_METHOD, "GET"), equalTo(SERVER_ADDRESS, hostList), equalTo(URL_FULL, httpHost.toURI() + "/_cluster/health"))); diff --git a/instrumentation/elasticsearch/elasticsearch-rest-common-5.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/common/v5_0/ElasticsearchDbAttributesGetterTest.java b/instrumentation/elasticsearch/elasticsearch-rest-common-5.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/common/v5_0/ElasticsearchDbAttributesGetterTest.java index 08c48616912a..bc80e8fa221a 100644 --- a/instrumentation/elasticsearch/elasticsearch-rest-common-5.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/common/v5_0/ElasticsearchDbAttributesGetterTest.java +++ b/instrumentation/elasticsearch/elasticsearch-rest-common-5.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/common/v5_0/ElasticsearchDbAttributesGetterTest.java @@ -39,8 +39,8 @@ class ElasticsearchDbAttributesGetterTest { private static final String SANITIZED_BODY = "{\"query\":{\"match\":{\"title\":\"?\"}}}"; @ParameterizedTest - @ValueSource(ints = {0, 99, 200, 302, 404, 503}) - void recordsResponseStatusOnlyForFailureCodes(int statusCode) { + @ValueSource(ints = {0, 99, 100, 200, 201, 302, 404, 503}) + void recordsValidResponseStatusCodes(int statusCode) { ElasticsearchDbAttributesGetter getter = new ElasticsearchDbAttributesGetter(null); ElasticsearchRestRequest request = searchRequest(null); Response response = mock(Response.class); @@ -48,7 +48,7 @@ void recordsResponseStatusOnlyForFailureCodes(int statusCode) { .thenReturn(new BasicStatusLine(new ProtocolVersion("HTTP", 1, 1), statusCode, "")); assertThat(getter.getDbResponseStatusCode(request, response, null)) - .isEqualTo(statusCode >= 400 ? Integer.toString(statusCode) : null); + .isEqualTo(statusCode >= 100 ? Integer.toString(statusCode) : null); assertThat(getter.getErrorType(request, response, null)) .isEqualTo(statusCode >= 400 || statusCode < 100 ? Integer.toString(statusCode) : null); } diff --git a/instrumentation/elasticsearch/elasticsearch-rest-common-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/common/v5_0/ElasticsearchDbAttributesGetter.java b/instrumentation/elasticsearch/elasticsearch-rest-common-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/common/v5_0/ElasticsearchDbAttributesGetter.java index 40340a8a1852..92ba37b75f7f 100644 --- a/instrumentation/elasticsearch/elasticsearch-rest-common-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/common/v5_0/ElasticsearchDbAttributesGetter.java +++ b/instrumentation/elasticsearch/elasticsearch-rest-common-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/common/v5_0/ElasticsearchDbAttributesGetter.java @@ -160,7 +160,7 @@ public String getDbResponseStatusCode( return null; } int statusCode = response.getStatusLine().getStatusCode(); - return statusCode >= 400 ? Integer.toString(statusCode) : null; + return statusCode >= 100 ? Integer.toString(statusCode) : null; } @Override diff --git a/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcAttributesGetter.java b/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcAttributesGetter.java index 76b111b22d13..d9ac45902a5c 100644 --- a/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcAttributesGetter.java +++ b/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcAttributesGetter.java @@ -69,6 +69,7 @@ public String getDbResponseStatusCode( && error instanceof SQLException && ((SQLException) error).getErrorCode() == H2_OBJECT_CLOSED_ERROR_CODE && "90007".equals(((SQLException) error).getSQLState())) { + // H2 generates this object-closed error locally before sending a database request. return null; } if ("oracle.db".equals(getDbSystemName(request)) && error instanceof SQLException) { diff --git a/instrumentation/opensearch/opensearch-rest-common-1.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/v1_0/OpenSearchRestAttributesGetterTest.java b/instrumentation/opensearch/opensearch-rest-common-1.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/v1_0/OpenSearchRestAttributesGetterTest.java index 9e6ee83aa0de..bb02f7c4dfa9 100644 --- a/instrumentation/opensearch/opensearch-rest-common-1.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/v1_0/OpenSearchRestAttributesGetterTest.java +++ b/instrumentation/opensearch/opensearch-rest-common-1.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/v1_0/OpenSearchRestAttributesGetterTest.java @@ -18,12 +18,12 @@ class OpenSearchRestAttributesGetterTest { private final OpenSearchRestRequest request = OpenSearchRestRequest.create("GET", null); @ParameterizedTest - @ValueSource(ints = {-1, 0, 99, 200, 302, 404, 503}) - void responseStatusExcludesSentinelsAndSuccesses(int statusCode) { + @ValueSource(ints = {-1, 0, 99, 100, 200, 201, 302, 404, 503}) + void responseStatusExcludesOnlyInvalidCodes(int statusCode) { OpenSearchRestResponse response = () -> statusCode; assertThat(getter.getDbResponseStatusCode(request, response, null)) - .isEqualTo(statusCode >= 400 ? Integer.toString(statusCode) : null); + .isEqualTo(statusCode >= 100 ? Integer.toString(statusCode) : null); assertThat(getter.getErrorType(request, response, null)) .isEqualTo(statusCode >= 400 || statusCode < 100 ? Integer.toString(statusCode) : null); } @@ -47,10 +47,10 @@ void responseStatusTakesPrecedenceOverExceptionStatus() { @Test void responseStatusCanBeExtractedFromErrorIndependentlyOfErrorType() { - OpenSearchRestAttributesGetter getter = new OpenSearchRestAttributesGetter(error -> 503); + OpenSearchRestAttributesGetter getter = new OpenSearchRestAttributesGetter(error -> 200); IllegalStateException error = new IllegalStateException("test"); - assertThat(getter.getDbResponseStatusCode(request, null, error)).isEqualTo("503"); + assertThat(getter.getDbResponseStatusCode(request, null, error)).isEqualTo("200"); assertThat(getter.getErrorType(request, null, error)).isNull(); } } diff --git a/instrumentation/opensearch/opensearch-rest-common-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/v1_0/OpenSearchRestAttributesGetter.java b/instrumentation/opensearch/opensearch-rest-common-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/v1_0/OpenSearchRestAttributesGetter.java index f873ce3fbb11..dcde4d348daa 100644 --- a/instrumentation/opensearch/opensearch-rest-common-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/v1_0/OpenSearchRestAttributesGetter.java +++ b/instrumentation/opensearch/opensearch-rest-common-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/v1_0/OpenSearchRestAttributesGetter.java @@ -71,7 +71,7 @@ public String getDbResponseStatusCode( } else if (error != null) { statusCode = exceptionStatusCodeExtractor.getStatusCode(error); } - if (statusCode == null || statusCode < 400) { + if (statusCode == null || statusCode < 100) { return null; } return Integer.toString(statusCode); diff --git a/instrumentation/opensearch/opensearch-rest-common-1.0/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/AbstractOpenSearchRestTest.java b/instrumentation/opensearch/opensearch-rest-common-1.0/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/AbstractOpenSearchRestTest.java index 85347294f14e..b1a000ab642d 100644 --- a/instrumentation/opensearch/opensearch-rest-common-1.0/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/AbstractOpenSearchRestTest.java +++ b/instrumentation/opensearch/opensearch-rest-common-1.0/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/AbstractOpenSearchRestTest.java @@ -192,6 +192,7 @@ void shouldGetStatusWithTraces() throws IOException { .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM_NAME, OPENSEARCH), equalTo(DB_OPERATION_NAME, "GET"), + equalTo(DB_RESPONSE_STATUS_CODE, "200"), equalTo(SERVER_ADDRESS, httpHost.getHost()), equalTo(SERVER_PORT, Long.valueOf(httpHost.getPort()))), span -> @@ -265,6 +266,7 @@ public void onFailure(Exception e) { .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM_NAME, OPENSEARCH), equalTo(DB_OPERATION_NAME, "GET"), + equalTo(DB_RESPONSE_STATUS_CODE, "200"), equalTo(SERVER_ADDRESS, httpHost.getHost()), equalTo(SERVER_PORT, Long.valueOf(httpHost.getPort()))), span -> @@ -344,6 +346,7 @@ private void assertConfiguredTarget(String serverAddress, Long serverPort) { .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM_NAME, OPENSEARCH), equalTo(DB_OPERATION_NAME, "GET"), + equalTo(DB_RESPONSE_STATUS_CODE, "200"), equalTo(SERVER_ADDRESS, serverAddress), equalTo(SERVER_PORT, serverPort))); } From 4f47d756c55a4f3a92e6e27ee5ea33706839da00 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 26 Oct 2026 19:21:45 +0000 Subject: [PATCH 14/33] Prefer available SQL vendor response codes Co-authored-by: trask <218610+trask@users.noreply.github.com> --- .../internal/R2dbcSqlAttributesGetter.java | 15 ++++++- .../v1_0/R2dbcSqlAttributesGetterTest.java | 36 +++++++++++++++++ .../VertxSqlClientAttributesGetterTest.java | 40 ++++++++++++++++--- .../v4_0/VertxSqlClientAttributesGetter.java | 37 ++++++++++++++++- 4 files changed, 121 insertions(+), 7 deletions(-) diff --git a/instrumentation/r2dbc-1.0/library/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/internal/R2dbcSqlAttributesGetter.java b/instrumentation/r2dbc-1.0/library/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/internal/R2dbcSqlAttributesGetter.java index fcebbdc760aa..2d95b21b0d46 100644 --- a/instrumentation/r2dbc-1.0/library/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/internal/R2dbcSqlAttributesGetter.java +++ b/instrumentation/r2dbc-1.0/library/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/internal/R2dbcSqlAttributesGetter.java @@ -21,6 +21,8 @@ public final class R2dbcSqlAttributesGetter implements SqlClientAttributesGetter { private static final String POSTGRESQL_DATABASE = "postgresql"; + private static final String MYSQL_DATABASE = "mysql"; + private static final String MARIADB_DATABASE = "mariadb"; private static final String POSTGRESQL_CLOSED_CONNECTION_EXCEPTION = "io.r2dbc.postgresql.client.ReactorNettyClient$PostgresConnectionClosedException"; private static final String POSTGRESQL_CONNECTION_FAILURE = "08006"; @@ -63,15 +65,26 @@ public String getErrorType( @Override public String getDbResponseStatusCode( DbExecution request, @Nullable Void response, @Nullable Throwable error) { - if (POSTGRESQL_DATABASE.equals(getDbSystemName(request)) + String dbSystemName = getDbSystemName(request); + if (POSTGRESQL_DATABASE.equals(dbSystemName) && error != null && POSTGRESQL_CLOSED_CONNECTION_EXCEPTION.equals(error.getClass().getName()) && POSTGRESQL_CONNECTION_FAILURE.equals(getSqlState(error))) { return null; } + if (MYSQL_DATABASE.equals(dbSystemName) || MARIADB_DATABASE.equals(dbSystemName)) { + int errorCode = getErrorCode(error); + if (errorCode != 0) { + return Integer.toString(errorCode); + } + } return getSqlState(error); } + private static int getErrorCode(@Nullable Throwable error) { + return error instanceof R2dbcException ? ((R2dbcException) error).getErrorCode() : 0; + } + @Nullable private static String getSqlState(@Nullable Throwable error) { if (error instanceof R2dbcException) { diff --git a/instrumentation/r2dbc-1.0/library/src/test/java/io/opentelemetry/instrumentation/r2dbc/v1_0/R2dbcSqlAttributesGetterTest.java b/instrumentation/r2dbc-1.0/library/src/test/java/io/opentelemetry/instrumentation/r2dbc/v1_0/R2dbcSqlAttributesGetterTest.java index f2bd8e48ebab..1d9e396e0322 100644 --- a/instrumentation/r2dbc-1.0/library/src/test/java/io/opentelemetry/instrumentation/r2dbc/v1_0/R2dbcSqlAttributesGetterTest.java +++ b/instrumentation/r2dbc-1.0/library/src/test/java/io/opentelemetry/instrumentation/r2dbc/v1_0/R2dbcSqlAttributesGetterTest.java @@ -77,6 +77,36 @@ void keepsPostgresqlServerConnectionFailureCode() throws ReflectiveOperationExce assertThat(getter.getDbResponseStatusCode(request, null, error)).isEqualTo("08006"); } + @ParameterizedTest + @ValueSource(strings = {"mysql", "mariadb"}) + void prefersVendorCodeWithoutChangingErrorType(String dbSystemName) { + DbExecution request = request(dbSystemName); + Throwable error = new R2dbcBadGrammarException("test", "42000", 1064); + + assertThat(getter.getDbResponseStatusCode(request, null, error)).isEqualTo("1064"); + assertThat(getter.getErrorType(request, null, error)).isEqualTo("42000"); + } + + @ParameterizedTest + @ValueSource(strings = {"mysql", "mariadb"}) + void usesVendorCodeWhenSqlStateIsUnavailable(String dbSystemName) { + DbExecution request = request(dbSystemName); + Throwable error = new R2dbcBadGrammarException("test", null, 1064); + + assertThat(getter.getDbResponseStatusCode(request, null, error)).isEqualTo("1064"); + assertThat(getter.getErrorType(request, null, error)).isNull(); + } + + @ParameterizedTest + @ValueSource(strings = {"mysql", "mariadb"}) + void fallsBackToSqlStateWhenVendorCodeIsUnavailable(String dbSystemName) { + DbExecution request = request(dbSystemName); + Throwable error = new R2dbcBadGrammarException("test", "42000", 0); + + assertThat(getter.getDbResponseStatusCode(request, null, error)).isEqualTo("42000"); + assertThat(getter.getErrorType(request, null, error)).isEqualTo("42000"); + } + private static Throwable postgresqlConnectionClosedException() throws ReflectiveOperationException { Class exceptionClass = @@ -309,4 +339,10 @@ private static QueryExecutionInfo queryExecutionInfo() { .connectionInfo(MockConnectionInfo.builder().build()) .build(); } + + private static DbExecution request(String dbSystemName) { + return new DbExecution( + queryExecutionInfo(), + ConnectionFactoryOptions.parse("r2dbc:" + dbSystemName + "://localhost/db")); + } } diff --git a/instrumentation/vertx/vertx-sql-client/vertx-sql-client-5.0/javaagent/src/unitTests/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetterTest.java b/instrumentation/vertx/vertx-sql-client/vertx-sql-client-5.0/javaagent/src/unitTests/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetterTest.java index a5079c2385e9..1ec4163cfd21 100644 --- a/instrumentation/vertx/vertx-sql-client/vertx-sql-client-5.0/javaagent/src/unitTests/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetterTest.java +++ b/instrumentation/vertx/vertx-sql-client/vertx-sql-client-5.0/javaagent/src/unitTests/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetterTest.java @@ -16,9 +16,7 @@ class VertxSqlClientAttributesGetterTest { private final VertxSqlClientAttributesGetter getter = new VertxSqlClientAttributesGetter(); - private final VertxSqlClientRequest request = - new VertxSqlClientRequest( - "select 1", VertxSqlClientInfo.createUnknown("oracle.db"), false, null); + private final VertxSqlClientRequest request = request("oracle.db"); @Test void omitsClientConnectionStatusWithoutChangingErrorType() { @@ -40,7 +38,34 @@ void keepsServerStatusWithoutTransportFailure() { DatabaseException error = new DatabaseException("Server failure", 12541, "66000", cause) {}; assertThat(getter.getErrorType(request, null, error)).isEqualTo("66000"); - assertThat(getter.getDbResponseStatusCode(request, null, error)).isEqualTo("66000"); + assertThat(getter.getDbResponseStatusCode(request, null, error)).isEqualTo("12541"); + } + + @Test + void prefersMysqlVendorCodeWithoutChangingErrorType() { + VertxSqlClientRequest mysqlRequest = request("mysql.db"); + DatabaseException error = new DatabaseException("Syntax error", 1064, "42000") {}; + + assertThat(getter.getErrorType(mysqlRequest, null, error)).isEqualTo("42000"); + assertThat(getter.getDbResponseStatusCode(mysqlRequest, null, error)).isEqualTo("1064"); + } + + @Test + void usesMysqlVendorCodeWhenSqlStateIsUnavailable() { + VertxSqlClientRequest mysqlRequest = request("mysql.db"); + DatabaseException error = new DatabaseException("Syntax error", 1064, null) {}; + + assertThat(getter.getErrorType(mysqlRequest, null, error)).isEqualTo("null"); + assertThat(getter.getDbResponseStatusCode(mysqlRequest, null, error)).isEqualTo("1064"); + } + + @Test + void fallsBackToSqlStateWhenVendorCodeIsUnavailable() { + VertxSqlClientRequest mysqlRequest = request("mysql.db"); + DatabaseException error = new DatabaseException("Syntax error", 0, "42000") {}; + + assertThat(getter.getErrorType(mysqlRequest, null, error)).isEqualTo("42000"); + assertThat(getter.getDbResponseStatusCode(mysqlRequest, null, error)).isEqualTo("42000"); } @Test @@ -57,6 +82,11 @@ void handlesCyclicCauseChain() { DatabaseException error = new DatabaseException("Server failure", 12541, "66000", cause) {}; cause.initCause(error); - assertThat(getter.getDbResponseStatusCode(request, null, error)).isEqualTo("66000"); + assertThat(getter.getDbResponseStatusCode(request, null, error)).isEqualTo("12541"); + } + + private static VertxSqlClientRequest request(String dbSystemName) { + return new VertxSqlClientRequest( + "select 1", VertxSqlClientInfo.createUnknown(dbSystemName), false, null); } } diff --git a/instrumentation/vertx/vertx-sql-client/vertx-sql-client-common-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetter.java b/instrumentation/vertx/vertx-sql-client/vertx-sql-client-common-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetter.java index 37ee2e58fe4f..4f07872100da 100644 --- a/instrumentation/vertx/vertx-sql-client/vertx-sql-client-common-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetter.java +++ b/instrumentation/vertx/vertx-sql-client/vertx-sql-client-common-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetter.java @@ -21,10 +21,15 @@ class VertxSqlClientAttributesGetter implements SqlClientAttributesGetter { + private static final String MYSQL_DATABASE = "mysql.db"; + private static final String ORACLE_DATABASE = "oracle.db"; + private static final Function responseStatusExtractor = createResponseStatusExtractor(false); private static final Function dbResponseStatusExtractor = createResponseStatusExtractor(true); + private static final Function dbResponseErrorCodeExtractor = + createNonZeroErrorCodeExtractor(); @Override public String getDbSystemName(VertxSqlClientRequest request) { @@ -77,11 +82,18 @@ public String getErrorType( public String getDbResponseStatusCode( VertxSqlClientRequest request, @Nullable Void response, @Nullable Throwable error) { if (error != null - && "oracle.db".equals(request.getDbSystemName()) + && ORACLE_DATABASE.equals(request.getDbSystemName()) && CauseUnwrapper.unwrap(error, cause -> !(cause instanceof ConnectException)) instanceof ConnectException) { return null; } + if (MYSQL_DATABASE.equals(request.getDbSystemName()) + || ORACLE_DATABASE.equals(request.getDbSystemName())) { + String errorCode = dbResponseErrorCodeExtractor.apply(error); + if (errorCode != null) { + return errorCode; + } + } return dbResponseStatusExtractor.apply(error); } @@ -104,6 +116,29 @@ private static Function createResponseStatusExtractor(boolean }; } + private static Function createNonZeroErrorCodeExtractor() { + try { + Class exClass = Class.forName("io.vertx.sqlclient.DatabaseException"); + Method method = exClass.getDeclaredMethod("getErrorCode"); + + return error -> { + if (exClass.isInstance(error)) { + try { + Object errorCode = method.invoke(error); + if (errorCode instanceof Number && ((Number) errorCode).intValue() != 0) { + return String.valueOf(errorCode); + } + } catch (IllegalAccessException | InvocationTargetException ignored) { + return null; + } + } + return null; + }; + } catch (ClassNotFoundException | NoSuchMethodException ignored) { + return error -> null; + } + } + private static Function responseStatusExtractor( String className, String methodName, boolean preserveNull) { try { From ae28575a7c6ca9553c78c5ce47b4cd337a18a035 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 26 Oct 2026 19:58:53 +0000 Subject: [PATCH 15/33] Preserve Lettuce server error statuses Co-authored-by: trask <218610+trask@users.noreply.github.com> --- .../v5_1/LettuceDbAttributesGetter.java | 4 +- .../lettuce/v5_1/OpenTelemetryTracing.java | 7 ++-- .../v5_1/LettuceDbAttributesGetterTest.java | 12 +++--- .../v5_1/AbstractLettuceAsyncClientTest.java | 6 ++- .../v5_1/AbstractLettuceSyncClientTest.java | 41 +++++++++++++++---- 5 files changed, 51 insertions(+), 19 deletions(-) diff --git a/instrumentation/lettuce/lettuce-5.1/library/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/LettuceDbAttributesGetter.java b/instrumentation/lettuce/lettuce-5.1/library/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/LettuceDbAttributesGetter.java index 44ca1ec8d0c1..02828eb4780d 100644 --- a/instrumentation/lettuce/lettuce-5.1/library/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/LettuceDbAttributesGetter.java +++ b/instrumentation/lettuce/lettuce-5.1/library/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/LettuceDbAttributesGetter.java @@ -50,13 +50,13 @@ public String getDbResponseStatusCode( @Override public String getErrorType( LettuceRequest request, @Nullable LettuceResponse response, @Nullable Throwable error) { - if (response == null) { + if (response == null || error != null) { return null; } String errorType = response.getRedisErrorType(); // Older Lettuce tracing can report a failure without exposing its exception. // Leave exception-class fallback to the shared extractor when an exception is available. - return errorType == null && response.isFailed() && error == null ? "_OTHER" : errorType; + return errorType == null && response.isFailed() ? "_OTHER" : errorType; } @Nullable diff --git a/instrumentation/lettuce/lettuce-5.1/library/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/OpenTelemetryTracing.java b/instrumentation/lettuce/lettuce-5.1/library/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/OpenTelemetryTracing.java index 859929c2a8cd..869fccef8231 100644 --- a/instrumentation/lettuce/lettuce-5.1/library/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/OpenTelemetryTracing.java +++ b/instrumentation/lettuce/lettuce-5.1/library/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/OpenTelemetryTracing.java @@ -6,6 +6,7 @@ package io.opentelemetry.instrumentation.lettuce.v5_1; import com.google.errorprone.annotations.CanIgnoreReturnValue; +import io.lettuce.core.RedisCommandExecutionException; import io.lettuce.core.output.CommandOutput; import io.lettuce.core.protocol.AsyncCommand; import io.lettuce.core.protocol.CommandWrapper; @@ -313,11 +314,11 @@ public void finish() { private void finishFromOutput( @Nullable CommandOutput output, @Nullable Throwable error) { - if (error != null) { + if (error != null && !(error instanceof RedisCommandExecutionException)) { end(null, error); - } else { - end(LettuceResponse.fromCommandOutput(output), null); + return; } + end(LettuceResponse.fromCommandOutput(output), error); } private void end(@Nullable LettuceResponse response, @Nullable Throwable error) { diff --git a/instrumentation/lettuce/lettuce-5.1/library/src/test/java/io/opentelemetry/instrumentation/lettuce/v5_1/LettuceDbAttributesGetterTest.java b/instrumentation/lettuce/lettuce-5.1/library/src/test/java/io/opentelemetry/instrumentation/lettuce/v5_1/LettuceDbAttributesGetterTest.java index 24dc0c69d0a1..2b8dde20b6d1 100644 --- a/instrumentation/lettuce/lettuce-5.1/library/src/test/java/io/opentelemetry/instrumentation/lettuce/v5_1/LettuceDbAttributesGetterTest.java +++ b/instrumentation/lettuce/lettuce-5.1/library/src/test/java/io/opentelemetry/instrumentation/lettuce/v5_1/LettuceDbAttributesGetterTest.java @@ -7,6 +7,7 @@ import static org.assertj.core.api.Assertions.assertThat; +import io.lettuce.core.RedisCommandExecutionException; import io.lettuce.core.RedisCommandTimeoutException; import io.lettuce.core.RedisNoScriptException; import org.junit.jupiter.api.Test; @@ -62,12 +63,11 @@ void omitsErrorTypeOnSuccess() { @Test void preservesExceptionFallback() { - assertThat( - getter.getErrorType( - null, - LettuceResponse.unknownFailure(), - new RedisCommandTimeoutException("Connection closed"))) - .isNull(); + LettuceResponse response = LettuceResponse.fromErrorMessage("WRONGTYPE error"); + RedisCommandExecutionException error = new RedisCommandExecutionException("WRONGTYPE error"); + + assertThat(getter.getDbResponseStatusCode(null, response, error)).isEqualTo("WRONGTYPE"); + assertThat(getter.getErrorType(null, response, error)).isNull(); } @Test diff --git a/instrumentation/lettuce/lettuce-5.1/testing/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceAsyncClientTest.java b/instrumentation/lettuce/lettuce-5.1/testing/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceAsyncClientTest.java index e53210d2dfdd..8291b97baca5 100644 --- a/instrumentation/lettuce/lettuce-5.1/testing/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceAsyncClientTest.java +++ b/instrumentation/lettuce/lettuce-5.1/testing/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceAsyncClientTest.java @@ -9,6 +9,7 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.semconv.DbAttributes.DB_OPERATION_NAME; import static io.opentelemetry.semconv.DbAttributes.DB_QUERY_TEXT; +import static io.opentelemetry.semconv.DbAttributes.DB_RESPONSE_STATUS_CODE; import static io.opentelemetry.semconv.DbAttributes.DB_SYSTEM_NAME; import static io.opentelemetry.semconv.ErrorAttributes.ERROR_TYPE; import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_ADDRESS; @@ -219,7 +220,10 @@ void testLpushWrongTypeCommandSetsSpanStatus() throws Exception { ERROR_TYPE, testLatestDeps() ? RedisCommandExecutionException.class.getName() - : "_OTHER"))) + : "_OTHER"), + equalTo( + DB_RESPONSE_STATUS_CODE, + testLatestDeps() ? "WRONGTYPE" : null))) .satisfies(AbstractLettuceClientTest::assertCommandErrorEvents))); assertCommandMetric( diff --git a/instrumentation/lettuce/lettuce-5.1/testing/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceSyncClientTest.java b/instrumentation/lettuce/lettuce-5.1/testing/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceSyncClientTest.java index 785fb7543ef4..5b9322e3339f 100644 --- a/instrumentation/lettuce/lettuce-5.1/testing/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceSyncClientTest.java +++ b/instrumentation/lettuce/lettuce-5.1/testing/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceSyncClientTest.java @@ -13,6 +13,7 @@ import static io.opentelemetry.semconv.DbAttributes.DB_NAMESPACE; import static io.opentelemetry.semconv.DbAttributes.DB_OPERATION_NAME; import static io.opentelemetry.semconv.DbAttributes.DB_QUERY_TEXT; +import static io.opentelemetry.semconv.DbAttributes.DB_RESPONSE_STATUS_CODE; import static io.opentelemetry.semconv.DbAttributes.DB_SYSTEM_NAME; import static io.opentelemetry.semconv.ErrorAttributes.ERROR_TYPE; import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_ADDRESS; @@ -317,7 +318,10 @@ void testLpushWrongTypeCommandSetsSpanStatus() { ERROR_TYPE, testLatestDeps() ? RedisCommandExecutionException.class.getName() - : "_OTHER"))) + : "_OTHER"), + equalTo( + DB_RESPONSE_STATUS_CODE, + testLatestDeps() ? "WRONGTYPE" : null))) .satisfies(AbstractLettuceClientTest::assertCommandErrorEvents))); assertCommandMetric( @@ -357,7 +361,10 @@ void testEvalshaNoScriptError() { ERROR_TYPE, testLatestDeps() ? RedisNoScriptException.class.getName() - : "_OTHER"))))); + : "_OTHER"), + equalTo( + DB_RESPONSE_STATUS_CODE, + testLatestDeps() ? "NOSCRIPT" : null))))); assertCommandMetric( "EVALSHA", testLatestDeps() ? RedisNoScriptException.class.getName() : "_OTHER"); @@ -405,7 +412,10 @@ void testServerErrorReplyWithTimeoutLookingDetails() { ERROR_TYPE, testLatestDeps() ? RedisCommandExecutionException.class.getName() - : "_OTHER"))))); + : "_OTHER"), + equalTo( + DB_RESPONSE_STATUS_CODE, + testLatestDeps() ? "ERR" : null))))); assertCommandMetric( "EVAL", testLatestDeps() ? RedisCommandExecutionException.class.getName() : "_OTHER"); @@ -540,6 +550,7 @@ void testTransactionWithThrowableValueBeforeFailure() testLatestDeps() && !queuedAcknowledgements ? RedisCommandExecutionException.class.getName() : null, + testLatestDeps() && !queuedAcknowledgements ? "ERR" : null, lettuceVersion), transactionSpan("EXEC", "EXEC", StatusData.unset(), null, lettuceVersion)); @@ -637,6 +648,7 @@ void testTransactionResultsWithFailures() testLatestDeps() && !queuedAcknowledgements ? RedisCommandExecutionException.class.getName() : null, + testLatestDeps() && !queuedAcknowledgements ? "ERR" : null, lettuceVersion), transactionSpan( "EVALSHA", @@ -647,6 +659,7 @@ void testTransactionResultsWithFailures() testLatestDeps() && !queuedAcknowledgements ? RedisNoScriptException.class.getName() : null, + testLatestDeps() && !queuedAcknowledgements ? "NOSCRIPT" : null, lettuceVersion), transactionSpan("EXEC", "EXEC", StatusData.unset(), null, lettuceVersion)); @@ -667,6 +680,16 @@ void testTransactionResultsWithFailures() private Consumer transactionSpan( String operation, String query, StatusData status, String errorType, String lettuceVersion) { + return transactionSpan(operation, query, status, errorType, null, lettuceVersion); + } + + private Consumer transactionSpan( + String operation, + String query, + StatusData status, + String errorType, + String responseStatusCode, + String lettuceVersion) { boolean missingEndpoint = "6.0.0.RELEASE".equals(lettuceVersion); return trace -> trace.hasSpansSatisfyingExactly( @@ -688,7 +711,8 @@ private Consumer transactionSpan( lettuceVersion != null && lettuceVersion.startsWith("6.5.0.RELEASE") ? String.valueOf(DB_INDEX) : null), - equalTo(ERROR_TYPE, errorType))); + equalTo(ERROR_TYPE, errorType), + equalTo(DB_RESPONSE_STATUS_CODE, responseStatusCode))); } @Test @@ -832,7 +856,8 @@ void testDebugSegfaultCommandWithNoArgumentProducesNoSpan() { equalTo(DB_OPERATION_NAME, "CLIENT"), equalTo( ERROR_TYPE, - RedisCommandExecutionException.class.getName())))), + RedisCommandExecutionException.class.getName()), + equalTo(DB_RESPONSE_STATUS_CODE, "ERR")))), trace -> trace.hasSpansSatisfyingExactly( span -> @@ -851,7 +876,8 @@ void testDebugSegfaultCommandWithNoArgumentProducesNoSpan() { equalTo(DB_OPERATION_NAME, "CLIENT"), equalTo( ERROR_TYPE, - RedisCommandExecutionException.class.getName())))), + RedisCommandExecutionException.class.getName()), + equalTo(DB_RESPONSE_STATUS_CODE, "ERR")))), trace -> trace.hasSpansSatisfyingExactly( span -> @@ -870,7 +896,8 @@ void testDebugSegfaultCommandWithNoArgumentProducesNoSpan() { equalTo(DB_OPERATION_NAME, "CLIENT"), equalTo( ERROR_TYPE, - RedisCommandExecutionException.class.getName())))), + RedisCommandExecutionException.class.getName()), + equalTo(DB_RESPONSE_STATUS_CODE, "ERR")))), trace -> trace.hasSpansSatisfyingExactly( span -> From 0f5b5655cc292cdb314c643d66f71b5b6b8d1eae Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 26 Oct 2026 20:23:47 +0000 Subject: [PATCH 16/33] Fix Vert.x MySQL response status extraction Co-authored-by: trask <218610+trask@users.noreply.github.com> --- .../VertxSqlClientAttributesGetterTest.java | 7 +-- .../javaagent-unit-tests/build.gradle.kts | 1 + .../VertxSqlClientAttributesGetterTest.java | 43 +++++++++++++++++++ .../v4_0/VertxSqlClientAttributesGetter.java | 25 +++++++++-- 4 files changed, 69 insertions(+), 7 deletions(-) create mode 100644 instrumentation/vertx/vertx-sql-client/vertx-sql-client-common-4.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetterTest.java diff --git a/instrumentation/vertx/vertx-sql-client/vertx-sql-client-5.0/javaagent/src/unitTests/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetterTest.java b/instrumentation/vertx/vertx-sql-client/vertx-sql-client-5.0/javaagent/src/unitTests/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetterTest.java index 1ec4163cfd21..35dcec91022c 100644 --- a/instrumentation/vertx/vertx-sql-client/vertx-sql-client-5.0/javaagent/src/unitTests/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetterTest.java +++ b/instrumentation/vertx/vertx-sql-client/vertx-sql-client-5.0/javaagent/src/unitTests/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetterTest.java @@ -5,6 +5,7 @@ package io.opentelemetry.javaagent.instrumentation.vertx.sqlclient.common.v4_0; +import static io.opentelemetry.semconv.DbAttributes.DbSystemNameValues.MYSQL; import static org.assertj.core.api.Assertions.assertThat; import io.vertx.sqlclient.DatabaseException; @@ -43,7 +44,7 @@ void keepsServerStatusWithoutTransportFailure() { @Test void prefersMysqlVendorCodeWithoutChangingErrorType() { - VertxSqlClientRequest mysqlRequest = request("mysql.db"); + VertxSqlClientRequest mysqlRequest = request(MYSQL); DatabaseException error = new DatabaseException("Syntax error", 1064, "42000") {}; assertThat(getter.getErrorType(mysqlRequest, null, error)).isEqualTo("42000"); @@ -52,7 +53,7 @@ void prefersMysqlVendorCodeWithoutChangingErrorType() { @Test void usesMysqlVendorCodeWhenSqlStateIsUnavailable() { - VertxSqlClientRequest mysqlRequest = request("mysql.db"); + VertxSqlClientRequest mysqlRequest = request(MYSQL); DatabaseException error = new DatabaseException("Syntax error", 1064, null) {}; assertThat(getter.getErrorType(mysqlRequest, null, error)).isEqualTo("null"); @@ -61,7 +62,7 @@ void usesMysqlVendorCodeWhenSqlStateIsUnavailable() { @Test void fallsBackToSqlStateWhenVendorCodeIsUnavailable() { - VertxSqlClientRequest mysqlRequest = request("mysql.db"); + VertxSqlClientRequest mysqlRequest = request(MYSQL); DatabaseException error = new DatabaseException("Syntax error", 0, "42000") {}; assertThat(getter.getErrorType(mysqlRequest, null, error)).isEqualTo("42000"); diff --git a/instrumentation/vertx/vertx-sql-client/vertx-sql-client-common-4.0/javaagent-unit-tests/build.gradle.kts b/instrumentation/vertx/vertx-sql-client/vertx-sql-client-common-4.0/javaagent-unit-tests/build.gradle.kts index 4563806b52a4..98693df36d3a 100644 --- a/instrumentation/vertx/vertx-sql-client/vertx-sql-client-common-4.0/javaagent-unit-tests/build.gradle.kts +++ b/instrumentation/vertx/vertx-sql-client/vertx-sql-client-common-4.0/javaagent-unit-tests/build.gradle.kts @@ -10,5 +10,6 @@ dependencies { ), ) testImplementation("io.opentelemetry:opentelemetry-sdk-testing") + testImplementation("io.vertx:vertx-mysql-client:4.0.0") testImplementation("io.vertx:vertx-sql-client:4.0.0") } diff --git a/instrumentation/vertx/vertx-sql-client/vertx-sql-client-common-4.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetterTest.java b/instrumentation/vertx/vertx-sql-client/vertx-sql-client-common-4.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetterTest.java new file mode 100644 index 000000000000..a0ed2b8bdd6e --- /dev/null +++ b/instrumentation/vertx/vertx-sql-client/vertx-sql-client-common-4.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetterTest.java @@ -0,0 +1,43 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.vertx.sqlclient.common.v4_0; + +import static io.opentelemetry.semconv.DbAttributes.DbSystemNameValues.MYSQL; +import static org.assertj.core.api.Assertions.assertThat; + +import io.vertx.mysqlclient.MySQLException; +import org.junit.jupiter.api.Test; + +class VertxSqlClientAttributesGetterTest { + + private final VertxSqlClientAttributesGetter getter = new VertxSqlClientAttributesGetter(); + private final VertxSqlClientRequest request = + new VertxSqlClientRequest( + "select 1", VertxSqlClientInfo.createUnknown(MYSQL), false, null); + + @Test + void prefersMysqlVendorCodeWithoutChangingErrorType() { + MySQLException error = new MySQLException("Syntax error", 1064, "42000"); + + assertThat(getter.getDbResponseStatusCode(request, null, error)).isEqualTo("1064"); + assertThat(getter.getErrorType(request, null, error)).isNull(); + } + + @Test + void fallsBackToMysqlSqlStateWhenVendorCodeIsUnavailable() { + MySQLException error = new MySQLException("Syntax error", 0, "42000"); + + assertThat(getter.getDbResponseStatusCode(request, null, error)).isEqualTo("42000"); + assertThat(getter.getErrorType(request, null, error)).isNull(); + } + + @Test + void keepsMysqlVendorCodeWhenSqlStateIsUnavailable() { + MySQLException error = new MySQLException("Syntax error", 1064, null); + + assertThat(getter.getDbResponseStatusCode(request, null, error)).isEqualTo("1064"); + } +} diff --git a/instrumentation/vertx/vertx-sql-client/vertx-sql-client-common-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetter.java b/instrumentation/vertx/vertx-sql-client/vertx-sql-client-common-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetter.java index 4f07872100da..fcce3af868a5 100644 --- a/instrumentation/vertx/vertx-sql-client/vertx-sql-client-common-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetter.java +++ b/instrumentation/vertx/vertx-sql-client/vertx-sql-client-common-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetter.java @@ -6,6 +6,7 @@ package io.opentelemetry.javaagent.instrumentation.vertx.sqlclient.common.v4_0; import static io.opentelemetry.instrumentation.api.incubator.semconv.db.internal.SqlDialectUtil.fromDbSystemName; +import static io.opentelemetry.semconv.DbAttributes.DbSystemNameValues.MYSQL; import static java.util.Collections.singleton; import io.opentelemetry.instrumentation.api.incubator.semconv.db.SqlClientAttributesGetter; @@ -21,13 +22,14 @@ class VertxSqlClientAttributesGetter implements SqlClientAttributesGetter { - private static final String MYSQL_DATABASE = "mysql.db"; private static final String ORACLE_DATABASE = "oracle.db"; private static final Function responseStatusExtractor = createResponseStatusExtractor(false); private static final Function dbResponseStatusExtractor = createResponseStatusExtractor(true); + private static final Function mysqlDbResponseStatusExtractor = + responseStatusExtractor("io.vertx.mysqlclient.MySQLException", "getSqlState", true); private static final Function dbResponseErrorCodeExtractor = createNonZeroErrorCodeExtractor(); @@ -87,14 +89,18 @@ public String getDbResponseStatusCode( instanceof ConnectException) { return null; } - if (MYSQL_DATABASE.equals(request.getDbSystemName()) + if (MYSQL.equals(request.getDbSystemName()) || ORACLE_DATABASE.equals(request.getDbSystemName())) { String errorCode = dbResponseErrorCodeExtractor.apply(error); if (errorCode != null) { return errorCode; } } - return dbResponseStatusExtractor.apply(error); + String status = dbResponseStatusExtractor.apply(error); + if (status != null || !MYSQL.equals(request.getDbSystemName())) { + return status; + } + return mysqlDbResponseStatusExtractor.apply(error); } @Override @@ -117,8 +123,19 @@ private static Function createResponseStatusExtractor(boolean } private static Function createNonZeroErrorCodeExtractor() { + Function databaseExceptionExtractor = + nonZeroErrorCodeExtractor("io.vertx.sqlclient.DatabaseException"); + Function mysqlExceptionExtractor = + nonZeroErrorCodeExtractor("io.vertx.mysqlclient.MySQLException"); + return error -> { + String errorCode = databaseExceptionExtractor.apply(error); + return errorCode != null ? errorCode : mysqlExceptionExtractor.apply(error); + }; + } + + private static Function nonZeroErrorCodeExtractor(String className) { try { - Class exClass = Class.forName("io.vertx.sqlclient.DatabaseException"); + Class exClass = Class.forName(className); Method method = exClass.getDeclaredMethod("getErrorCode"); return error -> { From 8f7eadb970a8220545cf0ac29861b79d3cd12d30 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 26 Oct 2026 21:00:13 +0000 Subject: [PATCH 17/33] Prefer SQL vendor response codes Co-authored-by: trask <218610+trask@users.noreply.github.com> --- .../internal/R2dbcSqlAttributesGetter.java | 9 ++++- .../v1_0/R2dbcSqlAttributesGetterTest.java | 6 +-- .../VertxSqlClientAttributesGetterTest.java | 14 +++++++ .../javaagent-unit-tests/build.gradle.kts | 2 + .../VertxSqlClientAttributesGetterTest.java | 32 ++++++++++++++- .../v4_0/VertxSqlClientAttributesGetter.java | 40 ++++++++++++++++--- 6 files changed, 92 insertions(+), 11 deletions(-) diff --git a/instrumentation/r2dbc-1.0/library/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/internal/R2dbcSqlAttributesGetter.java b/instrumentation/r2dbc-1.0/library/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/internal/R2dbcSqlAttributesGetter.java index 2d95b21b0d46..bc06da9837f2 100644 --- a/instrumentation/r2dbc-1.0/library/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/internal/R2dbcSqlAttributesGetter.java +++ b/instrumentation/r2dbc-1.0/library/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/internal/R2dbcSqlAttributesGetter.java @@ -23,6 +23,9 @@ public final class R2dbcSqlAttributesGetter private static final String POSTGRESQL_DATABASE = "postgresql"; private static final String MYSQL_DATABASE = "mysql"; private static final String MARIADB_DATABASE = "mariadb"; + private static final String ORACLE_DATABASE = "oracle.db"; + private static final String SQL_SERVER_DATABASE = "microsoft.sql_server"; + private static final String DB2_DATABASE = "ibm.db2"; private static final String POSTGRESQL_CLOSED_CONNECTION_EXCEPTION = "io.r2dbc.postgresql.client.ReactorNettyClient$PostgresConnectionClosedException"; private static final String POSTGRESQL_CONNECTION_FAILURE = "08006"; @@ -72,7 +75,11 @@ public String getDbResponseStatusCode( && POSTGRESQL_CONNECTION_FAILURE.equals(getSqlState(error))) { return null; } - if (MYSQL_DATABASE.equals(dbSystemName) || MARIADB_DATABASE.equals(dbSystemName)) { + if (MYSQL_DATABASE.equals(dbSystemName) + || MARIADB_DATABASE.equals(dbSystemName) + || ORACLE_DATABASE.equals(dbSystemName) + || SQL_SERVER_DATABASE.equals(dbSystemName) + || DB2_DATABASE.equals(dbSystemName)) { int errorCode = getErrorCode(error); if (errorCode != 0) { return Integer.toString(errorCode); diff --git a/instrumentation/r2dbc-1.0/library/src/test/java/io/opentelemetry/instrumentation/r2dbc/v1_0/R2dbcSqlAttributesGetterTest.java b/instrumentation/r2dbc-1.0/library/src/test/java/io/opentelemetry/instrumentation/r2dbc/v1_0/R2dbcSqlAttributesGetterTest.java index 1d9e396e0322..b448da4bbace 100644 --- a/instrumentation/r2dbc-1.0/library/src/test/java/io/opentelemetry/instrumentation/r2dbc/v1_0/R2dbcSqlAttributesGetterTest.java +++ b/instrumentation/r2dbc-1.0/library/src/test/java/io/opentelemetry/instrumentation/r2dbc/v1_0/R2dbcSqlAttributesGetterTest.java @@ -78,7 +78,7 @@ void keepsPostgresqlServerConnectionFailureCode() throws ReflectiveOperationExce } @ParameterizedTest - @ValueSource(strings = {"mysql", "mariadb"}) + @ValueSource(strings = {"mysql", "mariadb", "oracle", "mssql", "db2"}) void prefersVendorCodeWithoutChangingErrorType(String dbSystemName) { DbExecution request = request(dbSystemName); Throwable error = new R2dbcBadGrammarException("test", "42000", 1064); @@ -88,7 +88,7 @@ void prefersVendorCodeWithoutChangingErrorType(String dbSystemName) { } @ParameterizedTest - @ValueSource(strings = {"mysql", "mariadb"}) + @ValueSource(strings = {"mysql", "mariadb", "oracle", "mssql", "db2"}) void usesVendorCodeWhenSqlStateIsUnavailable(String dbSystemName) { DbExecution request = request(dbSystemName); Throwable error = new R2dbcBadGrammarException("test", null, 1064); @@ -98,7 +98,7 @@ void usesVendorCodeWhenSqlStateIsUnavailable(String dbSystemName) { } @ParameterizedTest - @ValueSource(strings = {"mysql", "mariadb"}) + @ValueSource(strings = {"mysql", "mariadb", "oracle", "mssql", "db2"}) void fallsBackToSqlStateWhenVendorCodeIsUnavailable(String dbSystemName) { DbExecution request = request(dbSystemName); Throwable error = new R2dbcBadGrammarException("test", "42000", 0); diff --git a/instrumentation/vertx/vertx-sql-client/vertx-sql-client-5.0/javaagent/src/unitTests/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetterTest.java b/instrumentation/vertx/vertx-sql-client/vertx-sql-client-5.0/javaagent/src/unitTests/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetterTest.java index 35dcec91022c..4cfebb63de3f 100644 --- a/instrumentation/vertx/vertx-sql-client/vertx-sql-client-5.0/javaagent/src/unitTests/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetterTest.java +++ b/instrumentation/vertx/vertx-sql-client/vertx-sql-client-5.0/javaagent/src/unitTests/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetterTest.java @@ -5,7 +5,9 @@ package io.opentelemetry.javaagent.instrumentation.vertx.sqlclient.common.v4_0; +import static io.opentelemetry.semconv.DbAttributes.DbSystemNameValues.MICROSOFT_SQL_SERVER; import static io.opentelemetry.semconv.DbAttributes.DbSystemNameValues.MYSQL; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DbSystemNameIncubatingValues.IBM_DB2; import static org.assertj.core.api.Assertions.assertThat; import io.vertx.sqlclient.DatabaseException; @@ -13,6 +15,8 @@ import java.net.ConnectException; import java.sql.SQLException; import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.ValueSource; class VertxSqlClientAttributesGetterTest { @@ -69,6 +73,16 @@ void fallsBackToSqlStateWhenVendorCodeIsUnavailable() { assertThat(getter.getDbResponseStatusCode(mysqlRequest, null, error)).isEqualTo("42000"); } + @ParameterizedTest + @ValueSource(strings = {MICROSOFT_SQL_SERVER, IBM_DB2}) + void prefersVendorCodeWithoutChangingErrorType(String dbSystemName) { + VertxSqlClientRequest request = request(dbSystemName); + DatabaseException error = new DatabaseException("Syntax error", 208, "42000") {}; + + assertThat(getter.getDbResponseStatusCode(request, null, error)).isEqualTo("208"); + assertThat(getter.getErrorType(request, null, error)).isEqualTo("42000"); + } + @Test void omitsNullSqlStateWithoutChangingErrorType() { DatabaseException error = new DatabaseException("Unknown SQLSTATE", 0, null) {}; diff --git a/instrumentation/vertx/vertx-sql-client/vertx-sql-client-common-4.0/javaagent-unit-tests/build.gradle.kts b/instrumentation/vertx/vertx-sql-client/vertx-sql-client-common-4.0/javaagent-unit-tests/build.gradle.kts index 98693df36d3a..5fb9c6527ed8 100644 --- a/instrumentation/vertx/vertx-sql-client/vertx-sql-client-common-4.0/javaagent-unit-tests/build.gradle.kts +++ b/instrumentation/vertx/vertx-sql-client/vertx-sql-client-common-4.0/javaagent-unit-tests/build.gradle.kts @@ -10,6 +10,8 @@ dependencies { ), ) testImplementation("io.opentelemetry:opentelemetry-sdk-testing") + testImplementation("io.vertx:vertx-db2-client:4.0.0") testImplementation("io.vertx:vertx-mysql-client:4.0.0") + testImplementation("io.vertx:vertx-mssql-client:4.0.0") testImplementation("io.vertx:vertx-sql-client:4.0.0") } diff --git a/instrumentation/vertx/vertx-sql-client/vertx-sql-client-common-4.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetterTest.java b/instrumentation/vertx/vertx-sql-client/vertx-sql-client-common-4.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetterTest.java index a0ed2b8bdd6e..f80daa6b28d8 100644 --- a/instrumentation/vertx/vertx-sql-client/vertx-sql-client-common-4.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetterTest.java +++ b/instrumentation/vertx/vertx-sql-client/vertx-sql-client-common-4.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetterTest.java @@ -5,9 +5,13 @@ package io.opentelemetry.javaagent.instrumentation.vertx.sqlclient.common.v4_0; +import static io.opentelemetry.semconv.DbAttributes.DbSystemNameValues.MICROSOFT_SQL_SERVER; import static io.opentelemetry.semconv.DbAttributes.DbSystemNameValues.MYSQL; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DbSystemNameIncubatingValues.IBM_DB2; import static org.assertj.core.api.Assertions.assertThat; +import io.vertx.db2client.DB2Exception; +import io.vertx.mssqlclient.MSSQLException; import io.vertx.mysqlclient.MySQLException; import org.junit.jupiter.api.Test; @@ -15,8 +19,7 @@ class VertxSqlClientAttributesGetterTest { private final VertxSqlClientAttributesGetter getter = new VertxSqlClientAttributesGetter(); private final VertxSqlClientRequest request = - new VertxSqlClientRequest( - "select 1", VertxSqlClientInfo.createUnknown(MYSQL), false, null); + new VertxSqlClientRequest("select 1", VertxSqlClientInfo.createUnknown(MYSQL), false, null); @Test void prefersMysqlVendorCodeWithoutChangingErrorType() { @@ -40,4 +43,29 @@ void keepsMysqlVendorCodeWhenSqlStateIsUnavailable() { assertThat(getter.getDbResponseStatusCode(request, null, error)).isEqualTo("1064"); } + + @Test + void extractsLegacyMssqlErrorCodeWithoutChangingErrorType() { + VertxSqlClientRequest request = + new VertxSqlClientRequest( + "select 1", VertxSqlClientInfo.createUnknown(MICROSOFT_SQL_SERVER), false, null); + MSSQLException error = + new MSSQLException(208, (byte) 1, (byte) 16, "Invalid object", null, null, 1); + + assertThat(getter.getDbResponseStatusCode(request, null, error)).isEqualTo("208"); + assertThat(getter.getErrorType(request, null, error)).isNull(); + } + + @Test + void extractsLegacyDb2ErrorCodeAndFallsBackToSqlState() { + VertxSqlClientRequest request = + new VertxSqlClientRequest( + "select 1", VertxSqlClientInfo.createUnknown(IBM_DB2), false, null); + DB2Exception error = new DB2Exception(-204, "42704"); + DB2Exception errorWithoutCode = new DB2Exception("Unknown code", 0, "42704"); + + assertThat(getter.getDbResponseStatusCode(request, null, error)).isEqualTo("-204"); + assertThat(getter.getDbResponseStatusCode(request, null, errorWithoutCode)).isEqualTo("42704"); + assertThat(getter.getErrorType(request, null, error)).isNull(); + } } diff --git a/instrumentation/vertx/vertx-sql-client/vertx-sql-client-common-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetter.java b/instrumentation/vertx/vertx-sql-client/vertx-sql-client-common-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetter.java index fcce3af868a5..74e6c038377a 100644 --- a/instrumentation/vertx/vertx-sql-client/vertx-sql-client-common-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetter.java +++ b/instrumentation/vertx/vertx-sql-client/vertx-sql-client-common-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetter.java @@ -6,7 +6,9 @@ package io.opentelemetry.javaagent.instrumentation.vertx.sqlclient.common.v4_0; import static io.opentelemetry.instrumentation.api.incubator.semconv.db.internal.SqlDialectUtil.fromDbSystemName; +import static io.opentelemetry.semconv.DbAttributes.DbSystemNameValues.MICROSOFT_SQL_SERVER; import static io.opentelemetry.semconv.DbAttributes.DbSystemNameValues.MYSQL; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DbSystemNameIncubatingValues.IBM_DB2; import static java.util.Collections.singleton; import io.opentelemetry.instrumentation.api.incubator.semconv.db.SqlClientAttributesGetter; @@ -30,6 +32,8 @@ class VertxSqlClientAttributesGetter createResponseStatusExtractor(true); private static final Function mysqlDbResponseStatusExtractor = responseStatusExtractor("io.vertx.mysqlclient.MySQLException", "getSqlState", true); + private static final Function db2DbResponseStatusExtractor = + responseStatusExtractor("io.vertx.db2client.DB2Exception", "getSqlState", true); private static final Function dbResponseErrorCodeExtractor = createNonZeroErrorCodeExtractor(); @@ -90,17 +94,25 @@ public String getDbResponseStatusCode( return null; } if (MYSQL.equals(request.getDbSystemName()) - || ORACLE_DATABASE.equals(request.getDbSystemName())) { + || ORACLE_DATABASE.equals(request.getDbSystemName()) + || MICROSOFT_SQL_SERVER.equals(request.getDbSystemName()) + || IBM_DB2.equals(request.getDbSystemName())) { String errorCode = dbResponseErrorCodeExtractor.apply(error); if (errorCode != null) { return errorCode; } } String status = dbResponseStatusExtractor.apply(error); - if (status != null || !MYSQL.equals(request.getDbSystemName())) { + if (status != null) { return status; } - return mysqlDbResponseStatusExtractor.apply(error); + if (MYSQL.equals(request.getDbSystemName())) { + return mysqlDbResponseStatusExtractor.apply(error); + } + if (IBM_DB2.equals(request.getDbSystemName())) { + return db2DbResponseStatusExtractor.apply(error); + } + return null; } @Override @@ -127,16 +139,34 @@ private static Function createNonZeroErrorCodeExtractor() { nonZeroErrorCodeExtractor("io.vertx.sqlclient.DatabaseException"); Function mysqlExceptionExtractor = nonZeroErrorCodeExtractor("io.vertx.mysqlclient.MySQLException"); + Function db2ExceptionExtractor = + nonZeroErrorCodeExtractor("io.vertx.db2client.DB2Exception"); + Function mssqlExceptionExtractor = + nonZeroErrorCodeExtractor("io.vertx.mssqlclient.MSSQLException", "number"); return error -> { String errorCode = databaseExceptionExtractor.apply(error); - return errorCode != null ? errorCode : mysqlExceptionExtractor.apply(error); + if (errorCode == null) { + errorCode = mysqlExceptionExtractor.apply(error); + } + if (errorCode == null) { + errorCode = db2ExceptionExtractor.apply(error); + } + if (errorCode == null) { + errorCode = mssqlExceptionExtractor.apply(error); + } + return errorCode; }; } private static Function nonZeroErrorCodeExtractor(String className) { + return nonZeroErrorCodeExtractor(className, "getErrorCode"); + } + + private static Function nonZeroErrorCodeExtractor( + String className, String methodName) { try { Class exClass = Class.forName(className); - Method method = exClass.getDeclaredMethod("getErrorCode"); + Method method = exClass.getDeclaredMethod(methodName); return error -> { if (exClass.isInstance(error)) { From 77c49fa2b73d1553e6b188bd62af739c812b0f77 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 26 Oct 2026 21:30:59 +0000 Subject: [PATCH 18/33] Handle generic SQL response status fallbacks Co-authored-by: trask <218610+trask@users.noreply.github.com> --- .../jdbc/internal/JdbcAttributesGetter.java | 22 ++++++++++++- .../internal/JdbcAttributesGetterTest.java | 22 +++++++++++++ .../internal/R2dbcSqlAttributesGetter.java | 20 +++++++++-- .../v1_0/R2dbcSqlAttributesGetterTest.java | 33 +++++++++++++++++++ .../VertxSqlClientAttributesGetterTest.java | 3 +- .../v4_0/VertxSqlClientAttributesGetter.java | 7 ++-- 6 files changed, 98 insertions(+), 9 deletions(-) diff --git a/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcAttributesGetter.java b/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcAttributesGetter.java index d9ac45902a5c..076df0cd5f9a 100644 --- a/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcAttributesGetter.java +++ b/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcAttributesGetter.java @@ -22,6 +22,10 @@ */ public final class JdbcAttributesGetter implements SqlClientAttributesGetter { + // copied from DbIncubatingAttributes.DbSystemNameIncubatingValues + private static final String ORACLE_DB = "oracle.db"; + // copied from DbIncubatingAttributes.DbSystemNameIncubatingValues + private static final String OTHER_SQL = "other_sql"; private static final String H2_DATABASE = "h2database"; private static final int H2_OBJECT_CLOSED_ERROR_CODE = 90007; private static final String POSTGRESQL_DATABASE = "postgresql"; @@ -72,7 +76,7 @@ public String getDbResponseStatusCode( // H2 generates this object-closed error locally before sending a database request. return null; } - if ("oracle.db".equals(getDbSystemName(request)) && error instanceof SQLException) { + if (ORACLE_DB.equals(getDbSystemName(request)) && error instanceof SQLException) { int errorCode = ((SQLException) error).getErrorCode(); // Oracle Statement.ensureOpen() generates these locally, before any server request. if (errorCode == 17008 || errorCode == 17009) { @@ -84,6 +88,22 @@ public String getDbResponseStatusCode( && isPostgresqlConnectionClosed((SQLException) error)) { return null; } + if (OTHER_SQL.equals(getDbSystemName(request)) && error instanceof SQLException) { + SQLException sqlException = (SQLException) error; + int errorCode = sqlException.getErrorCode(); + String sqlState = sqlException.getSQLState(); + boolean hasSqlState = sqlState != null && !sqlState.isEmpty() && !sqlState.equals("00000"); + if (hasSqlState && errorCode != 0) { + return sqlState + "/" + errorCode; + } + if (hasSqlState) { + return sqlState; + } + if (errorCode != 0) { + return Integer.toString(errorCode); + } + return null; + } return getSqlExceptionCode(error); } diff --git a/instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcAttributesGetterTest.java b/instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcAttributesGetterTest.java index e0774035f4ee..ae5dd62efab2 100644 --- a/instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcAttributesGetterTest.java +++ b/instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcAttributesGetterTest.java @@ -17,6 +17,7 @@ import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DbSystemNameIncubatingValues.H2DATABASE; import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DbSystemNameIncubatingValues.IBM_DB2; import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DbSystemNameIncubatingValues.ORACLE_DB; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DbSystemNameIncubatingValues.OTHER_SQL; import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DbSystemNameIncubatingValues.SAP_HANA; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.params.provider.Arguments.argumentSet; @@ -153,6 +154,27 @@ void keepsH2ClosedObjectCodeForOtherDatabaseSystems() { assertThat(attributesGetter.getDbResponseStatusCode(request, null, error)).isEqualTo("90007"); } + @ParameterizedTest + @MethodSource("otherSqlResponseStatuses") + void formatsGenericSqlResponseStatus( + String sqlState, int errorCode, String expectedStatus, String expectedErrorType) { + DbRequest request = + DbRequest.create(DbInfo.builder().dbSystemName(OTHER_SQL).build(), "SELECT 1", false); + SQLException error = new SQLException("test", sqlState, errorCode); + + assertThat(attributesGetter.getDbResponseStatusCode(request, null, error)) + .isEqualTo(expectedStatus); + assertThat(attributesGetter.getErrorType(request, null, error)).isEqualTo(expectedErrorType); + } + + private static Stream otherSqlResponseStatuses() { + return Stream.of( + argumentSet("both codes", "42000", 1071, "42000/1071", "1071"), + argumentSet("SQLSTATE only", "42000", 0, "42000", "42000"), + argumentSet("vendor code only", null, 1071, "1071", "1071"), + argumentSet("neither code", null, 0, null, null)); + } + @Test void omitsResponseStatusWithoutSqlException() { DbRequest request = diff --git a/instrumentation/r2dbc-1.0/library/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/internal/R2dbcSqlAttributesGetter.java b/instrumentation/r2dbc-1.0/library/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/internal/R2dbcSqlAttributesGetter.java index bc06da9837f2..c7a675fc3e11 100644 --- a/instrumentation/r2dbc-1.0/library/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/internal/R2dbcSqlAttributesGetter.java +++ b/instrumentation/r2dbc-1.0/library/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/internal/R2dbcSqlAttributesGetter.java @@ -23,9 +23,12 @@ public final class R2dbcSqlAttributesGetter private static final String POSTGRESQL_DATABASE = "postgresql"; private static final String MYSQL_DATABASE = "mysql"; private static final String MARIADB_DATABASE = "mariadb"; - private static final String ORACLE_DATABASE = "oracle.db"; + // copied from DbIncubatingAttributes.DbSystemNameIncubatingValues + private static final String ORACLE_DB = "oracle.db"; private static final String SQL_SERVER_DATABASE = "microsoft.sql_server"; private static final String DB2_DATABASE = "ibm.db2"; + // copied from DbIncubatingAttributes.DbSystemNameIncubatingValues + private static final String OTHER_SQL_DATABASE = "other_sql"; private static final String POSTGRESQL_CLOSED_CONNECTION_EXCEPTION = "io.r2dbc.postgresql.client.ReactorNettyClient$PostgresConnectionClosedException"; private static final String POSTGRESQL_CONNECTION_FAILURE = "08006"; @@ -77,7 +80,7 @@ public String getDbResponseStatusCode( } if (MYSQL_DATABASE.equals(dbSystemName) || MARIADB_DATABASE.equals(dbSystemName) - || ORACLE_DATABASE.equals(dbSystemName) + || ORACLE_DB.equals(dbSystemName) || SQL_SERVER_DATABASE.equals(dbSystemName) || DB2_DATABASE.equals(dbSystemName)) { int errorCode = getErrorCode(error); @@ -85,7 +88,18 @@ public String getDbResponseStatusCode( return Integer.toString(errorCode); } } - return getSqlState(error); + String sqlState = getSqlState(error); + int errorCode = getErrorCode(error); + if (OTHER_SQL_DATABASE.equals(dbSystemName) + && sqlState != null + && !sqlState.isEmpty() + && errorCode != 0) { + return sqlState + "/" + errorCode; + } + if (sqlState != null) { + return sqlState; + } + return errorCode == 0 ? null : Integer.toString(errorCode); } private static int getErrorCode(@Nullable Throwable error) { diff --git a/instrumentation/r2dbc-1.0/library/src/test/java/io/opentelemetry/instrumentation/r2dbc/v1_0/R2dbcSqlAttributesGetterTest.java b/instrumentation/r2dbc-1.0/library/src/test/java/io/opentelemetry/instrumentation/r2dbc/v1_0/R2dbcSqlAttributesGetterTest.java index b448da4bbace..df94452ef8ec 100644 --- a/instrumentation/r2dbc-1.0/library/src/test/java/io/opentelemetry/instrumentation/r2dbc/v1_0/R2dbcSqlAttributesGetterTest.java +++ b/instrumentation/r2dbc-1.0/library/src/test/java/io/opentelemetry/instrumentation/r2dbc/v1_0/R2dbcSqlAttributesGetterTest.java @@ -97,6 +97,39 @@ void usesVendorCodeWhenSqlStateIsUnavailable(String dbSystemName) { assertThat(getter.getErrorType(request, null, error)).isNull(); } + @ParameterizedTest + @MethodSource("otherSqlResponseStatuses") + void formatsGenericSqlResponseStatus( + Throwable error, String expectedStatus, String expectedErrorType) { + DbExecution request = request("unknown"); + + assertThat(getter.getDbResponseStatusCode(request, null, error)).isEqualTo(expectedStatus); + assertThat(getter.getErrorType(request, null, error)).isEqualTo(expectedErrorType); + } + + private static Stream otherSqlResponseStatuses() { + return Stream.of( + argumentSet( + "both codes", + new R2dbcBadGrammarException("test", "42000", 1071), + "42000/1071", + "42000"), + argumentSet( + "SQLSTATE only", new R2dbcBadGrammarException("test", "42000", 0), "42000", "42000"), + argumentSet( + "vendor code only", new R2dbcBadGrammarException("test", null, 1071), "1071", null), + argumentSet("neither code", new R2dbcBadGrammarException("test"), null, null)); + } + + @Test + void keepsVendorCodeWithoutSqlStateForMappedNonPreferredSystem() { + DbExecution request = request("clickhouse"); + Throwable error = new R2dbcBadGrammarException("test", null, 1071); + + assertThat(getter.getDbResponseStatusCode(request, null, error)).isEqualTo("1071"); + assertThat(getter.getErrorType(request, null, error)).isNull(); + } + @ParameterizedTest @ValueSource(strings = {"mysql", "mariadb", "oracle", "mssql", "db2"}) void fallsBackToSqlStateWhenVendorCodeIsUnavailable(String dbSystemName) { diff --git a/instrumentation/vertx/vertx-sql-client/vertx-sql-client-5.0/javaagent/src/unitTests/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetterTest.java b/instrumentation/vertx/vertx-sql-client/vertx-sql-client-5.0/javaagent/src/unitTests/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetterTest.java index 4cfebb63de3f..01a6f9d8eecf 100644 --- a/instrumentation/vertx/vertx-sql-client/vertx-sql-client-5.0/javaagent/src/unitTests/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetterTest.java +++ b/instrumentation/vertx/vertx-sql-client/vertx-sql-client-5.0/javaagent/src/unitTests/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetterTest.java @@ -8,6 +8,7 @@ import static io.opentelemetry.semconv.DbAttributes.DbSystemNameValues.MICROSOFT_SQL_SERVER; import static io.opentelemetry.semconv.DbAttributes.DbSystemNameValues.MYSQL; import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DbSystemNameIncubatingValues.IBM_DB2; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DbSystemNameIncubatingValues.ORACLE_DB; import static org.assertj.core.api.Assertions.assertThat; import io.vertx.sqlclient.DatabaseException; @@ -21,7 +22,7 @@ class VertxSqlClientAttributesGetterTest { private final VertxSqlClientAttributesGetter getter = new VertxSqlClientAttributesGetter(); - private final VertxSqlClientRequest request = request("oracle.db"); + private final VertxSqlClientRequest request = request(ORACLE_DB); @Test void omitsClientConnectionStatusWithoutChangingErrorType() { diff --git a/instrumentation/vertx/vertx-sql-client/vertx-sql-client-common-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetter.java b/instrumentation/vertx/vertx-sql-client/vertx-sql-client-common-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetter.java index 74e6c038377a..ab48daadd447 100644 --- a/instrumentation/vertx/vertx-sql-client/vertx-sql-client-common-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetter.java +++ b/instrumentation/vertx/vertx-sql-client/vertx-sql-client-common-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetter.java @@ -9,6 +9,7 @@ import static io.opentelemetry.semconv.DbAttributes.DbSystemNameValues.MICROSOFT_SQL_SERVER; import static io.opentelemetry.semconv.DbAttributes.DbSystemNameValues.MYSQL; import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DbSystemNameIncubatingValues.IBM_DB2; +import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DbSystemNameIncubatingValues.ORACLE_DB; import static java.util.Collections.singleton; import io.opentelemetry.instrumentation.api.incubator.semconv.db.SqlClientAttributesGetter; @@ -24,8 +25,6 @@ class VertxSqlClientAttributesGetter implements SqlClientAttributesGetter { - private static final String ORACLE_DATABASE = "oracle.db"; - private static final Function responseStatusExtractor = createResponseStatusExtractor(false); private static final Function dbResponseStatusExtractor = @@ -88,13 +87,13 @@ public String getErrorType( public String getDbResponseStatusCode( VertxSqlClientRequest request, @Nullable Void response, @Nullable Throwable error) { if (error != null - && ORACLE_DATABASE.equals(request.getDbSystemName()) + && ORACLE_DB.equals(request.getDbSystemName()) && CauseUnwrapper.unwrap(error, cause -> !(cause instanceof ConnectException)) instanceof ConnectException) { return null; } if (MYSQL.equals(request.getDbSystemName()) - || ORACLE_DATABASE.equals(request.getDbSystemName()) + || ORACLE_DB.equals(request.getDbSystemName()) || MICROSOFT_SQL_SERVER.equals(request.getDbSystemName()) || IBM_DB2.equals(request.getDbSystemName())) { String errorCode = dbResponseErrorCodeExtractor.apply(error); From 678b518ca05489adeb90f456c5723d881f8ffdb4 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 26 Oct 2026 21:57:32 +0000 Subject: [PATCH 19/33] Include client-provided database statuses Co-authored-by: trask <218610+trask@users.noreply.github.com> --- .../semconv/db/DbClientAttributesGetter.java | 2 +- .../v0_5/ClickHouseErrorCodeExtractor.java | 26 -------------- .../clientv1/v0_5/ClickHouseClientV1Test.java | 2 +- .../ClickHouseErrorCodeExtractorTest.java | 5 +-- .../jdbc/internal/JdbcAttributesGetter.java | 36 ------------------- .../internal/JdbcAttributesGetterTest.java | 13 +++---- .../AbstractJdbcInstrumentationTest.java | 4 ++- .../internal/MongoDbAttributesGetter.java | 12 ++++++- .../internal/MongoDbAttributesGetterTest.java | 23 +++++++----- .../internal/R2dbcSqlAttributesGetter.java | 10 ------ .../v1_0/R2dbcSqlAttributesGetterTest.java | 4 +-- .../SpymemcachedAttributesGetterTest.java | 33 ++++++++++++++--- .../v2_12/SpymemcachedAttributesGetter.java | 26 ++++---------- .../sqlclient/v5_0/VertxSqlClientTest.java | 2 +- .../VertxSqlClientAttributesGetterTest.java | 4 +-- .../v4_0/VertxSqlClientAttributesGetter.java | 8 ----- 16 files changed, 81 insertions(+), 129 deletions(-) diff --git a/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/DbClientAttributesGetter.java b/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/DbClientAttributesGetter.java index 937ad06d552a..1c40d1206e92 100644 --- a/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/DbClientAttributesGetter.java +++ b/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/DbClientAttributesGetter.java @@ -65,7 +65,7 @@ default Map getDbQueryParameters(REQUEST request) { } /** - * Returns the status code returned by the database, if available. + * Returns an available response status code supplied by the database or client library. * *

Return {@code null} when no response status code is available, including errors represented * only by an exception class name or a fallback error type. diff --git a/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv1/v0_5/ClickHouseErrorCodeExtractor.java b/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv1/v0_5/ClickHouseErrorCodeExtractor.java index 439c2c5ffb86..4d70736f822a 100644 --- a/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv1/v0_5/ClickHouseErrorCodeExtractor.java +++ b/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv1/v0_5/ClickHouseErrorCodeExtractor.java @@ -6,11 +6,6 @@ package io.opentelemetry.javaagent.instrumentation.clickhouse.clientv1.v0_5; import com.clickhouse.client.ClickHouseException; -import java.io.InterruptedIOException; -import java.net.ConnectException; -import java.net.UnknownHostException; -import java.util.concurrent.CancellationException; -import java.util.concurrent.TimeoutException; import javax.annotation.Nullable; final class ClickHouseErrorCodeExtractor { @@ -31,27 +26,6 @@ private static String getNumericErrorCode(@Nullable Throwable error) { @Nullable static String getDbResponseStatusCode(@Nullable Throwable error) { - if (!(error instanceof ClickHouseException)) { - return null; - } - Throwable cause = error.getCause(); - if (cause != null) { - // V1 also assigns server-like codes to client failures. Server responses wrapped in - // exceptions retain the server's "Code:" message, unlike transport and cancellation errors. - if (cause instanceof ConnectException - || cause instanceof UnknownHostException - || cause instanceof InterruptedIOException - || cause instanceof TimeoutException - || cause instanceof CancellationException - || cause instanceof InterruptedException) { - return null; - } - String message = cause.getMessage(); - if (message == null - || !(message.startsWith("Code:") || message.startsWith("Poco::Exception. Code: "))) { - return null; - } - } return getNumericErrorCode(error); } diff --git a/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv1/v0_5/ClickHouseClientV1Test.java b/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv1/v0_5/ClickHouseClientV1Test.java index 97784983f889..ebf075718428 100644 --- a/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv1/v0_5/ClickHouseClientV1Test.java +++ b/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv1/v0_5/ClickHouseClientV1Test.java @@ -373,7 +373,7 @@ void testClientConnectionFailureOmitsResponseStatus() { equalTo(DB_QUERY_TEXT, "select * from non_existent_table"), equalTo(DB_QUERY_SUMMARY, "select non_existent_table"), equalTo(ERROR_TYPE, "210"), - equalTo(DB_RESPONSE_STATUS_CODE, null)))); + equalTo(DB_RESPONSE_STATUS_CODE, "210")))); } @Test diff --git a/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/src/unitTests/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv1/v0_5/ClickHouseErrorCodeExtractorTest.java b/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/src/unitTests/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv1/v0_5/ClickHouseErrorCodeExtractorTest.java index 6159f4b23bb9..b0c94829f3ed 100644 --- a/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/src/unitTests/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv1/v0_5/ClickHouseErrorCodeExtractorTest.java +++ b/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/src/unitTests/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv1/v0_5/ClickHouseErrorCodeExtractorTest.java @@ -39,10 +39,11 @@ void keepsServerCodesEvenWhenTheyOverlapClientCodes(int code) { @ParameterizedTest @MethodSource("clientFailures") - void omitsClientCodesWithoutChangingErrorType( + void retainsClientCodesWithoutChangingErrorType( ClickHouseException error, String expectedErrorType) { assertThat(ClickHouseErrorCodeExtractor.getErrorType(error)).isEqualTo(expectedErrorType); - assertThat(ClickHouseErrorCodeExtractor.getDbResponseStatusCode(error)).isNull(); + assertThat(ClickHouseErrorCodeExtractor.getDbResponseStatusCode(error)) + .isEqualTo(expectedErrorType); } private static Stream clientFailures() { diff --git a/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcAttributesGetter.java b/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcAttributesGetter.java index 076df0cd5f9a..812332b520c3 100644 --- a/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcAttributesGetter.java +++ b/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcAttributesGetter.java @@ -22,15 +22,8 @@ */ public final class JdbcAttributesGetter implements SqlClientAttributesGetter { - // copied from DbIncubatingAttributes.DbSystemNameIncubatingValues - private static final String ORACLE_DB = "oracle.db"; // copied from DbIncubatingAttributes.DbSystemNameIncubatingValues private static final String OTHER_SQL = "other_sql"; - private static final String H2_DATABASE = "h2database"; - private static final int H2_OBJECT_CLOSED_ERROR_CODE = 90007; - private static final String POSTGRESQL_DATABASE = "postgresql"; - private static final String POSTGRESQL_CONNECTION_DOES_NOT_EXIST = "08003"; - private static final String POSTGRESQL_CONNECTION_CLASS = "org.postgresql.jdbc.PgConnection"; @Override public String getDbSystemName(DbRequest request) { @@ -69,25 +62,6 @@ public String getErrorType( @Override public String getDbResponseStatusCode( DbRequest request, @Nullable Void response, @Nullable Throwable error) { - if (H2_DATABASE.equals(getDbSystemName(request)) - && error instanceof SQLException - && ((SQLException) error).getErrorCode() == H2_OBJECT_CLOSED_ERROR_CODE - && "90007".equals(((SQLException) error).getSQLState())) { - // H2 generates this object-closed error locally before sending a database request. - return null; - } - if (ORACLE_DB.equals(getDbSystemName(request)) && error instanceof SQLException) { - int errorCode = ((SQLException) error).getErrorCode(); - // Oracle Statement.ensureOpen() generates these locally, before any server request. - if (errorCode == 17008 || errorCode == 17009) { - return null; - } - } - if (POSTGRESQL_DATABASE.equals(getDbSystemName(request)) - && error instanceof SQLException - && isPostgresqlConnectionClosed((SQLException) error)) { - return null; - } if (OTHER_SQL.equals(getDbSystemName(request)) && error instanceof SQLException) { SQLException sqlException = (SQLException) error; int errorCode = sqlException.getErrorCode(); @@ -107,16 +81,6 @@ && isPostgresqlConnectionClosed((SQLException) error)) { return getSqlExceptionCode(error); } - private static boolean isPostgresqlConnectionClosed(SQLException error) { - if (!POSTGRESQL_CONNECTION_DOES_NOT_EXIST.equals(error.getSQLState())) { - return false; - } - StackTraceElement[] stackTrace = error.getStackTrace(); - return stackTrace.length > 0 - && POSTGRESQL_CONNECTION_CLASS.equals(stackTrace[0].getClassName()) - && "checkClosed".equals(stackTrace[0].getMethodName()); - } - @Nullable private static String getSqlExceptionCode(@Nullable Throwable error) { if (!(error instanceof SQLException)) { diff --git a/instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcAttributesGetterTest.java b/instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcAttributesGetterTest.java index ae5dd62efab2..44bc3ef34aa2 100644 --- a/instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcAttributesGetterTest.java +++ b/instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcAttributesGetterTest.java @@ -90,14 +90,15 @@ request, null, new SQLException("test", sqlState, errorCode))) @ParameterizedTest @ValueSource(ints = {17008, 17009}) - void omitsOracleLocalClosedCodesWithoutChangingErrorType(int errorCode) { + void capturesOracleClosedCodesWithoutChangingErrorType(int errorCode) { DbRequest request = DbRequest.create(DbInfo.builder().dbSystemName(ORACLE_DB).build(), "SELECT 1", false); SQLException error = new SQLException("Closed locally", "99999", errorCode); assertThat(attributesGetter.getErrorType(request, null, error)) .isEqualTo(Integer.toString(errorCode)); - assertThat(attributesGetter.getDbResponseStatusCode(request, null, error)).isNull(); + assertThat(attributesGetter.getDbResponseStatusCode(request, null, error)) + .isEqualTo(Integer.toString(errorCode)); } @ParameterizedTest @@ -112,17 +113,17 @@ void keepsOtherDatabaseCodesThatOverlapOracleLocalCodes(int errorCode) { } @Test - void omitsH2LocalClosedConnectionCodeWithoutChangingErrorType() { + void capturesH2ClosedObjectCodeWithoutChangingErrorType() { DbRequest request = DbRequest.create(DbInfo.builder().dbSystemName(H2DATABASE).build(), "SELECT 1", false); SQLException error = new SQLException("The object is already closed", "90007", 90007); assertThat(attributesGetter.getErrorType(request, null, error)).isEqualTo("90007"); - assertThat(attributesGetter.getDbResponseStatusCode(request, null, error)).isNull(); + assertThat(attributesGetter.getDbResponseStatusCode(request, null, error)).isEqualTo("90007"); } @Test - void omitsPostgresqlLocalClosedConnectionCodeWithoutChangingErrorType() { + void capturesPostgresqlLocalClosedConnectionCodeWithoutChangingErrorType() { DbRequest request = DbRequest.create(DbInfo.builder().dbSystemName(POSTGRESQL).build(), "SELECT 1", false); SQLException error = new SQLException("This connection has been closed.", "08003"); @@ -132,7 +133,7 @@ void omitsPostgresqlLocalClosedConnectionCodeWithoutChangingErrorType() { }); assertThat(attributesGetter.getErrorType(request, null, error)).isEqualTo("08003"); - assertThat(attributesGetter.getDbResponseStatusCode(request, null, error)).isNull(); + assertThat(attributesGetter.getDbResponseStatusCode(request, null, error)).isEqualTo("08003"); } @Test diff --git a/instrumentation/jdbc/testing/src/main/java/io/opentelemetry/instrumentation/jdbc/testing/AbstractJdbcInstrumentationTest.java b/instrumentation/jdbc/testing/src/main/java/io/opentelemetry/instrumentation/jdbc/testing/AbstractJdbcInstrumentationTest.java index fe0d487f288d..21c6e145f753 100644 --- a/instrumentation/jdbc/testing/src/main/java/io/opentelemetry/instrumentation/jdbc/testing/AbstractJdbcInstrumentationTest.java +++ b/instrumentation/jdbc/testing/src/main/java/io/opentelemetry/instrumentation/jdbc/testing/AbstractJdbcInstrumentationTest.java @@ -2157,7 +2157,9 @@ void testFailedTransaction(String operation, ThrowingConsumer transa equalTo(DB_NAMESPACE, DATABASE_NAME_LOWER), equalTo(DB_OPERATION_NAME, operation), equalTo(ERROR_TYPE, Integer.toString(error.getErrorCode())), - equalTo(DB_RESPONSE_STATUS_CODE, null)))); + equalTo( + DB_RESPONSE_STATUS_CODE, + Integer.toString(error.getErrorCode()))))); if (emitExceptionAsLogs()) { testing() 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 7c5e88da827e..15e3614d598e 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 @@ -188,7 +188,17 @@ public String getDbResponseStatusCode( CommandStartedEvent request, @Nullable CommandSucceededEvent response, @Nullable Throwable error) { - return getServerErrorCode(response, error); + Integer writeErrorCode = getWriteErrorCode(response); + if (writeErrorCode != null) { + return writeErrorCode.toString(); + } + if (error instanceof MongoException) { + int code = ((MongoException) error).getCode(); + if (code != 0 && code != -1) { + return Integer.toString(code); + } + } + return null; } @Nullable diff --git a/instrumentation/mongo/mongo-3.1/library/src/test/java/io/opentelemetry/instrumentation/mongo/v3_1/internal/MongoDbAttributesGetterTest.java b/instrumentation/mongo/mongo-3.1/library/src/test/java/io/opentelemetry/instrumentation/mongo/v3_1/internal/MongoDbAttributesGetterTest.java index 06071edddc54..722393f94db8 100644 --- a/instrumentation/mongo/mongo-3.1/library/src/test/java/io/opentelemetry/instrumentation/mongo/v3_1/internal/MongoDbAttributesGetterTest.java +++ b/instrumentation/mongo/mongo-3.1/library/src/test/java/io/opentelemetry/instrumentation/mongo/v3_1/internal/MongoDbAttributesGetterTest.java @@ -129,12 +129,13 @@ void shouldNotSplitSurrogatePairWhenTruncating() { @ParameterizedTest @MethodSource("errorTypes") - void getErrorTypeReturnsServerCodeOrFallsBack(Throwable error, String expectedErrorType) { + void getErrorTypeAndResponseStatusKeepDistinctPolicies( + Throwable error, String expectedErrorType, String expectedStatus) { MongoDbAttributesGetter getter = new MongoDbAttributesGetter(true, DEFAULT_MAX_NORMALIZED_QUERY_LENGTH); assertThat(getter.getErrorType(null, null, error)).isEqualTo(expectedErrorType); - assertThat(getter.getDbResponseStatusCode(null, null, error)).isEqualTo(expectedErrorType); + assertThat(getter.getDbResponseStatusCode(null, null, error)).isEqualTo(expectedStatus); } @Test @@ -241,19 +242,23 @@ void jnrUnixNetworkPeerHasNoPort() { private static Stream errorTypes() { return Stream.of( - argumentSet("server error code", new MongoException(11000, "duplicate key"), "11000"), - argumentSet("zero code falls back", new MongoException(0, "boom"), null), - argumentSet("client message sentinel (-3)", new MongoException("boom"), null), + argumentSet( + "server error code", new MongoException(11000, "duplicate key"), "11000", "11000"), + argumentSet("zero code falls back", new MongoException(0, "boom"), null, null), + argumentSet("unavailable code", new MongoException(-1, "boom"), null, null), + argumentSet("client message sentinel (-3)", new MongoException("boom"), null, "-3"), argumentSet( "client message-and-cause sentinel (-4)", new MongoException("boom", new RuntimeException()), - null), + null, + "-4"), argumentSet( "socket exception sentinel (-2)", new MongoSocketException("boom", new ServerAddress()), - null), - argumentSet("non-mongo exception", new IllegalStateException("boom"), null), - argumentSet("no error", null, null)); + null, + "-2"), + argumentSet("non-mongo exception", new IllegalStateException("boom"), null, null), + argumentSet("no error", null, null, null)); } private static CommandStartedEvent commandStartedEvent() { diff --git a/instrumentation/r2dbc-1.0/library/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/internal/R2dbcSqlAttributesGetter.java b/instrumentation/r2dbc-1.0/library/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/internal/R2dbcSqlAttributesGetter.java index c7a675fc3e11..354d474c8a93 100644 --- a/instrumentation/r2dbc-1.0/library/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/internal/R2dbcSqlAttributesGetter.java +++ b/instrumentation/r2dbc-1.0/library/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/internal/R2dbcSqlAttributesGetter.java @@ -20,7 +20,6 @@ public final class R2dbcSqlAttributesGetter implements SqlClientAttributesGetter { - private static final String POSTGRESQL_DATABASE = "postgresql"; private static final String MYSQL_DATABASE = "mysql"; private static final String MARIADB_DATABASE = "mariadb"; // copied from DbIncubatingAttributes.DbSystemNameIncubatingValues @@ -29,9 +28,6 @@ public final class R2dbcSqlAttributesGetter private static final String DB2_DATABASE = "ibm.db2"; // copied from DbIncubatingAttributes.DbSystemNameIncubatingValues private static final String OTHER_SQL_DATABASE = "other_sql"; - private static final String POSTGRESQL_CLOSED_CONNECTION_EXCEPTION = - "io.r2dbc.postgresql.client.ReactorNettyClient$PostgresConnectionClosedException"; - private static final String POSTGRESQL_CONNECTION_FAILURE = "08006"; @Override public String getDbSystemName(DbExecution request) { @@ -72,12 +68,6 @@ public String getErrorType( public String getDbResponseStatusCode( DbExecution request, @Nullable Void response, @Nullable Throwable error) { String dbSystemName = getDbSystemName(request); - if (POSTGRESQL_DATABASE.equals(dbSystemName) - && error != null - && POSTGRESQL_CLOSED_CONNECTION_EXCEPTION.equals(error.getClass().getName()) - && POSTGRESQL_CONNECTION_FAILURE.equals(getSqlState(error))) { - return null; - } if (MYSQL_DATABASE.equals(dbSystemName) || MARIADB_DATABASE.equals(dbSystemName) || ORACLE_DB.equals(dbSystemName) diff --git a/instrumentation/r2dbc-1.0/library/src/test/java/io/opentelemetry/instrumentation/r2dbc/v1_0/R2dbcSqlAttributesGetterTest.java b/instrumentation/r2dbc-1.0/library/src/test/java/io/opentelemetry/instrumentation/r2dbc/v1_0/R2dbcSqlAttributesGetterTest.java index df94452ef8ec..f7cc90be9483 100644 --- a/instrumentation/r2dbc-1.0/library/src/test/java/io/opentelemetry/instrumentation/r2dbc/v1_0/R2dbcSqlAttributesGetterTest.java +++ b/instrumentation/r2dbc-1.0/library/src/test/java/io/opentelemetry/instrumentation/r2dbc/v1_0/R2dbcSqlAttributesGetterTest.java @@ -53,7 +53,7 @@ private static Stream responseStatuses() { } @Test - void omitsPostgresqlLocalClosedConnectionCodeWithoutChangingErrorType() + void capturesPostgresqlClosedConnectionCodeWithoutChangingErrorType() throws ReflectiveOperationException { DbExecution request = new DbExecution( @@ -62,7 +62,7 @@ void omitsPostgresqlLocalClosedConnectionCodeWithoutChangingErrorType() Throwable error = postgresqlConnectionClosedException(); assertThat(getter.getErrorType(request, null, error)).isEqualTo("08006"); - assertThat(getter.getDbResponseStatusCode(request, null, error)).isNull(); + assertThat(getter.getDbResponseStatusCode(request, null, error)).isEqualTo("08006"); } @Test diff --git a/instrumentation/spymemcached-2.12/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/spymemcached/v2_12/SpymemcachedAttributesGetterTest.java b/instrumentation/spymemcached-2.12/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/spymemcached/v2_12/SpymemcachedAttributesGetterTest.java index ebc9aebfea71..ea309eb0016f 100644 --- a/instrumentation/spymemcached-2.12/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/spymemcached/v2_12/SpymemcachedAttributesGetterTest.java +++ b/instrumentation/spymemcached-2.12/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/spymemcached/v2_12/SpymemcachedAttributesGetterTest.java @@ -27,6 +27,7 @@ import java.util.concurrent.atomic.AtomicReference; import net.spy.memcached.MemcachedConnection; import net.spy.memcached.MemcachedNode; +import net.spy.memcached.internal.BulkGetFuture; import net.spy.memcached.internal.GetFuture; import net.spy.memcached.internal.OperationFuture; import net.spy.memcached.ops.OperationStatus; @@ -56,7 +57,11 @@ class SpymemcachedAttributesGetterTest { "ERR_NOT_SUPPORTED", "ERR_INTERNAL", "ERR_BUSY", - "ERR_TEMP_FAIL" + "ERR_TEMP_FAIL", + "CANCELLED", + "INTERRUPTED", + "TIMEDOUT", + "ERR_CLIENT" }) void databaseOutcomeStatusesAreReportedRegardlessOfSuccess(StatusCode code) { OperationFuture future = mock(OperationFuture.class); @@ -77,7 +82,8 @@ void responseStatusDoesNotChangeErrorTypeClassification() { assertThat(getter.getDbResponseStatusCode(null, future, null)).isEqualTo("SUCCESS"); when(future.getStatus()) .thenReturn(new OperationStatus(false, "cancelled", StatusCode.CANCELLED)); - assertThat(getter.getDbResponseStatusCode(null, future, null)).isNull(); + assertThat(getter.getDbResponseStatusCode(null, future, null)).isEqualTo("CANCELLED"); + assertThat(getter.getErrorType(null, future, null)).isNull(); assertThat(getter.getDbResponseStatusCode(null, null, new IllegalStateException("failed"))) .isNull(); assertThat(getter.getDbResponseStatusCode(null, null, null)).isNull(); @@ -110,12 +116,31 @@ void getFutureStatusIsAvailableWhenResultRetrievalFails() { @EnumSource( value = StatusCode.class, names = {"TIMEDOUT", "INTERRUPTED", "ERR_CLIENT"}) - void clientStatusesRemainErrorsWithoutResponseStatusCodes(StatusCode code) { + void clientStatusesAreAvailableWithoutChangingErrorType(StatusCode code) { OperationFuture future = mock(OperationFuture.class); when(future.getStatus()).thenReturn(new OperationStatus(false, "client failure", code)); assertThat(getter.getErrorType(null, future, null)).isEqualTo(code.name()); - assertThat(getter.getDbResponseStatusCode(null, future, null)).isNull(); + assertThat(getter.getDbResponseStatusCode(null, future, null)).isEqualTo(code.name()); + } + + @Test + void cancelledFutureRetainsItsResponseStatus() { + OperationFuture future = mock(OperationFuture.class); + when(future.isCancelled()).thenReturn(true); + when(future.getStatus()) + .thenReturn(new OperationStatus(false, "cancelled", StatusCode.CANCELLED)); + + assertThat(getter.getDbResponseStatusCode(null, future, null)).isEqualTo("CANCELLED"); + assertThat(getter.getErrorType(null, future, null)).isNull(); + } + + @Test + void bulkFutureStatusIsAvailable() { + BulkGetFuture future = mock(BulkGetFuture.class); + when(future.getStatus()).thenReturn(new OperationStatus(true, "stored", StatusCode.SUCCESS)); + + assertThat(getter.getDbResponseStatusCode(null, future, null)).isEqualTo("SUCCESS"); } @Test diff --git a/instrumentation/spymemcached-2.12/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spymemcached/v2_12/SpymemcachedAttributesGetter.java b/instrumentation/spymemcached-2.12/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spymemcached/v2_12/SpymemcachedAttributesGetter.java index 0b9b5fe7c9b2..b01f85d03cff 100644 --- a/instrumentation/spymemcached-2.12/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spymemcached/v2_12/SpymemcachedAttributesGetter.java +++ b/instrumentation/spymemcached-2.12/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spymemcached/v2_12/SpymemcachedAttributesGetter.java @@ -10,6 +10,7 @@ import io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DbSystemNameIncubatingValues; import java.net.InetSocketAddress; import javax.annotation.Nullable; +import net.spy.memcached.internal.BulkFuture; import net.spy.memcached.internal.GetFuture; import net.spy.memcached.internal.OperationFuture; import net.spy.memcached.ops.OperationStatus; @@ -51,15 +52,7 @@ public String getDbResponseStatusCode( if (code == null) { return null; } - switch (code) { - case CANCELLED: - case INTERRUPTED: - case TIMEDOUT: - case ERR_CLIENT: - return null; - default: - return code.name(); - } + return code.name(); } @Override @@ -102,18 +95,13 @@ private static OperationStatus getOperationStatus( @Nullable private static OperationStatus getOperationStatus(@Nullable Object response) { if (response instanceof OperationFuture) { - OperationFuture future = (OperationFuture) response; - if (future.isCancelled()) { - return null; - } - return future.getStatus(); + return ((OperationFuture) response).getStatus(); } if (response instanceof GetFuture) { - GetFuture getFuture = (GetFuture) response; - if (getFuture.isCancelled()) { - return null; - } - return getFuture.getStatus(); + return ((GetFuture) response).getStatus(); + } + if (response instanceof BulkFuture) { + return ((BulkFuture) response).getStatus(); } return null; } diff --git a/instrumentation/vertx/vertx-sql-client/vertx-sql-client-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/v5_0/VertxSqlClientTest.java b/instrumentation/vertx/vertx-sql-client/vertx-sql-client-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/v5_0/VertxSqlClientTest.java index 83249e7ff220..be32f8bae265 100644 --- a/instrumentation/vertx/vertx-sql-client/vertx-sql-client-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/v5_0/VertxSqlClientTest.java +++ b/instrumentation/vertx/vertx-sql-client/vertx-sql-client-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/v5_0/VertxSqlClientTest.java @@ -1884,7 +1884,7 @@ private static void assertOracleConnectFailure(TraceAssert trace, Throwable erro equalTo(SERVER_ADDRESS, "127.0.0.1"), equalTo(SERVER_PORT, 1), equalTo(ERROR_TYPE, "66000"), - equalTo(DB_RESPONSE_STATUS_CODE, null))); + equalTo(DB_RESPONSE_STATUS_CODE, "12541"))); } private static void select(SqlClient client) throws Exception { diff --git a/instrumentation/vertx/vertx-sql-client/vertx-sql-client-5.0/javaagent/src/unitTests/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetterTest.java b/instrumentation/vertx/vertx-sql-client/vertx-sql-client-5.0/javaagent/src/unitTests/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetterTest.java index 01a6f9d8eecf..e34dd6209503 100644 --- a/instrumentation/vertx/vertx-sql-client/vertx-sql-client-5.0/javaagent/src/unitTests/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetterTest.java +++ b/instrumentation/vertx/vertx-sql-client/vertx-sql-client-5.0/javaagent/src/unitTests/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetterTest.java @@ -25,7 +25,7 @@ class VertxSqlClientAttributesGetterTest { private final VertxSqlClientRequest request = request(ORACLE_DB); @Test - void omitsClientConnectionStatusWithoutChangingErrorType() { + void capturesOracleConnectionStatusWithoutChangingErrorType() { SQLException cause = new SQLException( "No listener", @@ -35,7 +35,7 @@ void omitsClientConnectionStatusWithoutChangingErrorType() { DatabaseException error = new DatabaseException("No listener", 12541, "66000", cause) {}; assertThat(getter.getErrorType(request, null, error)).isEqualTo("66000"); - assertThat(getter.getDbResponseStatusCode(request, null, error)).isNull(); + assertThat(getter.getDbResponseStatusCode(request, null, error)).isEqualTo("12541"); } @Test diff --git a/instrumentation/vertx/vertx-sql-client/vertx-sql-client-common-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetter.java b/instrumentation/vertx/vertx-sql-client/vertx-sql-client-common-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetter.java index ab48daadd447..72a358e9ddd1 100644 --- a/instrumentation/vertx/vertx-sql-client/vertx-sql-client-common-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetter.java +++ b/instrumentation/vertx/vertx-sql-client/vertx-sql-client-common-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetter.java @@ -14,10 +14,8 @@ import io.opentelemetry.instrumentation.api.incubator.semconv.db.SqlClientAttributesGetter; import io.opentelemetry.instrumentation.api.incubator.semconv.db.SqlDialect; -import io.opentelemetry.instrumentation.api.internal.CauseUnwrapper; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; -import java.net.ConnectException; import java.util.Collection; import java.util.function.Function; import javax.annotation.Nullable; @@ -86,12 +84,6 @@ public String getErrorType( @Override public String getDbResponseStatusCode( VertxSqlClientRequest request, @Nullable Void response, @Nullable Throwable error) { - if (error != null - && ORACLE_DB.equals(request.getDbSystemName()) - && CauseUnwrapper.unwrap(error, cause -> !(cause instanceof ConnectException)) - instanceof ConnectException) { - return null; - } if (MYSQL.equals(request.getDbSystemName()) || ORACLE_DB.equals(request.getDbSystemName()) || MICROSOFT_SQL_SERVER.equals(request.getDbSystemName()) From 03881fbfed5947cc9b7956ff80f81b8a98302e0a Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 27 Oct 2026 01:24:00 +0000 Subject: [PATCH 20/33] Capture available database response codes Co-authored-by: trask <218610+trask@users.noreply.github.com> --- .../v2_2/internal/DynamoDbErrorsTest.java | 8 +-- .../v0_5/ClickHouseErrorCodeExtractor.java | 10 +-- .../ClickHouseErrorCodeExtractorTest.java | 12 ++-- .../client/v7_16/ElasticsearchClientTest.java | 6 ++ .../rest/v6_4/ElasticsearchRest6Test.java | 5 ++ .../rest/v7_0/ElasticsearchRest7Test.java | 4 ++ .../ElasticsearchDbAttributesGetterTest.java | 12 ++-- .../v5_0/ElasticsearchDbAttributesGetter.java | 2 +- .../jdbc/internal/JdbcAttributesGetter.java | 58 +++++++++++++----- .../jdbc/datasource/JdbcTelemetryTest.java | 32 ++++++---- .../internal/JdbcAttributesGetterTest.java | 61 +++++++++++++++---- .../AbstractJdbcInstrumentationTest.java | 2 +- .../lettuce/v4_0/LettuceAsyncClientTest.java | 18 +++--- .../lettuce/v5_0/LettuceAsyncClientTest.java | 18 +++--- .../v5_1/LettuceDbAttributesGetter.java | 6 +- .../lettuce/v5_1/LettuceResponse.java | 10 +-- .../lettuce/v5_1/LettuceResponseTest.java | 4 +- .../internal/MongoDbAttributesGetterTest.java | 35 +++++++---- .../testing/AbstractMongoClientTest.java | 10 +-- .../v3_0/OpenSearchAttributesGetterTest.java | 4 +- .../v3_0/OpenSearchAttributesGetter.java | 2 +- .../OpenSearchRestAttributesGetterTest.java | 4 +- .../v1_0/OpenSearchRestAttributesGetter.java | 5 +- .../internal/R2dbcSqlAttributesGetter.java | 44 +++++++------ .../v1_0/R2dbcSqlAttributesGetterTest.java | 34 +++++++++-- .../spymemcached/v2_12/SpymemcachedTest.java | 4 ++ .../v4_0/VertxRedisClientTest.java | 36 ++++++----- .../VertxSqlClientAttributesGetterTest.java | 21 +++++++ .../VertxSqlClientAttributesGetterTest.java | 13 ++++ .../v4_0/VertxSqlClientAttributesGetter.java | 46 +++++++++----- 30 files changed, 357 insertions(+), 169 deletions(-) diff --git a/instrumentation/aws-sdk/aws-sdk-2.2/library/src/test/java/io/opentelemetry/instrumentation/awssdk/v2_2/internal/DynamoDbErrorsTest.java b/instrumentation/aws-sdk/aws-sdk-2.2/library/src/test/java/io/opentelemetry/instrumentation/awssdk/v2_2/internal/DynamoDbErrorsTest.java index 5a9cac83a561..aff7e766e62e 100644 --- a/instrumentation/aws-sdk/aws-sdk-2.2/library/src/test/java/io/opentelemetry/instrumentation/awssdk/v2_2/internal/DynamoDbErrorsTest.java +++ b/instrumentation/aws-sdk/aws-sdk-2.2/library/src/test/java/io/opentelemetry/instrumentation/awssdk/v2_2/internal/DynamoDbErrorsTest.java @@ -123,7 +123,7 @@ void sdkProtocolOutcome(boolean missingItem) { .isInstanceOf(ResourceNotFoundException.class); } } - String errorType = missingItem ? null : "ResourceNotFoundException"; + String statusCode = missingItem ? null : "ResourceNotFoundException"; testing.waitAndAssertTraces( trace -> trace.hasSpansSatisfyingExactly( @@ -137,8 +137,8 @@ void sdkProtocolOutcome(boolean missingItem) { equalTo(DB_COLLECTION_NAME, "items"), equalTo(DB_OPERATION_NAME, "GetItem"), equalTo(HTTP_RESPONSE_STATUS_CODE, missingItem ? 200L : null), - equalTo(DB_RESPONSE_STATUS_CODE, errorType), - equalTo(ERROR_TYPE, errorType), + equalTo(DB_RESPONSE_STATUS_CODE, statusCode), + equalTo(ERROR_TYPE, statusCode), equalTo(SERVER_ADDRESS, "127.0.0.1"), equalTo(SERVER_PORT, server.httpPort()), equalTo(HTTP_REQUEST_METHOD, "POST"), @@ -175,7 +175,7 @@ void sdkProtocolOutcome(boolean missingItem) { .put(DB_SYSTEM_NAME, "aws.dynamodb") .put(DB_COLLECTION_NAME, "items") .put(DB_OPERATION_NAME, "GetItem") - .put(ERROR_TYPE, errorType) + .put(ERROR_TYPE, statusCode) .build() .asMap()); }))); diff --git a/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv1/v0_5/ClickHouseErrorCodeExtractor.java b/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv1/v0_5/ClickHouseErrorCodeExtractor.java index 4d70736f822a..7e6786472c0a 100644 --- a/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv1/v0_5/ClickHouseErrorCodeExtractor.java +++ b/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv1/v0_5/ClickHouseErrorCodeExtractor.java @@ -12,21 +12,21 @@ final class ClickHouseErrorCodeExtractor { @Nullable static String getErrorType(@Nullable Throwable error) { - return getNumericErrorCode(error); + String errorCode = getErrorCode(error); + return "0".equals(errorCode) ? null : errorCode; } @Nullable - private static String getNumericErrorCode(@Nullable Throwable error) { + private static String getErrorCode(@Nullable Throwable error) { if (error instanceof ClickHouseException) { - int errorCode = ((ClickHouseException) error).getErrorCode(); - return errorCode == 0 ? null : Integer.toString(errorCode); + return Integer.toString(((ClickHouseException) error).getErrorCode()); } return null; } @Nullable static String getDbResponseStatusCode(@Nullable Throwable error) { - return getNumericErrorCode(error); + return getErrorCode(error); } private ClickHouseErrorCodeExtractor() {} diff --git a/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/src/unitTests/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv1/v0_5/ClickHouseErrorCodeExtractorTest.java b/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/src/unitTests/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv1/v0_5/ClickHouseErrorCodeExtractorTest.java index b0c94829f3ed..3112446f93c0 100644 --- a/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/src/unitTests/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv1/v0_5/ClickHouseErrorCodeExtractorTest.java +++ b/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/src/unitTests/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv1/v0_5/ClickHouseErrorCodeExtractorTest.java @@ -88,9 +88,13 @@ void omitsUnavailableCodes() { assertThat( ClickHouseErrorCodeExtractor.getDbResponseStatusCode(new IllegalStateException("test"))) .isNull(); - assertThat( - ClickHouseErrorCodeExtractor.getDbResponseStatusCode( - new ClickHouseException(0, "test", null))) - .isNull(); + } + + @Test + void keepsZeroStatusWithoutChangingErrorType() { + ClickHouseException error = new ClickHouseException(0, "test", null); + + assertThat(ClickHouseErrorCodeExtractor.getDbResponseStatusCode(error)).isEqualTo("0"); + assertThat(ClickHouseErrorCodeExtractor.getErrorType(error)).isNull(); } } diff --git a/instrumentation/elasticsearch/elasticsearch-api-client-7.16/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/api/client/v7_16/ElasticsearchClientTest.java b/instrumentation/elasticsearch/elasticsearch-api-client-7.16/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/api/client/v7_16/ElasticsearchClientTest.java index 327ee7e36e99..dc40e8d40977 100644 --- a/instrumentation/elasticsearch/elasticsearch-api-client-7.16/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/api/client/v7_16/ElasticsearchClientTest.java +++ b/instrumentation/elasticsearch/elasticsearch-api-client-7.16/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/api/client/v7_16/ElasticsearchClientTest.java @@ -13,6 +13,7 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.semconv.DbAttributes.DB_OPERATION_NAME; import static io.opentelemetry.semconv.DbAttributes.DB_QUERY_TEXT; +import static io.opentelemetry.semconv.DbAttributes.DB_RESPONSE_STATUS_CODE; import static io.opentelemetry.semconv.DbAttributes.DB_SYSTEM_NAME; import static io.opentelemetry.semconv.HttpAttributes.HTTP_REQUEST_METHOD; import static io.opentelemetry.semconv.HttpAttributes.HTTP_RESPONSE_STATUS_CODE; @@ -110,6 +111,7 @@ void elasticsearchStatus() throws IOException { .hasNoParent() .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM_NAME, ELASTICSEARCH), + equalTo(DB_RESPONSE_STATUS_CODE, "200"), equalTo(DB_OPERATION_NAME, "info"), equalTo(HTTP_REQUEST_METHOD, "GET"), equalTo(URL_FULL, httpHost.toURI() + "/"), @@ -147,6 +149,7 @@ void elasticsearchIndex() throws IOException { .hasNoParent() .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM_NAME, ELASTICSEARCH), + equalTo(DB_RESPONSE_STATUS_CODE, "201"), equalTo(DB_OPERATION_NAME, "index"), equalTo(SERVER_ADDRESS, httpHost.getHostName()), equalTo(SERVER_PORT, httpHost.getPort()), @@ -213,6 +216,7 @@ private static List searchAttributes() { new ArrayList<>( asList( equalTo(DB_SYSTEM_NAME, ELASTICSEARCH), + equalTo(DB_RESPONSE_STATUS_CODE, "200"), equalTo(DB_OPERATION_NAME, "search"), equalTo(SERVER_ADDRESS, httpHost.getHostName()), equalTo(SERVER_PORT, httpHost.getPort()), @@ -254,6 +258,7 @@ void elasticsearchStatusAsync() throws Exception { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM_NAME, ELASTICSEARCH), + equalTo(DB_RESPONSE_STATUS_CODE, "200"), equalTo(DB_OPERATION_NAME, "info"), equalTo(SERVER_ADDRESS, httpHost.getHostName()), equalTo(SERVER_PORT, httpHost.getPort()), @@ -313,6 +318,7 @@ private static void assertConfiguredTarget(String hostList) { .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM_NAME, ELASTICSEARCH), + equalTo(DB_RESPONSE_STATUS_CODE, "200"), equalTo(DB_OPERATION_NAME, "info"), equalTo(HTTP_REQUEST_METHOD, "GET"), equalTo(URL_FULL, httpHost.toURI() + "/"), diff --git a/instrumentation/elasticsearch/elasticsearch-rest-6.4/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/v6_4/ElasticsearchRest6Test.java b/instrumentation/elasticsearch/elasticsearch-rest-6.4/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/v6_4/ElasticsearchRest6Test.java index 09572039b2eb..ab423c403920 100644 --- a/instrumentation/elasticsearch/elasticsearch-rest-6.4/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/v6_4/ElasticsearchRest6Test.java +++ b/instrumentation/elasticsearch/elasticsearch-rest-6.4/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/v6_4/ElasticsearchRest6Test.java @@ -11,6 +11,7 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.semconv.DbAttributes.DB_QUERY_TEXT; +import static io.opentelemetry.semconv.DbAttributes.DB_RESPONSE_STATUS_CODE; import static io.opentelemetry.semconv.DbAttributes.DB_SYSTEM_NAME; import static io.opentelemetry.semconv.HttpAttributes.HTTP_REQUEST_METHOD; import static io.opentelemetry.semconv.HttpAttributes.HTTP_RESPONSE_STATUS_CODE; @@ -105,6 +106,7 @@ void elasticsearchStatus() throws IOException { .hasNoParent() .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM_NAME, ELASTICSEARCH), + equalTo(DB_RESPONSE_STATUS_CODE, "200"), equalTo(HTTP_REQUEST_METHOD, "GET"), equalTo(SERVER_ADDRESS, httpHost.getHostName()), equalTo(SERVER_PORT, httpHost.getPort()), @@ -151,6 +153,7 @@ void searchQueryIsCapturedAndSanitized() throws IOException { .hasNoParent() .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM_NAME, ELASTICSEARCH), + equalTo(DB_RESPONSE_STATUS_CODE, "200"), equalTo(DB_QUERY_TEXT, "{\"query\":{\"match\":{\"title\":\"?\"}}}"), equalTo(HTTP_REQUEST_METHOD, "POST"), equalTo(SERVER_ADDRESS, httpHost.getHostName()), @@ -220,6 +223,7 @@ public void onFailure(Exception e) { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM_NAME, ELASTICSEARCH), + equalTo(DB_RESPONSE_STATUS_CODE, "200"), equalTo(HTTP_REQUEST_METHOD, "GET"), equalTo(SERVER_ADDRESS, httpHost.getHostName()), equalTo(SERVER_PORT, httpHost.getPort()), @@ -292,6 +296,7 @@ private static void assertConfiguredTarget(String hostList) { .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM_NAME, ELASTICSEARCH), + equalTo(DB_RESPONSE_STATUS_CODE, "200"), equalTo(HTTP_REQUEST_METHOD, "GET"), equalTo(SERVER_ADDRESS, hasHostList ? hostList : httpHost.getHostName()), equalTo(SERVER_PORT, hasHostList ? null : Long.valueOf(httpHost.getPort())), diff --git a/instrumentation/elasticsearch/elasticsearch-rest-7.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/v7_0/ElasticsearchRest7Test.java b/instrumentation/elasticsearch/elasticsearch-rest-7.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/v7_0/ElasticsearchRest7Test.java index b2ebeba0fa30..96137dd011ec 100644 --- a/instrumentation/elasticsearch/elasticsearch-rest-7.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/v7_0/ElasticsearchRest7Test.java +++ b/instrumentation/elasticsearch/elasticsearch-rest-7.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/v7_0/ElasticsearchRest7Test.java @@ -11,6 +11,7 @@ import static io.opentelemetry.instrumentation.testing.util.TestServerServiceMapping.expectedMappedServiceName; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; +import static io.opentelemetry.semconv.DbAttributes.DB_RESPONSE_STATUS_CODE; import static io.opentelemetry.semconv.DbAttributes.DB_SYSTEM_NAME; import static io.opentelemetry.semconv.HttpAttributes.HTTP_REQUEST_METHOD; import static io.opentelemetry.semconv.HttpAttributes.HTTP_RESPONSE_STATUS_CODE; @@ -97,6 +98,7 @@ void elasticsearchStatus() throws IOException { .hasNoParent() .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM_NAME, ELASTICSEARCH), + equalTo(DB_RESPONSE_STATUS_CODE, "200"), equalTo(HTTP_REQUEST_METHOD, "GET"), equalTo(SERVER_ADDRESS, httpHost.getHostName()), equalTo(SERVER_PORT, httpHost.getPort()), @@ -173,6 +175,7 @@ public void onFailure(Exception e) { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM_NAME, ELASTICSEARCH), + equalTo(DB_RESPONSE_STATUS_CODE, "200"), equalTo(HTTP_REQUEST_METHOD, "GET"), equalTo(SERVER_ADDRESS, httpHost.getHostName()), equalTo(SERVER_PORT, httpHost.getPort()), @@ -265,6 +268,7 @@ private static void assertConfiguredTarget(String hostList) { .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM_NAME, ELASTICSEARCH), + equalTo(DB_RESPONSE_STATUS_CODE, "200"), equalTo(HTTP_REQUEST_METHOD, "GET"), equalTo(SERVER_ADDRESS, hasHostList ? hostList : httpHost.getHostName()), equalTo(SERVER_PORT, hasHostList ? null : Long.valueOf(httpHost.getPort())), diff --git a/instrumentation/elasticsearch/elasticsearch-rest-common-5.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/common/v5_0/ElasticsearchDbAttributesGetterTest.java b/instrumentation/elasticsearch/elasticsearch-rest-common-5.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/common/v5_0/ElasticsearchDbAttributesGetterTest.java index bc80e8fa221a..ec57a6910686 100644 --- a/instrumentation/elasticsearch/elasticsearch-rest-common-5.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/common/v5_0/ElasticsearchDbAttributesGetterTest.java +++ b/instrumentation/elasticsearch/elasticsearch-rest-common-5.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/common/v5_0/ElasticsearchDbAttributesGetterTest.java @@ -20,6 +20,7 @@ import java.util.stream.Stream; import org.apache.http.HttpEntity; import org.apache.http.ProtocolVersion; +import org.apache.http.StatusLine; import org.apache.http.entity.ContentType; import org.apache.http.entity.InputStreamEntity; import org.apache.http.entity.StringEntity; @@ -39,16 +40,17 @@ class ElasticsearchDbAttributesGetterTest { private static final String SANITIZED_BODY = "{\"query\":{\"match\":{\"title\":\"?\"}}}"; @ParameterizedTest - @ValueSource(ints = {0, 99, 100, 200, 201, 302, 404, 503}) - void recordsValidResponseStatusCodes(int statusCode) { + @ValueSource(ints = {-1, 0, 99, 100, 200, 201, 302, 404, 503}) + void recordsAvailableResponseStatusCodes(int statusCode) { ElasticsearchDbAttributesGetter getter = new ElasticsearchDbAttributesGetter(null); ElasticsearchRestRequest request = searchRequest(null); Response response = mock(Response.class); - when(response.getStatusLine()) - .thenReturn(new BasicStatusLine(new ProtocolVersion("HTTP", 1, 1), statusCode, "")); + StatusLine statusLine = mock(StatusLine.class); + when(statusLine.getStatusCode()).thenReturn(statusCode); + when(response.getStatusLine()).thenReturn(statusLine); assertThat(getter.getDbResponseStatusCode(request, response, null)) - .isEqualTo(statusCode >= 100 ? Integer.toString(statusCode) : null); + .isEqualTo(Integer.toString(statusCode)); assertThat(getter.getErrorType(request, response, null)) .isEqualTo(statusCode >= 400 || statusCode < 100 ? Integer.toString(statusCode) : null); } diff --git a/instrumentation/elasticsearch/elasticsearch-rest-common-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/common/v5_0/ElasticsearchDbAttributesGetter.java b/instrumentation/elasticsearch/elasticsearch-rest-common-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/common/v5_0/ElasticsearchDbAttributesGetter.java index 92ba37b75f7f..77f96a7db779 100644 --- a/instrumentation/elasticsearch/elasticsearch-rest-common-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/common/v5_0/ElasticsearchDbAttributesGetter.java +++ b/instrumentation/elasticsearch/elasticsearch-rest-common-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/common/v5_0/ElasticsearchDbAttributesGetter.java @@ -160,7 +160,7 @@ public String getDbResponseStatusCode( return null; } int statusCode = response.getStatusLine().getStatusCode(); - return statusCode >= 100 ? Integer.toString(statusCode) : null; + return Integer.toString(statusCode); } @Override diff --git a/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcAttributesGetter.java b/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcAttributesGetter.java index 812332b520c3..01920f959dfb 100644 --- a/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcAttributesGetter.java +++ b/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcAttributesGetter.java @@ -6,6 +6,10 @@ package io.opentelemetry.instrumentation.jdbc.internal; import static io.opentelemetry.instrumentation.api.incubator.semconv.db.internal.SqlDialectUtil.fromDbSystemName; +import static io.opentelemetry.semconv.DbAttributes.DbSystemNameValues.MARIADB; +import static io.opentelemetry.semconv.DbAttributes.DbSystemNameValues.MICROSOFT_SQL_SERVER; +import static io.opentelemetry.semconv.DbAttributes.DbSystemNameValues.MYSQL; +import static io.opentelemetry.semconv.DbAttributes.DbSystemNameValues.POSTGRESQL; import io.opentelemetry.instrumentation.api.incubator.semconv.db.SqlClientAttributesGetter; import io.opentelemetry.instrumentation.api.incubator.semconv.db.SqlDialect; @@ -23,7 +27,9 @@ public final class JdbcAttributesGetter implements SqlClientAttributesGetter { // copied from DbIncubatingAttributes.DbSystemNameIncubatingValues - private static final String OTHER_SQL = "other_sql"; + private static final String IBM_DB2 = "ibm.db2"; + private static final String ORACLE_DB = "oracle.db"; + private static final String SQLITE = "sqlite"; @Override public String getDbSystemName(DbRequest request) { @@ -62,23 +68,43 @@ public String getErrorType( @Override public String getDbResponseStatusCode( DbRequest request, @Nullable Void response, @Nullable Throwable error) { - if (OTHER_SQL.equals(getDbSystemName(request)) && error instanceof SQLException) { - SQLException sqlException = (SQLException) error; - int errorCode = sqlException.getErrorCode(); - String sqlState = sqlException.getSQLState(); - boolean hasSqlState = sqlState != null && !sqlState.isEmpty() && !sqlState.equals("00000"); - if (hasSqlState && errorCode != 0) { - return sqlState + "/" + errorCode; - } - if (hasSqlState) { - return sqlState; - } - if (errorCode != 0) { - return Integer.toString(errorCode); - } + if (!(error instanceof SQLException)) { return null; } - return getSqlExceptionCode(error); + SQLException sqlException = (SQLException) error; + String dbSystemName = getDbSystemName(request); + String sqlState = getAvailableSqlState(sqlException); + int errorCode = sqlException.getErrorCode(); + boolean hasErrorCode = errorCode != 0; + + if (prefersVendorCode(dbSystemName) && hasErrorCode) { + return Integer.toString(errorCode); + } + if (POSTGRESQL.equals(dbSystemName) && sqlState != null) { + return sqlState; + } + if (sqlState != null && hasErrorCode) { + return sqlState + "/" + errorCode; + } + if (sqlState != null) { + return sqlState; + } + return hasErrorCode ? Integer.toString(errorCode) : null; + } + + private static boolean prefersVendorCode(String dbSystemName) { + return IBM_DB2.equals(dbSystemName) + || MARIADB.equals(dbSystemName) + || MICROSOFT_SQL_SERVER.equals(dbSystemName) + || MYSQL.equals(dbSystemName) + || ORACLE_DB.equals(dbSystemName) + || SQLITE.equals(dbSystemName); + } + + @Nullable + private static String getAvailableSqlState(SQLException sqlException) { + String sqlState = sqlException.getSQLState(); + return sqlState == null || sqlState.isEmpty() ? null : sqlState; } @Nullable diff --git a/instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/datasource/JdbcTelemetryTest.java b/instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/datasource/JdbcTelemetryTest.java index 167086474d62..44b18dcc8614 100644 --- a/instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/datasource/JdbcTelemetryTest.java +++ b/instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/datasource/JdbcTelemetryTest.java @@ -139,7 +139,8 @@ void spanNameFallsBackToGroupTarget() throws SQLException { @ParameterizedTest @MethodSource("errorCodes") - void error(int errorCode, String sqlState, String expectedErrorType) throws SQLException { + void error(int errorCode, String sqlState, String expectedErrorType, String expectedStatusCode) + throws SQLException { JdbcTelemetry telemetry = JdbcTelemetry.builder(testing.getOpenTelemetry()).build(); DataSource source = spy(new TestDataSource()); @@ -172,11 +173,7 @@ void error(int errorCode, String sqlState, String expectedErrorType) throws SQLE equalTo(DB_QUERY_SUMMARY, "SELECT"), equalTo(SERVER_ADDRESS, "127.0.0.1"), equalTo(ERROR_TYPE, expectedErrorType), - equalTo( - DB_RESPONSE_STATUS_CODE, - expectedErrorType.equals(SQLException.class.getName()) - ? null - : expectedErrorType)))); + equalTo(DB_RESPONSE_STATUS_CODE, expectedStatusCode)))); assertDurationMetric( testing, @@ -199,18 +196,27 @@ void error(int errorCode, String sqlState, String expectedErrorType) throws SQLE private static Stream errorCodes() { return Stream.of( - argumentSet("positive vendor code takes precedence", 42, "42601", "42"), - argumentSet("negative vendor code", -42, null, "-42"), - argumentSet("SQLSTATE with zero vendor code", 0, "42601", "42601"), + argumentSet("positive vendor code", 42, "42601", "42", "42601"), + argumentSet("negative vendor code", -42, null, "-42", "-42"), + argumentSet("SQLSTATE with zero vendor code", 0, "42601", "42601", "42601"), argumentSet( - "null SQLSTATE falls back to exception class", 0, null, SQLException.class.getName()), + "null SQLSTATE falls back to exception class", + 0, + null, + SQLException.class.getName(), + null), argumentSet( - "empty SQLSTATE falls back to exception class", 0, "", SQLException.class.getName()), + "empty SQLSTATE falls back to exception class", + 0, + "", + SQLException.class.getName(), + null), argumentSet( - "successful completion SQLSTATE falls back to exception class", + "successful completion SQLSTATE is captured independently of error type", 0, "00000", - SQLException.class.getName())); + SQLException.class.getName(), + "00000")); } @Test diff --git a/instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcAttributesGetterTest.java b/instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcAttributesGetterTest.java index 44bc3ef34aa2..b31459c8b1bb 100644 --- a/instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcAttributesGetterTest.java +++ b/instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcAttributesGetterTest.java @@ -74,7 +74,8 @@ void getSqlDialectTreatsDoubleQuotesAsStringLiteralsByDefault(String dbSystemNam @ParameterizedTest @MethodSource("errorCodes") - void getErrorTypeNormalizesVendorCode(int errorCode, String sqlState, String expectedErrorType) { + void getErrorTypeNormalizesVendorCode( + int errorCode, String sqlState, String expectedErrorType, String expectedStatusCode) { DbRequest request = DbRequest.create(DbInfo.builder().dbSystemName(POSTGRESQL).build(), "SELECT 1", false); @@ -85,7 +86,7 @@ request, null, new SQLException("test", sqlState, errorCode))) assertThat( attributesGetter.getDbResponseStatusCode( request, null, new SQLException("test", sqlState, errorCode))) - .isEqualTo(expectedErrorType); + .isEqualTo(expectedStatusCode); } @ParameterizedTest @@ -105,11 +106,11 @@ void capturesOracleClosedCodesWithoutChangingErrorType(int errorCode) { @ValueSource(ints = {17008, 17009}) void keepsOtherDatabaseCodesThatOverlapOracleLocalCodes(int errorCode) { DbRequest request = - DbRequest.create(DbInfo.builder().dbSystemName(POSTGRESQL).build(), "SELECT 1", false); + DbRequest.create(DbInfo.builder().dbSystemName(OTHER_SQL).build(), "SELECT 1", false); SQLException error = new SQLException("Server failure", "99999", errorCode); assertThat(attributesGetter.getDbResponseStatusCode(request, null, error)) - .isEqualTo(Integer.toString(errorCode)); + .isEqualTo("99999/" + errorCode); } @Test @@ -119,7 +120,8 @@ void capturesH2ClosedObjectCodeWithoutChangingErrorType() { SQLException error = new SQLException("The object is already closed", "90007", 90007); assertThat(attributesGetter.getErrorType(request, null, error)).isEqualTo("90007"); - assertThat(attributesGetter.getDbResponseStatusCode(request, null, error)).isEqualTo("90007"); + assertThat(attributesGetter.getDbResponseStatusCode(request, null, error)) + .isEqualTo("90007/90007"); } @Test @@ -149,10 +151,11 @@ void keepsPostgresqlServerConnectionDoesNotExistCode() { @Test void keepsH2ClosedObjectCodeForOtherDatabaseSystems() { DbRequest request = - DbRequest.create(DbInfo.builder().dbSystemName(POSTGRESQL).build(), "SELECT 1", false); + DbRequest.create(DbInfo.builder().dbSystemName(OTHER_SQL).build(), "SELECT 1", false); SQLException error = new SQLException("Server failure", "90007", 90007); - assertThat(attributesGetter.getDbResponseStatusCode(request, null, error)).isEqualTo("90007"); + assertThat(attributesGetter.getDbResponseStatusCode(request, null, error)) + .isEqualTo("90007/90007"); } @ParameterizedTest @@ -172,10 +175,40 @@ private static Stream otherSqlResponseStatuses() { return Stream.of( argumentSet("both codes", "42000", 1071, "42000/1071", "1071"), argumentSet("SQLSTATE only", "42000", 0, "42000", "42000"), + argumentSet("success SQLSTATE", "00000", 0, "00000", null), argumentSet("vendor code only", null, 1071, "1071", "1071"), argumentSet("neither code", null, 0, null, null)); } + @ParameterizedTest + @MethodSource("vendorCodePreferredSystems") + void prefersAvailableVendorCode(String dbSystemName) { + DbRequest request = + DbRequest.create(DbInfo.builder().dbSystemName(dbSystemName).build(), "SELECT 1", false); + SQLException error = new SQLException("test", "42000", 1071); + + assertThat(attributesGetter.getDbResponseStatusCode(request, null, error)).isEqualTo("1071"); + } + + private static Stream vendorCodePreferredSystems() { + return Stream.of(IBM_DB2, MARIADB, MICROSOFT_SQL_SERVER, MYSQL, ORACLE_DB, "sqlite"); + } + + @Test + void prefersSqlStateForPostgresqlAndFallsBackToVendorCode() { + DbRequest request = + DbRequest.create(DbInfo.builder().dbSystemName(POSTGRESQL).build(), "SELECT 1", false); + + assertThat( + attributesGetter.getDbResponseStatusCode( + request, null, new SQLException("test", "42601", 42))) + .isEqualTo("42601"); + assertThat( + attributesGetter.getDbResponseStatusCode( + request, null, new SQLException("test", null, 42))) + .isEqualTo("42"); + } + @Test void omitsResponseStatusWithoutSqlException() { DbRequest request = @@ -188,12 +221,14 @@ void omitsResponseStatusWithoutSqlException() { private static Stream errorCodes() { return Stream.of( - argumentSet("positive vendor code takes precedence", 42, "42601", "42"), - argumentSet("negative vendor code", -42, null, "-42"), - argumentSet("SQLSTATE with zero vendor code", 0, "42601", "42601"), - argumentSet("null SQLSTATE is unavailable", 0, null, null), - argumentSet("empty SQLSTATE is unavailable", 0, "", null), - argumentSet("successful completion SQLSTATE is unavailable", 0, "00000", null)); + argumentSet( + "positive vendor code takes precedence for error type", 42, "42601", "42", "42601"), + argumentSet("negative vendor code", -42, null, "-42", "-42"), + argumentSet("SQLSTATE with zero vendor code", 0, "42601", "42601", "42601"), + argumentSet("null SQLSTATE is unavailable", 0, null, null, null), + argumentSet("empty SQLSTATE is unavailable", 0, "", null, null), + argumentSet( + "successful completion SQLSTATE is available for status", 0, "00000", null, "00000")); } @Test diff --git a/instrumentation/jdbc/testing/src/main/java/io/opentelemetry/instrumentation/jdbc/testing/AbstractJdbcInstrumentationTest.java b/instrumentation/jdbc/testing/src/main/java/io/opentelemetry/instrumentation/jdbc/testing/AbstractJdbcInstrumentationTest.java index 21c6e145f753..a3665ee35617 100644 --- a/instrumentation/jdbc/testing/src/main/java/io/opentelemetry/instrumentation/jdbc/testing/AbstractJdbcInstrumentationTest.java +++ b/instrumentation/jdbc/testing/src/main/java/io/opentelemetry/instrumentation/jdbc/testing/AbstractJdbcInstrumentationTest.java @@ -2159,7 +2159,7 @@ void testFailedTransaction(String operation, ThrowingConsumer transa equalTo(ERROR_TYPE, Integer.toString(error.getErrorCode())), equalTo( DB_RESPONSE_STATUS_CODE, - Integer.toString(error.getErrorCode()))))); + error.getSQLState() + "/" + error.getErrorCode())))); if (emitExceptionAsLogs()) { testing() diff --git a/instrumentation/lettuce/lettuce-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceAsyncClientTest.java b/instrumentation/lettuce/lettuce-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceAsyncClientTest.java index 6f10986be9ec..a97ccec46c11 100644 --- a/instrumentation/lettuce/lettuce-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceAsyncClientTest.java +++ b/instrumentation/lettuce/lettuce-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceAsyncClientTest.java @@ -774,10 +774,10 @@ void deferredFlushCommand(BatchScenario scenario) throws Exception { equalTo(NETWORK_PEER_ADDRESS, ip), equalTo(NETWORK_PEER_PORT, Long.valueOf(port)), equalTo(DB_OPERATION_BATCH_SIZE, scenario.batchSize), - equalTo(DB_RESPONSE_STATUS_CODE, scenario.errorType), - equalTo(ERROR_TYPE, scenario.errorType)))); + equalTo(DB_RESPONSE_STATUS_CODE, scenario.statusCode), + equalTo(ERROR_TYPE, scenario.statusCode)))); - assertErrorTypeMetric("io.opentelemetry.lettuce-4.0", scenario.errorType, 1); + assertErrorTypeMetric("io.opentelemetry.lettuce-4.0", scenario.statusCode, 1); } private static void assertErrorTypeMetric( @@ -919,7 +919,7 @@ private static Stream deferredFlushScenarios() { .operationName("PIPELINE") .batchSize(2) .exceptionType("com.lambdaworks.redis.RedisCommandExecutionException") - .errorType("ERR") + .statusCode("ERR") .build())); } @@ -928,14 +928,14 @@ private static class BatchScenario { private final String operationName; private final Long batchSize; private final String exceptionType; - private final String errorType; + private final String statusCode; private BatchScenario(Builder builder) { this.commands = builder.commands; this.operationName = builder.operationName; this.batchSize = builder.batchSize; this.exceptionType = builder.exceptionType; - this.errorType = builder.errorType; + this.statusCode = builder.statusCode; } private static Builder builder() { @@ -951,7 +951,7 @@ private static class Builder { private String operationName; private Long batchSize; private String exceptionType; - private String errorType; + private String statusCode; private Builder addCommand(BatchCommand command) { commands.add(command); @@ -968,8 +968,8 @@ private Builder batchSize(long batchSize) { return this; } - private Builder errorType(String errorType) { - this.errorType = errorType; + private Builder statusCode(String statusCode) { + this.statusCode = statusCode; return this; } diff --git a/instrumentation/lettuce/lettuce-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceAsyncClientTest.java b/instrumentation/lettuce/lettuce-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceAsyncClientTest.java index e265197a270a..009edeb502ab 100644 --- a/instrumentation/lettuce/lettuce-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceAsyncClientTest.java +++ b/instrumentation/lettuce/lettuce-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceAsyncClientTest.java @@ -756,10 +756,10 @@ void deferredFlushCommand(BatchScenario scenario) throws Exception { equalTo(DB_QUERY_TEXT, scenario.queryText), equalTo(DB_OPERATION_NAME, scenario.operationName), equalTo(DB_OPERATION_BATCH_SIZE, scenario.batchSize), - equalTo(DB_RESPONSE_STATUS_CODE, scenario.errorType), - equalTo(ERROR_TYPE, scenario.errorType)))); + equalTo(DB_RESPONSE_STATUS_CODE, scenario.statusCode), + equalTo(ERROR_TYPE, scenario.statusCode)))); - assertErrorTypeMetric("io.opentelemetry.lettuce-5.0", scenario.errorType, 1); + assertErrorTypeMetric("io.opentelemetry.lettuce-5.0", scenario.statusCode, 1); } private static void assertErrorTypeMetric( @@ -917,7 +917,7 @@ private static Stream deferredFlushScenarios() { .queryText("CONFIG SET not-a-real-config ?; SET batch-after-error ?") .batchSize(2) .exceptionType("io.lettuce.core.RedisCommandExecutionException") - .errorType("ERR") + .statusCode("ERR") .build())); } @@ -927,7 +927,7 @@ private static class BatchScenario { private final String queryText; private final Long batchSize; private final String exceptionType; - private final String errorType; + private final String statusCode; private BatchScenario(Builder builder) { this.commands = builder.commands; @@ -935,7 +935,7 @@ private BatchScenario(Builder builder) { this.queryText = builder.queryText; this.batchSize = builder.batchSize; this.exceptionType = builder.exceptionType; - this.errorType = builder.errorType; + this.statusCode = builder.statusCode; } private static Builder builder() { @@ -952,7 +952,7 @@ private static class Builder { private String queryText; private Long batchSize; private String exceptionType; - private String errorType; + private String statusCode; private Builder addCommand(BatchCommand command) { commands.add(command); @@ -974,8 +974,8 @@ private Builder batchSize(long batchSize) { return this; } - private Builder errorType(String errorType) { - this.errorType = errorType; + private Builder statusCode(String statusCode) { + this.statusCode = statusCode; return this; } diff --git a/instrumentation/lettuce/lettuce-5.1/library/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/LettuceDbAttributesGetter.java b/instrumentation/lettuce/lettuce-5.1/library/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/LettuceDbAttributesGetter.java index 02828eb4780d..ab39754157c7 100644 --- a/instrumentation/lettuce/lettuce-5.1/library/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/LettuceDbAttributesGetter.java +++ b/instrumentation/lettuce/lettuce-5.1/library/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/LettuceDbAttributesGetter.java @@ -43,7 +43,7 @@ public String getDbOperationName(LettuceRequest request) { @Override public String getDbResponseStatusCode( LettuceRequest request, @Nullable LettuceResponse response, @Nullable Throwable error) { - return response == null ? null : response.getRedisErrorType(); + return response == null ? null : response.getRedisStatusCode(); } @Nullable @@ -53,10 +53,10 @@ public String getErrorType( if (response == null || error != null) { return null; } - String errorType = response.getRedisErrorType(); + String statusCode = response.getRedisStatusCode(); // Older Lettuce tracing can report a failure without exposing its exception. // Leave exception-class fallback to the shared extractor when an exception is available. - return errorType == null && response.isFailed() ? "_OTHER" : errorType; + return statusCode == null && response.isFailed() ? "_OTHER" : statusCode; } @Nullable diff --git a/instrumentation/lettuce/lettuce-5.1/library/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/LettuceResponse.java b/instrumentation/lettuce/lettuce-5.1/library/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/LettuceResponse.java index 9e66a7c014d3..bb338ceedf27 100644 --- a/instrumentation/lettuce/lettuce-5.1/library/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/LettuceResponse.java +++ b/instrumentation/lettuce/lettuce-5.1/library/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/LettuceResponse.java @@ -12,7 +12,7 @@ final class LettuceResponse { private final boolean failed; - @Nullable private final String redisErrorType; + @Nullable private final String redisStatusCode; static LettuceResponse fromErrorMessage(@Nullable String errorMessage) { return new LettuceResponse(errorMessage != null, RedisErrorPrefix.extract(errorMessage)); @@ -26,9 +26,9 @@ static LettuceResponse unknownFailure() { return new LettuceResponse(true, null); } - private LettuceResponse(boolean failed, @Nullable String redisErrorType) { + private LettuceResponse(boolean failed, @Nullable String redisStatusCode) { this.failed = failed; - this.redisErrorType = redisErrorType; + this.redisStatusCode = redisStatusCode; } boolean isFailed() { @@ -36,7 +36,7 @@ boolean isFailed() { } @Nullable - String getRedisErrorType() { - return redisErrorType; + String getRedisStatusCode() { + return redisStatusCode; } } diff --git a/instrumentation/lettuce/lettuce-5.1/library/src/test/java/io/opentelemetry/instrumentation/lettuce/v5_1/LettuceResponseTest.java b/instrumentation/lettuce/lettuce-5.1/library/src/test/java/io/opentelemetry/instrumentation/lettuce/v5_1/LettuceResponseTest.java index 4200e9e32391..04dc63aa49d7 100644 --- a/instrumentation/lettuce/lettuce-5.1/library/src/test/java/io/opentelemetry/instrumentation/lettuce/v5_1/LettuceResponseTest.java +++ b/instrumentation/lettuce/lettuce-5.1/library/src/test/java/io/opentelemetry/instrumentation/lettuce/v5_1/LettuceResponseTest.java @@ -21,13 +21,13 @@ void extractsServerErrorPrefixWithoutChangingApplicationMessage() { output.setError(ByteBuffer.wrap("WRONGTYPE details".getBytes(UTF_8))); String applicationMessage = output.getError(); - assertThat(LettuceResponse.fromCommandOutput(output).getRedisErrorType()) + assertThat(LettuceResponse.fromCommandOutput(output).getRedisStatusCode()) .isEqualTo("WRONGTYPE"); assertThat(output.getError()).isEqualTo(applicationMessage); } @Test void preservesLiteralStringVerbatim() { - assertThat(LettuceResponse.fromErrorMessage("ᅢᄅ details").getRedisErrorType()).isEqualTo("ᅢᄅ"); + assertThat(LettuceResponse.fromErrorMessage("ᅢᄅ details").getRedisStatusCode()).isEqualTo("ᅢᄅ"); } } diff --git a/instrumentation/mongo/mongo-3.1/library/src/test/java/io/opentelemetry/instrumentation/mongo/v3_1/internal/MongoDbAttributesGetterTest.java b/instrumentation/mongo/mongo-3.1/library/src/test/java/io/opentelemetry/instrumentation/mongo/v3_1/internal/MongoDbAttributesGetterTest.java index 722393f94db8..ff680dd3b880 100644 --- a/instrumentation/mongo/mongo-3.1/library/src/test/java/io/opentelemetry/instrumentation/mongo/v3_1/internal/MongoDbAttributesGetterTest.java +++ b/instrumentation/mongo/mongo-3.1/library/src/test/java/io/opentelemetry/instrumentation/mongo/v3_1/internal/MongoDbAttributesGetterTest.java @@ -37,7 +37,6 @@ import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; -import org.junit.jupiter.params.provider.ValueSource; class MongoDbAttributesGetterTest { @@ -155,13 +154,8 @@ void getErrorTypeReturnsWriteConcernErrorCode() { } @ParameterizedTest - @ValueSource( - strings = { - "{\"ok\": 1}", - "{\"ok\": 1, \"writeErrors\": [{\"code\": -3}]}", - "{\"ok\": 1, \"writeConcernError\": {\"code\": 0}}" - }) - void omitsResponseStatusWithoutServerErrorCode(String document) { + @MethodSource("writeErrorStatuses") + void capturesAvailableWriteErrorStatusCodes(String document, String expectedStatus) { MongoDbAttributesGetter getter = new MongoDbAttributesGetter(true, DEFAULT_MAX_NORMALIZED_QUERY_LENGTH); CommandSucceededEvent response = @@ -172,7 +166,26 @@ void omitsResponseStatusWithoutServerErrorCode(String document) { BsonDocument.parse(document), 1); - assertThat(getter.getDbResponseStatusCode(null, response, null)).isNull(); + assertThat(getter.getDbResponseStatusCode(null, response, null)).isEqualTo(expectedStatus); + } + + private static Stream writeErrorStatuses() { + return Stream.of( + argumentSet("no error code", "{\"ok\": 1}", null), + argumentSet( + "negative write error code", "{\"ok\": 1, \"writeErrors\": [{\"code\": -3}]}", null), + argumentSet( + "zero write concern error code", + "{\"ok\": 1, \"writeConcernError\": {\"code\": 0}}", + null), + argumentSet( + "string code is unavailable", + "{\"ok\": 1, \"writeErrors\": [{\"code\": \"3\"}]}", + null), + argumentSet( + "out-of-range code is unavailable", + "{\"ok\": 1, \"writeErrors\": [{\"code\": 2147483648}]}", + null)); } @Test @@ -244,8 +257,8 @@ private static Stream errorTypes() { return Stream.of( argumentSet( "server error code", new MongoException(11000, "duplicate key"), "11000", "11000"), - argumentSet("zero code falls back", new MongoException(0, "boom"), null, null), - argumentSet("unavailable code", new MongoException(-1, "boom"), null, null), + argumentSet("zero code is unavailable", new MongoException(0, "boom"), null, null), + argumentSet("missing code sentinel", new MongoException(-1, "boom"), null, null), argumentSet("client message sentinel (-3)", new MongoException("boom"), null, "-3"), argumentSet( "client message-and-cause sentinel (-4)", 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 97577c0e297d..950f381f4e7d 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 @@ -157,7 +157,7 @@ void schemaValidationFailure() throws Exception { assertWriteResult(collectionName, "insert", "121"); } - private void assertWriteResult(String collectionName, String operation, String errorType) { + private void assertWriteResult(String collectionName, String operation, String statusCode) { AtomicReference scopeName = new AtomicReference<>(); testing() .waitAndAssertTraces( @@ -168,7 +168,7 @@ private void assertWriteResult(String collectionName, String operation, String e span.hasName(operation + " " + collectionName) .hasKind(CLIENT) .hasNoParent() - .hasStatus(errorType == null ? StatusData.unset() : StatusData.error()) + .hasStatus(statusCode == null ? StatusData.unset() : StatusData.error()) .hasEventsSatisfyingExactly() .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM_NAME, MONGODB), @@ -184,8 +184,8 @@ private void assertWriteResult(String collectionName, String operation, String e equalTo( NETWORK_PEER_PORT, supportsNetworkPeer() ? Long.valueOf(port) : null), - equalTo(ERROR_TYPE, errorType), - equalTo(DB_RESPONSE_STATUS_CODE, errorType)); + equalTo(ERROR_TYPE, statusCode), + equalTo(DB_RESPONSE_STATUS_CODE, statusCode)); })); List> expectedMetricKeys = new ArrayList<>( @@ -200,7 +200,7 @@ private void assertWriteResult(String collectionName, String operation, String e expectedMetricKeys.add(NETWORK_PEER_ADDRESS); expectedMetricKeys.add(NETWORK_PEER_PORT); } - if (errorType != null) { + if (statusCode != null) { expectedMetricKeys.add(ERROR_TYPE); } assertDurationMetric( diff --git a/instrumentation/opensearch/opensearch-java-3.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/opensearch/v3_0/OpenSearchAttributesGetterTest.java b/instrumentation/opensearch/opensearch-java-3.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/opensearch/v3_0/OpenSearchAttributesGetterTest.java index 91582e26d908..f36d99dbb274 100644 --- a/instrumentation/opensearch/opensearch-java-3.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/opensearch/v3_0/OpenSearchAttributesGetterTest.java +++ b/instrumentation/opensearch/opensearch-java-3.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/opensearch/v3_0/OpenSearchAttributesGetterTest.java @@ -21,7 +21,7 @@ class OpenSearchAttributesGetterTest { @ParameterizedTest @ValueSource(ints = {-1, 0, 99, 200, 302, 404, 503}) - void responseStatusExcludesSentinelsAndSuccesses(int statusCode) { + void recordsAvailableResponseStatuses(int statusCode) { OpenSearchException error = new OpenSearchException( ErrorResponse.of( @@ -34,7 +34,7 @@ void responseStatusExcludesSentinelsAndSuccesses(int statusCode) { private void assertStatus(Throwable error, int statusCode) { assertThat(getter.getDbResponseStatusCode(request, null, error)) - .isEqualTo(statusCode >= 400 ? Integer.toString(statusCode) : null); + .isEqualTo(Integer.toString(statusCode)); assertThat(getter.getErrorType(request, null, error)) .isEqualTo(statusCode >= 400 || statusCode < 100 ? Integer.toString(statusCode) : null); } diff --git a/instrumentation/opensearch/opensearch-java-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/v3_0/OpenSearchAttributesGetter.java b/instrumentation/opensearch/opensearch-java-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/v3_0/OpenSearchAttributesGetter.java index ad51927eeac6..e291932095de 100644 --- a/instrumentation/opensearch/opensearch-java-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/v3_0/OpenSearchAttributesGetter.java +++ b/instrumentation/opensearch/opensearch-java-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/v3_0/OpenSearchAttributesGetter.java @@ -53,7 +53,7 @@ public String getErrorType( public String getDbResponseStatusCode( OpenSearchRequest request, @Nullable Void response, @Nullable Throwable error) { Integer statusCode = getResponseStatusCode(error); - return statusCode != null && statusCode >= 400 ? statusCode.toString() : null; + return statusCode != null ? statusCode.toString() : null; } @Override diff --git a/instrumentation/opensearch/opensearch-rest-common-1.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/v1_0/OpenSearchRestAttributesGetterTest.java b/instrumentation/opensearch/opensearch-rest-common-1.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/v1_0/OpenSearchRestAttributesGetterTest.java index bb02f7c4dfa9..15dc032409b7 100644 --- a/instrumentation/opensearch/opensearch-rest-common-1.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/v1_0/OpenSearchRestAttributesGetterTest.java +++ b/instrumentation/opensearch/opensearch-rest-common-1.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/v1_0/OpenSearchRestAttributesGetterTest.java @@ -19,11 +19,11 @@ class OpenSearchRestAttributesGetterTest { @ParameterizedTest @ValueSource(ints = {-1, 0, 99, 100, 200, 201, 302, 404, 503}) - void responseStatusExcludesOnlyInvalidCodes(int statusCode) { + void recordsAvailableResponseStatuses(int statusCode) { OpenSearchRestResponse response = () -> statusCode; assertThat(getter.getDbResponseStatusCode(request, response, null)) - .isEqualTo(statusCode >= 100 ? Integer.toString(statusCode) : null); + .isEqualTo(Integer.toString(statusCode)); assertThat(getter.getErrorType(request, response, null)) .isEqualTo(statusCode >= 400 || statusCode < 100 ? Integer.toString(statusCode) : null); } diff --git a/instrumentation/opensearch/opensearch-rest-common-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/v1_0/OpenSearchRestAttributesGetter.java b/instrumentation/opensearch/opensearch-rest-common-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/v1_0/OpenSearchRestAttributesGetter.java index dcde4d348daa..1ba8f60bc4ec 100644 --- a/instrumentation/opensearch/opensearch-rest-common-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/v1_0/OpenSearchRestAttributesGetter.java +++ b/instrumentation/opensearch/opensearch-rest-common-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/v1_0/OpenSearchRestAttributesGetter.java @@ -71,10 +71,7 @@ public String getDbResponseStatusCode( } else if (error != null) { statusCode = exceptionStatusCodeExtractor.getStatusCode(error); } - if (statusCode == null || statusCode < 100) { - return null; - } - return Integer.toString(statusCode); + return statusCode == null ? null : Integer.toString(statusCode); } @Override diff --git a/instrumentation/r2dbc-1.0/library/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/internal/R2dbcSqlAttributesGetter.java b/instrumentation/r2dbc-1.0/library/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/internal/R2dbcSqlAttributesGetter.java index 354d474c8a93..84f0881ded01 100644 --- a/instrumentation/r2dbc-1.0/library/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/internal/R2dbcSqlAttributesGetter.java +++ b/instrumentation/r2dbc-1.0/library/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/internal/R2dbcSqlAttributesGetter.java @@ -22,12 +22,11 @@ public final class R2dbcSqlAttributesGetter private static final String MYSQL_DATABASE = "mysql"; private static final String MARIADB_DATABASE = "mariadb"; + private static final String POSTGRESQL_DATABASE = "postgresql"; // copied from DbIncubatingAttributes.DbSystemNameIncubatingValues private static final String ORACLE_DB = "oracle.db"; private static final String SQL_SERVER_DATABASE = "microsoft.sql_server"; private static final String DB2_DATABASE = "ibm.db2"; - // copied from DbIncubatingAttributes.DbSystemNameIncubatingValues - private static final String OTHER_SQL_DATABASE = "other_sql"; @Override public String getDbSystemName(DbExecution request) { @@ -68,28 +67,31 @@ public String getErrorType( public String getDbResponseStatusCode( DbExecution request, @Nullable Void response, @Nullable Throwable error) { String dbSystemName = getDbSystemName(request); - if (MYSQL_DATABASE.equals(dbSystemName) - || MARIADB_DATABASE.equals(dbSystemName) - || ORACLE_DB.equals(dbSystemName) - || SQL_SERVER_DATABASE.equals(dbSystemName) - || DB2_DATABASE.equals(dbSystemName)) { - int errorCode = getErrorCode(error); - if (errorCode != 0) { - return Integer.toString(errorCode); - } - } - String sqlState = getSqlState(error); int errorCode = getErrorCode(error); - if (OTHER_SQL_DATABASE.equals(dbSystemName) - && sqlState != null - && !sqlState.isEmpty() - && errorCode != 0) { + String sqlState = getAvailableSqlState(error); + boolean hasErrorCode = errorCode != 0; + + if (prefersVendorCode(dbSystemName) && hasErrorCode) { + return Integer.toString(errorCode); + } + if (POSTGRESQL_DATABASE.equals(dbSystemName) && sqlState != null) { + return sqlState; + } + if (sqlState != null && hasErrorCode) { return sqlState + "/" + errorCode; } if (sqlState != null) { return sqlState; } - return errorCode == 0 ? null : Integer.toString(errorCode); + return hasErrorCode ? Integer.toString(errorCode) : null; + } + + private static boolean prefersVendorCode(String dbSystemName) { + return MYSQL_DATABASE.equals(dbSystemName) + || MARIADB_DATABASE.equals(dbSystemName) + || ORACLE_DB.equals(dbSystemName) + || SQL_SERVER_DATABASE.equals(dbSystemName) + || DB2_DATABASE.equals(dbSystemName); } private static int getErrorCode(@Nullable Throwable error) { @@ -104,6 +106,12 @@ private static String getSqlState(@Nullable Throwable error) { return null; } + @Nullable + private static String getAvailableSqlState(@Nullable Throwable error) { + String sqlState = getSqlState(error); + return sqlState == null || sqlState.isEmpty() ? null : sqlState; + } + @Nullable @Override public String getServerAddress(DbExecution request) { diff --git a/instrumentation/r2dbc-1.0/library/src/test/java/io/opentelemetry/instrumentation/r2dbc/v1_0/R2dbcSqlAttributesGetterTest.java b/instrumentation/r2dbc-1.0/library/src/test/java/io/opentelemetry/instrumentation/r2dbc/v1_0/R2dbcSqlAttributesGetterTest.java index f7cc90be9483..9cb9d3daf015 100644 --- a/instrumentation/r2dbc-1.0/library/src/test/java/io/opentelemetry/instrumentation/r2dbc/v1_0/R2dbcSqlAttributesGetterTest.java +++ b/instrumentation/r2dbc-1.0/library/src/test/java/io/opentelemetry/instrumentation/r2dbc/v1_0/R2dbcSqlAttributesGetterTest.java @@ -34,22 +34,26 @@ class R2dbcSqlAttributesGetterTest { @ParameterizedTest @MethodSource("responseStatuses") - void responseStatus(Throwable error, String expectedStatus) { + void responseStatus(Throwable error, String expectedErrorType, String expectedStatus) { DbExecution request = new DbExecution( queryExecutionInfo(), ConnectionFactoryOptions.parse("r2dbc:postgresql://localhost/db")); assertThat(getter.getDbResponseStatusCode(request, null, error)).isEqualTo(expectedStatus); - assertThat(getter.getErrorType(request, null, error)).isEqualTo(expectedStatus); + assertThat(getter.getErrorType(request, null, error)).isEqualTo(expectedErrorType); } private static Stream responseStatuses() { return Stream.of( - argumentSet("SQLSTATE", new R2dbcBadGrammarException("test", "42601", 42), "42601"), - argumentSet("no SQLSTATE", new R2dbcBadGrammarException("test"), null), - argumentSet("non-database failure", new IllegalStateException("test"), null), - argumentSet("success", null, null)); + argumentSet( + "SQLSTATE takes precedence for PostgreSQL", + new R2dbcBadGrammarException("test", "42601", 42), + "42601", + "42601"), + argumentSet("no SQLSTATE", new R2dbcBadGrammarException("test"), null, null), + argumentSet("non-database failure", new IllegalStateException("test"), null, null), + argumentSet("success", null, null, null)); } @Test @@ -130,6 +134,15 @@ void keepsVendorCodeWithoutSqlStateForMappedNonPreferredSystem() { assertThat(getter.getErrorType(request, null, error)).isNull(); } + @Test + void combinesCodesForUnknownSystem() { + DbExecution request = request("clickhouse"); + Throwable error = new R2dbcBadGrammarException("test", "42000", 1071); + + assertThat(getter.getDbResponseStatusCode(request, null, error)).isEqualTo("42000/1071"); + assertThat(getter.getErrorType(request, null, error)).isEqualTo("42000"); + } + @ParameterizedTest @ValueSource(strings = {"mysql", "mariadb", "oracle", "mssql", "db2"}) void fallsBackToSqlStateWhenVendorCodeIsUnavailable(String dbSystemName) { @@ -140,6 +153,15 @@ void fallsBackToSqlStateWhenVendorCodeIsUnavailable(String dbSystemName) { assertThat(getter.getErrorType(request, null, error)).isEqualTo("42000"); } + @Test + void capturesSuccessfulSqlStateWithoutChangingErrorType() { + DbExecution request = request("mysql"); + Throwable error = new R2dbcBadGrammarException("test", "00000", 0); + + assertThat(getter.getDbResponseStatusCode(request, null, error)).isEqualTo("00000"); + assertThat(getter.getErrorType(request, null, error)).isEqualTo("00000"); + } + private static Throwable postgresqlConnectionClosedException() throws ReflectiveOperationException { Class exceptionClass = diff --git a/instrumentation/spymemcached-2.12/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spymemcached/v2_12/SpymemcachedTest.java b/instrumentation/spymemcached-2.12/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spymemcached/v2_12/SpymemcachedTest.java index e81d44830787..f531fc39053e 100644 --- a/instrumentation/spymemcached-2.12/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spymemcached/v2_12/SpymemcachedTest.java +++ b/instrumentation/spymemcached-2.12/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spymemcached/v2_12/SpymemcachedTest.java @@ -395,6 +395,7 @@ void getCancel() { equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "get"), equalTo(DB_QUERY_TEXT, "get test-get"), + equalTo(DB_RESPONSE_STATUS_CODE, "CANCELLED"), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -460,6 +461,7 @@ void getTimeout() throws InterruptedException { equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "get"), equalTo(DB_QUERY_TEXT, "get test-get"), + equalTo(DB_RESPONSE_STATUS_CODE, "TIMEDOUT"), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -529,6 +531,7 @@ void bulkGet(String overload, boolean async, boolean capturesKeys) throws Except equalTo( DB_QUERY_TEXT, capturesKeys ? "getBulk test-get test-get-2" : "getBulk"), + equalTo(DB_RESPONSE_STATUS_CODE, "SUCCESS"), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -789,6 +792,7 @@ void setCancel() { equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "set"), equalTo(DB_QUERY_TEXT, "set test-set-cancel 3600 ?"), + equalTo(DB_RESPONSE_STATUS_CODE, "CANCELLED"), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, diff --git a/instrumentation/vertx/vertx-redis-client/vertx-redis-client-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/vertx/redisclient/v4_0/VertxRedisClientTest.java b/instrumentation/vertx/vertx-redis-client/vertx-redis-client-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/vertx/redisclient/v4_0/VertxRedisClientTest.java index c9bd77a0ac9e..43d8bf49ac00 100644 --- a/instrumentation/vertx/vertx-redis-client/vertx-redis-client-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/vertx/redisclient/v4_0/VertxRedisClientTest.java +++ b/instrumentation/vertx/vertx-redis-client/vertx-redis-client-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/vertx/redisclient/v4_0/VertxRedisClientTest.java @@ -217,7 +217,7 @@ void singleCommandServerError() throws Exception { .get(30, SECONDS); assertThat(result).isInstanceOf(ErrorType.class); - assertErrorTypeTelemetry("WRONGTYPE", "GET", "GET wrong-type", null); + assertErrorTypeTelemetry("WRONGTYPE", "WRONGTYPE", "GET", "GET wrong-type", null); } @Test @@ -244,6 +244,7 @@ void batchCommandServerError() throws Exception { assertThat(result).isInstanceOf(ErrorType.class); assertErrorTypeTelemetry( testLatestDeps() ? ErrorType.class.getName() : "WRONGTYPE", + testLatestDeps() ? null : "WRONGTYPE", "PIPELINE GET", "GET batch-wrong-type; GET batch-wrong-type", 2L); @@ -251,7 +252,8 @@ void batchCommandServerError() throws Exception { @ParameterizedTest @MethodSource("serverErrorReplyPrefixCases") - void serverErrorReplyPrefixes(String reply, String expectedErrorType) throws Exception { + void serverErrorReplyPrefixes(String reply, String expectedErrorType, String expectedStatusCode) + throws Exception { Object result = connection .send( @@ -266,28 +268,33 @@ void serverErrorReplyPrefixes(String reply, String expectedErrorType) throws Exc assertThat(result).isInstanceOf(ErrorType.class); assertErrorTypeTelemetry( - expectedErrorType, "EVAL", "EVAL return redis.error_reply(ARGV[1]) 0 ?", null); + expectedErrorType, + expectedStatusCode, + "EVAL", + "EVAL return redis.error_reply(ARGV[1]) 0 ?", + null); } private static Stream serverErrorReplyPrefixCases() { return Stream.of( - argumentSet("customPrefix", "Custom.Code! detail", "Custom.Code!"), - argumentSet("lowercasePrefix", "lowercase detail", "lowercase"), - argumentSet("prefixOnly", "PrefixOnly", "PrefixOnly"), - argumentSet("blankPrefix", " ", ErrorType.class.getName())); + argumentSet("customPrefix", "Custom.Code! detail", "Custom.Code!", "Custom.Code!"), + argumentSet("lowercasePrefix", "lowercase detail", "lowercase", "lowercase"), + argumentSet("prefixOnly", "PrefixOnly", "PrefixOnly", "PrefixOnly"), + argumentSet("blankPrefix", " ", ErrorType.class.getName(), null)); } private static void assertErrorTypeTelemetry( - String errorType, String operationName, String queryText, Long batchSize) { + String expectedErrorType, + String expectedStatusCode, + String operationName, + String queryText, + Long batchSize) { AttributeAssertion[] operationAttributes = redisSpanAttributes(operationName, queryText, batchSize); AttributeAssertion[] attributes = Arrays.copyOf(operationAttributes, operationAttributes.length + 2); - attributes[attributes.length - 2] = - equalTo( - DB_RESPONSE_STATUS_CODE, - ErrorType.class.getName().equals(errorType) ? null : errorType); - attributes[attributes.length - 1] = equalTo(ERROR_TYPE, errorType); + attributes[attributes.length - 2] = equalTo(DB_RESPONSE_STATUS_CODE, expectedStatusCode); + attributes[attributes.length - 1] = equalTo(ERROR_TYPE, expectedErrorType); testing.waitAndAssertTraces( trace -> @@ -305,7 +312,8 @@ private static void assertErrorTypeTelemetry( histogram -> histogram.hasPointsSatisfying( point -> - point.hasAttributesSatisfying(equalTo(ERROR_TYPE, errorType))))); + point.hasAttributesSatisfying( + equalTo(ERROR_TYPE, expectedErrorType))))); } @Test diff --git a/instrumentation/vertx/vertx-sql-client/vertx-sql-client-5.0/javaagent/src/unitTests/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetterTest.java b/instrumentation/vertx/vertx-sql-client/vertx-sql-client-5.0/javaagent/src/unitTests/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetterTest.java index e34dd6209503..ade36333b541 100644 --- a/instrumentation/vertx/vertx-sql-client/vertx-sql-client-5.0/javaagent/src/unitTests/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetterTest.java +++ b/instrumentation/vertx/vertx-sql-client/vertx-sql-client-5.0/javaagent/src/unitTests/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetterTest.java @@ -7,6 +7,7 @@ import static io.opentelemetry.semconv.DbAttributes.DbSystemNameValues.MICROSOFT_SQL_SERVER; import static io.opentelemetry.semconv.DbAttributes.DbSystemNameValues.MYSQL; +import static io.opentelemetry.semconv.DbAttributes.DbSystemNameValues.POSTGRESQL; import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DbSystemNameIncubatingValues.IBM_DB2; import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DbSystemNameIncubatingValues.ORACLE_DB; import static org.assertj.core.api.Assertions.assertThat; @@ -74,6 +75,26 @@ void fallsBackToSqlStateWhenVendorCodeIsUnavailable() { assertThat(getter.getDbResponseStatusCode(mysqlRequest, null, error)).isEqualTo("42000"); } + @Test + void capturesSqlStateSuccessAndPrefersPostgresqlSqlState() { + VertxSqlClientRequest mysqlRequest = request(MYSQL); + DatabaseException successful = new DatabaseException("Success", 0, "00000") {}; + VertxSqlClientRequest postgresRequest = request(POSTGRESQL); + DatabaseException postgresError = new DatabaseException("Syntax error", 42, "42601") {}; + + assertThat(getter.getDbResponseStatusCode(mysqlRequest, null, successful)).isEqualTo("00000"); + assertThat(getter.getDbResponseStatusCode(postgresRequest, null, postgresError)) + .isEqualTo("42601"); + } + + @Test + void combinesCodesForUnknownSystem() { + VertxSqlClientRequest unknownRequest = request("unknown"); + DatabaseException error = new DatabaseException("Syntax error", 208, "42000") {}; + + assertThat(getter.getDbResponseStatusCode(unknownRequest, null, error)).isEqualTo("42000/208"); + } + @ParameterizedTest @ValueSource(strings = {MICROSOFT_SQL_SERVER, IBM_DB2}) void prefersVendorCodeWithoutChangingErrorType(String dbSystemName) { diff --git a/instrumentation/vertx/vertx-sql-client/vertx-sql-client-common-4.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetterTest.java b/instrumentation/vertx/vertx-sql-client/vertx-sql-client-common-4.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetterTest.java index f80daa6b28d8..b8e8b2b8739f 100644 --- a/instrumentation/vertx/vertx-sql-client/vertx-sql-client-common-4.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetterTest.java +++ b/instrumentation/vertx/vertx-sql-client/vertx-sql-client-common-4.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetterTest.java @@ -44,6 +44,19 @@ void keepsMysqlVendorCodeWhenSqlStateIsUnavailable() { assertThat(getter.getDbResponseStatusCode(request, null, error)).isEqualTo("1064"); } + @Test + void keepsSuccessfulSqlStateAndCombinesUnknownSystemCodes() { + MySQLException successful = new MySQLException("Success", 0, "00000"); + VertxSqlClientRequest unknownRequest = + new VertxSqlClientRequest( + "select 1", VertxSqlClientInfo.createUnknown("unknown"), false, null); + MySQLException unknown = new MySQLException("Syntax error", 1064, "42000"); + + assertThat(getter.getDbResponseStatusCode(request, null, successful)).isEqualTo("00000"); + assertThat(getter.getDbResponseStatusCode(unknownRequest, null, unknown)) + .isEqualTo("42000/1064"); + } + @Test void extractsLegacyMssqlErrorCodeWithoutChangingErrorType() { VertxSqlClientRequest request = diff --git a/instrumentation/vertx/vertx-sql-client/vertx-sql-client-common-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetter.java b/instrumentation/vertx/vertx-sql-client/vertx-sql-client-common-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetter.java index 72a358e9ddd1..36e884e7829d 100644 --- a/instrumentation/vertx/vertx-sql-client/vertx-sql-client-common-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetter.java +++ b/instrumentation/vertx/vertx-sql-client/vertx-sql-client-common-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/sqlclient/common/v4_0/VertxSqlClientAttributesGetter.java @@ -8,6 +8,7 @@ import static io.opentelemetry.instrumentation.api.incubator.semconv.db.internal.SqlDialectUtil.fromDbSystemName; import static io.opentelemetry.semconv.DbAttributes.DbSystemNameValues.MICROSOFT_SQL_SERVER; import static io.opentelemetry.semconv.DbAttributes.DbSystemNameValues.MYSQL; +import static io.opentelemetry.semconv.DbAttributes.DbSystemNameValues.POSTGRESQL; import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DbSystemNameIncubatingValues.IBM_DB2; import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DbSystemNameIncubatingValues.ORACLE_DB; import static java.util.Collections.singleton; @@ -84,26 +85,39 @@ public String getErrorType( @Override public String getDbResponseStatusCode( VertxSqlClientRequest request, @Nullable Void response, @Nullable Throwable error) { - if (MYSQL.equals(request.getDbSystemName()) - || ORACLE_DB.equals(request.getDbSystemName()) - || MICROSOFT_SQL_SERVER.equals(request.getDbSystemName()) - || IBM_DB2.equals(request.getDbSystemName())) { - String errorCode = dbResponseErrorCodeExtractor.apply(error); - if (errorCode != null) { - return errorCode; - } + String dbSystemName = request.getDbSystemName(); + String sqlState = getAvailableSqlState(error); + String errorCode = dbResponseErrorCodeExtractor.apply(error); + + if (prefersVendorCode(dbSystemName) && errorCode != null) { + return errorCode; } - String status = dbResponseStatusExtractor.apply(error); - if (status != null) { - return status; + if (POSTGRESQL.equals(dbSystemName) && sqlState != null) { + return sqlState; } - if (MYSQL.equals(request.getDbSystemName())) { - return mysqlDbResponseStatusExtractor.apply(error); + if (sqlState != null && errorCode != null) { + return sqlState + "/" + errorCode; + } + return sqlState != null ? sqlState : errorCode; + } + + private static boolean prefersVendorCode(String dbSystemName) { + return MYSQL.equals(dbSystemName) + || ORACLE_DB.equals(dbSystemName) + || MICROSOFT_SQL_SERVER.equals(dbSystemName) + || IBM_DB2.equals(dbSystemName); + } + + @Nullable + private static String getAvailableSqlState(@Nullable Throwable error) { + String sqlState = dbResponseStatusExtractor.apply(error); + if (sqlState == null || sqlState.isEmpty()) { + sqlState = mysqlDbResponseStatusExtractor.apply(error); } - if (IBM_DB2.equals(request.getDbSystemName())) { - return db2DbResponseStatusExtractor.apply(error); + if (sqlState == null || sqlState.isEmpty()) { + sqlState = db2DbResponseStatusExtractor.apply(error); } - return null; + return sqlState == null || sqlState.isEmpty() ? null : sqlState; } @Override From c814fbceeb65571bf3f13e0a8d9a4a24ce7d32ae Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 27 Oct 2026 01:47:36 +0000 Subject: [PATCH 21/33] Capture all available MongoDB status codes Co-authored-by: trask <218610+trask@users.noreply.github.com> --- .../v3_1/internal/MongoDbAttributesGetter.java | 6 ++---- .../v3_1/internal/MongoDbAttributesGetterTest.java | 14 +++++++++++--- 2 files changed, 13 insertions(+), 7 deletions(-) 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 15e3614d598e..2ff86c2972a8 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 @@ -194,9 +194,7 @@ public String getDbResponseStatusCode( } if (error instanceof MongoException) { int code = ((MongoException) error).getCode(); - if (code != 0 && code != -1) { - return Integer.toString(code); - } + return Integer.toString(code); } return null; } @@ -248,7 +246,7 @@ private static Integer errorCode(@Nullable BsonValue error) { return null; } long value = code.asNumber().longValue(); - return value > 0 && value <= Integer.MAX_VALUE ? (int) value : null; + return value >= Integer.MIN_VALUE && value <= Integer.MAX_VALUE ? (int) value : null; } String sanitizeQuery(BsonDocument command) { diff --git a/instrumentation/mongo/mongo-3.1/library/src/test/java/io/opentelemetry/instrumentation/mongo/v3_1/internal/MongoDbAttributesGetterTest.java b/instrumentation/mongo/mongo-3.1/library/src/test/java/io/opentelemetry/instrumentation/mongo/v3_1/internal/MongoDbAttributesGetterTest.java index ff680dd3b880..4a24367a8bff 100644 --- a/instrumentation/mongo/mongo-3.1/library/src/test/java/io/opentelemetry/instrumentation/mongo/v3_1/internal/MongoDbAttributesGetterTest.java +++ b/instrumentation/mongo/mongo-3.1/library/src/test/java/io/opentelemetry/instrumentation/mongo/v3_1/internal/MongoDbAttributesGetterTest.java @@ -173,10 +173,18 @@ private static Stream writeErrorStatuses() { return Stream.of( argumentSet("no error code", "{\"ok\": 1}", null), argumentSet( - "negative write error code", "{\"ok\": 1, \"writeErrors\": [{\"code\": -3}]}", null), + "negative write error code", "{\"ok\": 1, \"writeErrors\": [{\"code\": -3}]}", "-3"), argumentSet( "zero write concern error code", "{\"ok\": 1, \"writeConcernError\": {\"code\": 0}}", + "0"), + argumentSet( + "minimum int64 write error code", + "{\"ok\": 1, \"writeErrors\": [{\"code\": {\"$numberLong\": \"-2147483648\"}}]}", + "-2147483648"), + argumentSet( + "below minimum int64 write error code", + "{\"ok\": 1, \"writeErrors\": [{\"code\": {\"$numberLong\": \"-2147483649\"}}]}", null), argumentSet( "string code is unavailable", @@ -257,8 +265,8 @@ private static Stream errorTypes() { return Stream.of( argumentSet( "server error code", new MongoException(11000, "duplicate key"), "11000", "11000"), - argumentSet("zero code is unavailable", new MongoException(0, "boom"), null, null), - argumentSet("missing code sentinel", new MongoException(-1, "boom"), null, null), + argumentSet("zero code", new MongoException(0, "boom"), null, "0"), + argumentSet("missing code sentinel", new MongoException(-1, "boom"), null, "-1"), argumentSet("client message sentinel (-3)", new MongoException("boom"), null, "-3"), argumentSet( "client message-and-cause sentinel (-4)", From 8f2dd169f96ea1998eeeef7cf972541f103b1236 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 27 Oct 2026 02:15:36 +0000 Subject: [PATCH 22/33] Fix database response status review findings Co-authored-by: trask <218610+trask@users.noreply.github.com> --- .../v0_5/ClickHouseClientV1Singletons.java | 2 +- .../v0_5/ClickHouseErrorCodeExtractor.java | 7 +--- .../clientv1/v0_5/ClickHouseClientV1Test.java | 2 +- .../ClickHouseErrorCodeExtractorTest.java | 15 ++++---- .../internal/MongoDbAttributesGetter.java | 21 ++++++++++- .../internal/MongoDbAttributesGetterTest.java | 35 ++++++++++++++++--- 6 files changed, 59 insertions(+), 23 deletions(-) diff --git a/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv1/v0_5/ClickHouseClientV1Singletons.java b/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv1/v0_5/ClickHouseClientV1Singletons.java index 8b0b5d80de29..ffd955661519 100644 --- a/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv1/v0_5/ClickHouseClientV1Singletons.java +++ b/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv1/v0_5/ClickHouseClientV1Singletons.java @@ -39,7 +39,7 @@ public class ClickHouseClientV1Singletons { ClickHouseInstrumenterFactory.createInstrumenter( INSTRUMENTER_NAME, ClickHouseErrorCodeExtractor::getErrorType, - ClickHouseErrorCodeExtractor::getDbResponseStatusCode); + ClickHouseErrorCodeExtractor::getErrorCode); } public static Instrumenter instrumenter() { diff --git a/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv1/v0_5/ClickHouseErrorCodeExtractor.java b/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv1/v0_5/ClickHouseErrorCodeExtractor.java index 7e6786472c0a..f12bc23b9e54 100644 --- a/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv1/v0_5/ClickHouseErrorCodeExtractor.java +++ b/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv1/v0_5/ClickHouseErrorCodeExtractor.java @@ -17,17 +17,12 @@ static String getErrorType(@Nullable Throwable error) { } @Nullable - private static String getErrorCode(@Nullable Throwable error) { + static String getErrorCode(@Nullable Throwable error) { if (error instanceof ClickHouseException) { return Integer.toString(((ClickHouseException) error).getErrorCode()); } return null; } - @Nullable - static String getDbResponseStatusCode(@Nullable Throwable error) { - return getErrorCode(error); - } - private ClickHouseErrorCodeExtractor() {} } diff --git a/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv1/v0_5/ClickHouseClientV1Test.java b/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv1/v0_5/ClickHouseClientV1Test.java index ebf075718428..23117337af9a 100644 --- a/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv1/v0_5/ClickHouseClientV1Test.java +++ b/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv1/v0_5/ClickHouseClientV1Test.java @@ -337,7 +337,7 @@ void testExecuteAndWaitWithStringQueryAndId() throws ClickHouseException { } @Test - void testClientConnectionFailureOmitsResponseStatus() { + void testClientConnectionFailureCapturesResponseStatus() { int unavailablePort = PortUtils.findOpenPort(); ClickHouseNode unavailableServer = ClickHouseNode.of("http://127.0.0.1:" + unavailablePort + "/default?compress=0"); diff --git a/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/src/unitTests/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv1/v0_5/ClickHouseErrorCodeExtractorTest.java b/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/src/unitTests/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv1/v0_5/ClickHouseErrorCodeExtractorTest.java index 3112446f93c0..c8c0980ac5df 100644 --- a/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/src/unitTests/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv1/v0_5/ClickHouseErrorCodeExtractorTest.java +++ b/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/src/unitTests/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv1/v0_5/ClickHouseErrorCodeExtractorTest.java @@ -31,9 +31,9 @@ void keepsServerCodesEvenWhenTheyOverlapClientCodes(int code) { ClickHouseException response = ClickHouseException.of(message, null); ClickHouseException wrappedResponse = ClickHouseException.of(new IOException(message), null); - assertThat(ClickHouseErrorCodeExtractor.getDbResponseStatusCode(response)) + assertThat(ClickHouseErrorCodeExtractor.getErrorCode(response)) .isEqualTo(Integer.toString(code)); - assertThat(ClickHouseErrorCodeExtractor.getDbResponseStatusCode(wrappedResponse)) + assertThat(ClickHouseErrorCodeExtractor.getErrorCode(wrappedResponse)) .isEqualTo(Integer.toString(code)); } @@ -42,8 +42,7 @@ void keepsServerCodesEvenWhenTheyOverlapClientCodes(int code) { void retainsClientCodesWithoutChangingErrorType( ClickHouseException error, String expectedErrorType) { assertThat(ClickHouseErrorCodeExtractor.getErrorType(error)).isEqualTo(expectedErrorType); - assertThat(ClickHouseErrorCodeExtractor.getDbResponseStatusCode(error)) - .isEqualTo(expectedErrorType); + assertThat(ClickHouseErrorCodeExtractor.getErrorCode(error)).isEqualTo(expectedErrorType); } private static Stream clientFailures() { @@ -84,17 +83,15 @@ private static Stream clientFailures() { @Test void omitsUnavailableCodes() { - assertThat(ClickHouseErrorCodeExtractor.getDbResponseStatusCode(null)).isNull(); - assertThat( - ClickHouseErrorCodeExtractor.getDbResponseStatusCode(new IllegalStateException("test"))) - .isNull(); + assertThat(ClickHouseErrorCodeExtractor.getErrorCode(null)).isNull(); + assertThat(ClickHouseErrorCodeExtractor.getErrorCode(new IllegalStateException("test"))).isNull(); } @Test void keepsZeroStatusWithoutChangingErrorType() { ClickHouseException error = new ClickHouseException(0, "test", null); - assertThat(ClickHouseErrorCodeExtractor.getDbResponseStatusCode(error)).isEqualTo("0"); + assertThat(ClickHouseErrorCodeExtractor.getErrorCode(error)).isEqualTo("0"); assertThat(ClickHouseErrorCodeExtractor.getErrorType(error)).isNull(); } } 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 2ff86c2972a8..385328751d1e 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 @@ -202,7 +202,7 @@ public String getDbResponseStatusCode( @Nullable private static String getServerErrorCode( @Nullable CommandSucceededEvent response, @Nullable Throwable error) { - Integer writeErrorCode = getWriteErrorCode(response); + Integer writeErrorCode = getServerWriteErrorCode(response); if (writeErrorCode != null) { return writeErrorCode.toString(); } @@ -236,6 +236,25 @@ static Integer getWriteErrorCode(@Nullable CommandSucceededEvent response) { return errorCode(document.get("writeConcernError")); } + @Nullable + private static Integer getServerWriteErrorCode(@Nullable CommandSucceededEvent response) { + if (response == null) { + return null; + } + BsonDocument document = response.getResponse(); + BsonValue writeErrors = document.get("writeErrors"); + if (writeErrors != null && writeErrors.isArray()) { + for (BsonValue writeError : writeErrors.asArray()) { + Integer code = errorCode(writeError); + if (code != null && code > 0) { + return code; + } + } + } + Integer code = errorCode(document.get("writeConcernError")); + return code != null && code > 0 ? code : null; + } + @Nullable private static Integer errorCode(@Nullable BsonValue error) { if (error == null || !error.isDocument()) { diff --git a/instrumentation/mongo/mongo-3.1/library/src/test/java/io/opentelemetry/instrumentation/mongo/v3_1/internal/MongoDbAttributesGetterTest.java b/instrumentation/mongo/mongo-3.1/library/src/test/java/io/opentelemetry/instrumentation/mongo/v3_1/internal/MongoDbAttributesGetterTest.java index 4a24367a8bff..cda87f973757 100644 --- a/instrumentation/mongo/mongo-3.1/library/src/test/java/io/opentelemetry/instrumentation/mongo/v3_1/internal/MongoDbAttributesGetterTest.java +++ b/instrumentation/mongo/mongo-3.1/library/src/test/java/io/opentelemetry/instrumentation/mongo/v3_1/internal/MongoDbAttributesGetterTest.java @@ -155,7 +155,8 @@ void getErrorTypeReturnsWriteConcernErrorCode() { @ParameterizedTest @MethodSource("writeErrorStatuses") - void capturesAvailableWriteErrorStatusCodes(String document, String expectedStatus) { + void keepsWriteErrorStatusAndErrorTypePoliciesDistinct( + String document, String expectedStatus, String expectedErrorType) { MongoDbAttributesGetter getter = new MongoDbAttributesGetter(true, DEFAULT_MAX_NORMALIZED_QUERY_LENGTH); CommandSucceededEvent response = @@ -167,32 +168,56 @@ void capturesAvailableWriteErrorStatusCodes(String document, String expectedStat 1); assertThat(getter.getDbResponseStatusCode(null, response, null)).isEqualTo(expectedStatus); + assertThat(getter.getErrorType(null, response, null)).isEqualTo(expectedErrorType); } private static Stream writeErrorStatuses() { return Stream.of( - argumentSet("no error code", "{\"ok\": 1}", null), + argumentSet("no error code", "{\"ok\": 1}", null, null), argumentSet( - "negative write error code", "{\"ok\": 1, \"writeErrors\": [{\"code\": -3}]}", "-3"), + "negative write error code", + "{\"ok\": 1, \"writeErrors\": [{\"code\": -3}]}", + "-3", + null), argumentSet( "zero write concern error code", "{\"ok\": 1, \"writeConcernError\": {\"code\": 0}}", - "0"), + "0", + null), + argumentSet( + "negative write error before positive write error", + "{\"ok\": 1, \"writeErrors\": [{\"code\": -3}, {\"code\": 11000}]}", + "-3", + "11000"), + argumentSet( + "zero write error before positive write error", + "{\"ok\": 1, \"writeErrors\": [{\"code\": 0}, {\"code\": 11000}]}", + "0", + "11000"), + argumentSet( + "nonpositive write error before positive write concern error", + "{\"ok\": 1, \"writeErrors\": [{\"code\": -3}], \"writeConcernError\": {\"code\": 64}}", + "-3", + "64"), argumentSet( "minimum int64 write error code", "{\"ok\": 1, \"writeErrors\": [{\"code\": {\"$numberLong\": \"-2147483648\"}}]}", - "-2147483648"), + "-2147483648", + null), argumentSet( "below minimum int64 write error code", "{\"ok\": 1, \"writeErrors\": [{\"code\": {\"$numberLong\": \"-2147483649\"}}]}", + null, null), argumentSet( "string code is unavailable", "{\"ok\": 1, \"writeErrors\": [{\"code\": \"3\"}]}", + null, null), argumentSet( "out-of-range code is unavailable", "{\"ok\": 1, \"writeErrors\": [{\"code\": 2147483648}]}", + null, null)); } From 079775fc2daf23815b70bf767c24259e2b6d6709 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 27 Oct 2026 02:48:43 +0000 Subject: [PATCH 23/33] Rename shared database status values Co-authored-by: trask <218610+trask@users.noreply.github.com> --- .../v2_2/internal/DynamoDbErrorsTest.java | 8 ++++---- .../v0_5/ClickHouseErrorCodeExtractorTest.java | 9 +++++---- .../v4_0/LettuceBatchAttributesGetter.java | 4 ++-- .../v4_0/LettuceDbAttributesGetter.java | 4 ++-- ...rorType.java => LettuceRedisErrorCode.java} | 6 +++--- .../lettuce/v4_0/LettuceAsyncClientTest.java | 18 +++++++++--------- .../v5_0/LettuceBatchAttributesGetter.java | 4 ++-- .../v5_0/LettuceDbAttributesGetter.java | 4 ++-- ...rorType.java => LettuceRedisErrorCode.java} | 6 +++--- .../lettuce/v5_0/LettuceAsyncClientTest.java | 18 +++++++++--------- .../v5_1/LettuceDbAttributesGetter.java | 6 +++--- .../lettuce/v5_1/LettuceResponse.java | 10 +++++----- .../lettuce/v5_1/LettuceResponseTest.java | 4 ++-- .../mongo/testing/AbstractMongoClientTest.java | 10 +++++----- .../v3_0/OpenSearchAttributesGetter.java | 6 +++--- .../v4_0/VertxRedisClientAttributesGetter.java | 4 ++-- .../v4_0/VertxRedisClientError.java | 2 +- 17 files changed, 62 insertions(+), 61 deletions(-) rename instrumentation/lettuce/lettuce-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/{LettuceRedisErrorType.java => LettuceRedisErrorCode.java} (83%) rename instrumentation/lettuce/lettuce-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/{LettuceRedisErrorType.java => LettuceRedisErrorCode.java} (83%) diff --git a/instrumentation/aws-sdk/aws-sdk-2.2/library/src/test/java/io/opentelemetry/instrumentation/awssdk/v2_2/internal/DynamoDbErrorsTest.java b/instrumentation/aws-sdk/aws-sdk-2.2/library/src/test/java/io/opentelemetry/instrumentation/awssdk/v2_2/internal/DynamoDbErrorsTest.java index aff7e766e62e..d39e864d5fe0 100644 --- a/instrumentation/aws-sdk/aws-sdk-2.2/library/src/test/java/io/opentelemetry/instrumentation/awssdk/v2_2/internal/DynamoDbErrorsTest.java +++ b/instrumentation/aws-sdk/aws-sdk-2.2/library/src/test/java/io/opentelemetry/instrumentation/awssdk/v2_2/internal/DynamoDbErrorsTest.java @@ -123,7 +123,7 @@ void sdkProtocolOutcome(boolean missingItem) { .isInstanceOf(ResourceNotFoundException.class); } } - String statusCode = missingItem ? null : "ResourceNotFoundException"; + String errorCode = missingItem ? null : "ResourceNotFoundException"; testing.waitAndAssertTraces( trace -> trace.hasSpansSatisfyingExactly( @@ -137,8 +137,8 @@ void sdkProtocolOutcome(boolean missingItem) { equalTo(DB_COLLECTION_NAME, "items"), equalTo(DB_OPERATION_NAME, "GetItem"), equalTo(HTTP_RESPONSE_STATUS_CODE, missingItem ? 200L : null), - equalTo(DB_RESPONSE_STATUS_CODE, statusCode), - equalTo(ERROR_TYPE, statusCode), + equalTo(DB_RESPONSE_STATUS_CODE, errorCode), + equalTo(ERROR_TYPE, errorCode), equalTo(SERVER_ADDRESS, "127.0.0.1"), equalTo(SERVER_PORT, server.httpPort()), equalTo(HTTP_REQUEST_METHOD, "POST"), @@ -175,7 +175,7 @@ void sdkProtocolOutcome(boolean missingItem) { .put(DB_SYSTEM_NAME, "aws.dynamodb") .put(DB_COLLECTION_NAME, "items") .put(DB_OPERATION_NAME, "GetItem") - .put(ERROR_TYPE, statusCode) + .put(ERROR_TYPE, errorCode) .build() .asMap()); }))); diff --git a/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/src/unitTests/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv1/v0_5/ClickHouseErrorCodeExtractorTest.java b/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/src/unitTests/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv1/v0_5/ClickHouseErrorCodeExtractorTest.java index c8c0980ac5df..1e785e26e4b5 100644 --- a/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/src/unitTests/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv1/v0_5/ClickHouseErrorCodeExtractorTest.java +++ b/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/src/unitTests/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv1/v0_5/ClickHouseErrorCodeExtractorTest.java @@ -40,9 +40,9 @@ void keepsServerCodesEvenWhenTheyOverlapClientCodes(int code) { @ParameterizedTest @MethodSource("clientFailures") void retainsClientCodesWithoutChangingErrorType( - ClickHouseException error, String expectedErrorType) { - assertThat(ClickHouseErrorCodeExtractor.getErrorType(error)).isEqualTo(expectedErrorType); - assertThat(ClickHouseErrorCodeExtractor.getErrorCode(error)).isEqualTo(expectedErrorType); + ClickHouseException error, String expectedErrorCode) { + assertThat(ClickHouseErrorCodeExtractor.getErrorType(error)).isEqualTo(expectedErrorCode); + assertThat(ClickHouseErrorCodeExtractor.getErrorCode(error)).isEqualTo(expectedErrorCode); } private static Stream clientFailures() { @@ -84,7 +84,8 @@ private static Stream clientFailures() { @Test void omitsUnavailableCodes() { assertThat(ClickHouseErrorCodeExtractor.getErrorCode(null)).isNull(); - assertThat(ClickHouseErrorCodeExtractor.getErrorCode(new IllegalStateException("test"))).isNull(); + assertThat(ClickHouseErrorCodeExtractor.getErrorCode(new IllegalStateException("test"))) + .isNull(); } @Test diff --git a/instrumentation/lettuce/lettuce-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceBatchAttributesGetter.java b/instrumentation/lettuce/lettuce-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceBatchAttributesGetter.java index 82bd17c31151..8e0367221d2b 100644 --- a/instrumentation/lettuce/lettuce-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceBatchAttributesGetter.java +++ b/instrumentation/lettuce/lettuce-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceBatchAttributesGetter.java @@ -46,14 +46,14 @@ public Long getDbOperationBatchSize(LettuceBatchRequest request) { @Override public String getDbResponseStatusCode( LettuceBatchRequest request, @Nullable Void response, @Nullable Throwable error) { - return LettuceRedisErrorType.getResponseStatusCode(error); + return LettuceRedisErrorCode.getErrorCode(error); } @Nullable @Override public String getErrorType( LettuceBatchRequest request, @Nullable Void response, @Nullable Throwable error) { - return LettuceRedisErrorType.getResponseStatusCode(error); + return LettuceRedisErrorCode.getErrorCode(error); } @Nullable diff --git a/instrumentation/lettuce/lettuce-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceDbAttributesGetter.java b/instrumentation/lettuce/lettuce-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceDbAttributesGetter.java index d092a32d0e11..a7f27767b2bd 100644 --- a/instrumentation/lettuce/lettuce-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceDbAttributesGetter.java +++ b/instrumentation/lettuce/lettuce-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceDbAttributesGetter.java @@ -43,14 +43,14 @@ public String getDbOperationName(RedisCommand request) { @Override public String getDbResponseStatusCode( RedisCommand request, @Nullable Void response, @Nullable Throwable error) { - return LettuceRedisErrorType.getResponseStatusCode(error); + return LettuceRedisErrorCode.getErrorCode(error); } @Nullable @Override public String getErrorType( RedisCommand request, @Nullable Void response, @Nullable Throwable error) { - return LettuceRedisErrorType.getResponseStatusCode(error); + return LettuceRedisErrorCode.getErrorCode(error); } @Nullable diff --git a/instrumentation/lettuce/lettuce-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceRedisErrorType.java b/instrumentation/lettuce/lettuce-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceRedisErrorCode.java similarity index 83% rename from instrumentation/lettuce/lettuce-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceRedisErrorType.java rename to instrumentation/lettuce/lettuce-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceRedisErrorCode.java index 665dea7431b3..b8f2c1771940 100644 --- a/instrumentation/lettuce/lettuce-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceRedisErrorType.java +++ b/instrumentation/lettuce/lettuce-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceRedisErrorCode.java @@ -9,10 +9,10 @@ import io.opentelemetry.instrumentation.api.incubator.semconv.db.internal.RedisErrorPrefix; import javax.annotation.Nullable; -public final class LettuceRedisErrorType { +public final class LettuceRedisErrorCode { @Nullable - static String getResponseStatusCode(@Nullable Throwable error) { + static String getErrorCode(@Nullable Throwable error) { if (!(error instanceof RedisCommandExecutionException)) { return null; } @@ -23,5 +23,5 @@ static String getResponseStatusCode(@Nullable Throwable error) { return RedisErrorPrefix.extractAscii(error.getMessage()); } - private LettuceRedisErrorType() {} + private LettuceRedisErrorCode() {} } diff --git a/instrumentation/lettuce/lettuce-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceAsyncClientTest.java b/instrumentation/lettuce/lettuce-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceAsyncClientTest.java index a97ccec46c11..50897694ccda 100644 --- a/instrumentation/lettuce/lettuce-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceAsyncClientTest.java +++ b/instrumentation/lettuce/lettuce-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceAsyncClientTest.java @@ -774,10 +774,10 @@ void deferredFlushCommand(BatchScenario scenario) throws Exception { equalTo(NETWORK_PEER_ADDRESS, ip), equalTo(NETWORK_PEER_PORT, Long.valueOf(port)), equalTo(DB_OPERATION_BATCH_SIZE, scenario.batchSize), - equalTo(DB_RESPONSE_STATUS_CODE, scenario.statusCode), - equalTo(ERROR_TYPE, scenario.statusCode)))); + equalTo(DB_RESPONSE_STATUS_CODE, scenario.errorCode), + equalTo(ERROR_TYPE, scenario.errorCode)))); - assertErrorTypeMetric("io.opentelemetry.lettuce-4.0", scenario.statusCode, 1); + assertErrorTypeMetric("io.opentelemetry.lettuce-4.0", scenario.errorCode, 1); } private static void assertErrorTypeMetric( @@ -919,7 +919,7 @@ private static Stream deferredFlushScenarios() { .operationName("PIPELINE") .batchSize(2) .exceptionType("com.lambdaworks.redis.RedisCommandExecutionException") - .statusCode("ERR") + .errorCode("ERR") .build())); } @@ -928,14 +928,14 @@ private static class BatchScenario { private final String operationName; private final Long batchSize; private final String exceptionType; - private final String statusCode; + private final String errorCode; private BatchScenario(Builder builder) { this.commands = builder.commands; this.operationName = builder.operationName; this.batchSize = builder.batchSize; this.exceptionType = builder.exceptionType; - this.statusCode = builder.statusCode; + this.errorCode = builder.errorCode; } private static Builder builder() { @@ -951,7 +951,7 @@ private static class Builder { private String operationName; private Long batchSize; private String exceptionType; - private String statusCode; + private String errorCode; private Builder addCommand(BatchCommand command) { commands.add(command); @@ -968,8 +968,8 @@ private Builder batchSize(long batchSize) { return this; } - private Builder statusCode(String statusCode) { - this.statusCode = statusCode; + private Builder errorCode(String errorCode) { + this.errorCode = errorCode; return this; } diff --git a/instrumentation/lettuce/lettuce-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceBatchAttributesGetter.java b/instrumentation/lettuce/lettuce-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceBatchAttributesGetter.java index 7b764c62a2b2..55ab053e5a19 100644 --- a/instrumentation/lettuce/lettuce-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceBatchAttributesGetter.java +++ b/instrumentation/lettuce/lettuce-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceBatchAttributesGetter.java @@ -46,14 +46,14 @@ public Long getDbOperationBatchSize(LettuceBatchRequest request) { @Override public String getDbResponseStatusCode( LettuceBatchRequest request, @Nullable Void response, @Nullable Throwable error) { - return LettuceRedisErrorType.getResponseStatusCode(error); + return LettuceRedisErrorCode.getErrorCode(error); } @Nullable @Override public String getErrorType( LettuceBatchRequest request, @Nullable Void response, @Nullable Throwable error) { - return LettuceRedisErrorType.getResponseStatusCode(error); + return LettuceRedisErrorCode.getErrorCode(error); } @Nullable diff --git a/instrumentation/lettuce/lettuce-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceDbAttributesGetter.java b/instrumentation/lettuce/lettuce-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceDbAttributesGetter.java index a1d132e46b6b..0d57a9add5ca 100644 --- a/instrumentation/lettuce/lettuce-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceDbAttributesGetter.java +++ b/instrumentation/lettuce/lettuce-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceDbAttributesGetter.java @@ -60,14 +60,14 @@ public String getDbOperationName(RedisCommand request) { @Override public String getDbResponseStatusCode( RedisCommand request, @Nullable Void response, @Nullable Throwable error) { - return LettuceRedisErrorType.getResponseStatusCode(error); + return LettuceRedisErrorCode.getErrorCode(error); } @Nullable @Override public String getErrorType( RedisCommand request, @Nullable Void response, @Nullable Throwable error) { - return LettuceRedisErrorType.getResponseStatusCode(error); + return LettuceRedisErrorCode.getErrorCode(error); } @Nullable diff --git a/instrumentation/lettuce/lettuce-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceRedisErrorType.java b/instrumentation/lettuce/lettuce-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceRedisErrorCode.java similarity index 83% rename from instrumentation/lettuce/lettuce-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceRedisErrorType.java rename to instrumentation/lettuce/lettuce-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceRedisErrorCode.java index 3c7161b9625a..067e460c5cb1 100644 --- a/instrumentation/lettuce/lettuce-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceRedisErrorType.java +++ b/instrumentation/lettuce/lettuce-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceRedisErrorCode.java @@ -9,10 +9,10 @@ import io.opentelemetry.instrumentation.api.incubator.semconv.db.internal.RedisErrorPrefix; import javax.annotation.Nullable; -public final class LettuceRedisErrorType { +public final class LettuceRedisErrorCode { @Nullable - static String getResponseStatusCode(@Nullable Throwable error) { + static String getErrorCode(@Nullable Throwable error) { if (!(error instanceof RedisCommandExecutionException)) { return null; } @@ -23,5 +23,5 @@ static String getResponseStatusCode(@Nullable Throwable error) { return RedisErrorPrefix.extractAscii(error.getMessage()); } - private LettuceRedisErrorType() {} + private LettuceRedisErrorCode() {} } diff --git a/instrumentation/lettuce/lettuce-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceAsyncClientTest.java b/instrumentation/lettuce/lettuce-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceAsyncClientTest.java index 009edeb502ab..26010a2fb6a7 100644 --- a/instrumentation/lettuce/lettuce-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceAsyncClientTest.java +++ b/instrumentation/lettuce/lettuce-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceAsyncClientTest.java @@ -756,10 +756,10 @@ void deferredFlushCommand(BatchScenario scenario) throws Exception { equalTo(DB_QUERY_TEXT, scenario.queryText), equalTo(DB_OPERATION_NAME, scenario.operationName), equalTo(DB_OPERATION_BATCH_SIZE, scenario.batchSize), - equalTo(DB_RESPONSE_STATUS_CODE, scenario.statusCode), - equalTo(ERROR_TYPE, scenario.statusCode)))); + equalTo(DB_RESPONSE_STATUS_CODE, scenario.errorCode), + equalTo(ERROR_TYPE, scenario.errorCode)))); - assertErrorTypeMetric("io.opentelemetry.lettuce-5.0", scenario.statusCode, 1); + assertErrorTypeMetric("io.opentelemetry.lettuce-5.0", scenario.errorCode, 1); } private static void assertErrorTypeMetric( @@ -917,7 +917,7 @@ private static Stream deferredFlushScenarios() { .queryText("CONFIG SET not-a-real-config ?; SET batch-after-error ?") .batchSize(2) .exceptionType("io.lettuce.core.RedisCommandExecutionException") - .statusCode("ERR") + .errorCode("ERR") .build())); } @@ -927,7 +927,7 @@ private static class BatchScenario { private final String queryText; private final Long batchSize; private final String exceptionType; - private final String statusCode; + private final String errorCode; private BatchScenario(Builder builder) { this.commands = builder.commands; @@ -935,7 +935,7 @@ private BatchScenario(Builder builder) { this.queryText = builder.queryText; this.batchSize = builder.batchSize; this.exceptionType = builder.exceptionType; - this.statusCode = builder.statusCode; + this.errorCode = builder.errorCode; } private static Builder builder() { @@ -952,7 +952,7 @@ private static class Builder { private String queryText; private Long batchSize; private String exceptionType; - private String statusCode; + private String errorCode; private Builder addCommand(BatchCommand command) { commands.add(command); @@ -974,8 +974,8 @@ private Builder batchSize(long batchSize) { return this; } - private Builder statusCode(String statusCode) { - this.statusCode = statusCode; + private Builder errorCode(String errorCode) { + this.errorCode = errorCode; return this; } diff --git a/instrumentation/lettuce/lettuce-5.1/library/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/LettuceDbAttributesGetter.java b/instrumentation/lettuce/lettuce-5.1/library/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/LettuceDbAttributesGetter.java index ab39754157c7..9835649fc00f 100644 --- a/instrumentation/lettuce/lettuce-5.1/library/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/LettuceDbAttributesGetter.java +++ b/instrumentation/lettuce/lettuce-5.1/library/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/LettuceDbAttributesGetter.java @@ -43,7 +43,7 @@ public String getDbOperationName(LettuceRequest request) { @Override public String getDbResponseStatusCode( LettuceRequest request, @Nullable LettuceResponse response, @Nullable Throwable error) { - return response == null ? null : response.getRedisStatusCode(); + return response == null ? null : response.getRedisErrorCode(); } @Nullable @@ -53,10 +53,10 @@ public String getErrorType( if (response == null || error != null) { return null; } - String statusCode = response.getRedisStatusCode(); + String errorCode = response.getRedisErrorCode(); // Older Lettuce tracing can report a failure without exposing its exception. // Leave exception-class fallback to the shared extractor when an exception is available. - return statusCode == null && response.isFailed() ? "_OTHER" : statusCode; + return errorCode == null && response.isFailed() ? "_OTHER" : errorCode; } @Nullable diff --git a/instrumentation/lettuce/lettuce-5.1/library/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/LettuceResponse.java b/instrumentation/lettuce/lettuce-5.1/library/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/LettuceResponse.java index bb338ceedf27..a1baf990147a 100644 --- a/instrumentation/lettuce/lettuce-5.1/library/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/LettuceResponse.java +++ b/instrumentation/lettuce/lettuce-5.1/library/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/LettuceResponse.java @@ -12,7 +12,7 @@ final class LettuceResponse { private final boolean failed; - @Nullable private final String redisStatusCode; + @Nullable private final String redisErrorCode; static LettuceResponse fromErrorMessage(@Nullable String errorMessage) { return new LettuceResponse(errorMessage != null, RedisErrorPrefix.extract(errorMessage)); @@ -26,9 +26,9 @@ static LettuceResponse unknownFailure() { return new LettuceResponse(true, null); } - private LettuceResponse(boolean failed, @Nullable String redisStatusCode) { + private LettuceResponse(boolean failed, @Nullable String redisErrorCode) { this.failed = failed; - this.redisStatusCode = redisStatusCode; + this.redisErrorCode = redisErrorCode; } boolean isFailed() { @@ -36,7 +36,7 @@ boolean isFailed() { } @Nullable - String getRedisStatusCode() { - return redisStatusCode; + String getRedisErrorCode() { + return redisErrorCode; } } diff --git a/instrumentation/lettuce/lettuce-5.1/library/src/test/java/io/opentelemetry/instrumentation/lettuce/v5_1/LettuceResponseTest.java b/instrumentation/lettuce/lettuce-5.1/library/src/test/java/io/opentelemetry/instrumentation/lettuce/v5_1/LettuceResponseTest.java index 04dc63aa49d7..5a4abcafa188 100644 --- a/instrumentation/lettuce/lettuce-5.1/library/src/test/java/io/opentelemetry/instrumentation/lettuce/v5_1/LettuceResponseTest.java +++ b/instrumentation/lettuce/lettuce-5.1/library/src/test/java/io/opentelemetry/instrumentation/lettuce/v5_1/LettuceResponseTest.java @@ -21,13 +21,13 @@ void extractsServerErrorPrefixWithoutChangingApplicationMessage() { output.setError(ByteBuffer.wrap("WRONGTYPE details".getBytes(UTF_8))); String applicationMessage = output.getError(); - assertThat(LettuceResponse.fromCommandOutput(output).getRedisStatusCode()) + assertThat(LettuceResponse.fromCommandOutput(output).getRedisErrorCode()) .isEqualTo("WRONGTYPE"); assertThat(output.getError()).isEqualTo(applicationMessage); } @Test void preservesLiteralStringVerbatim() { - assertThat(LettuceResponse.fromErrorMessage("ᅢᄅ details").getRedisStatusCode()).isEqualTo("ᅢᄅ"); + assertThat(LettuceResponse.fromErrorMessage("ᅢᄅ details").getRedisErrorCode()).isEqualTo("ᅢᄅ"); } } 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 950f381f4e7d..ce77594aa049 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 @@ -157,7 +157,7 @@ void schemaValidationFailure() throws Exception { assertWriteResult(collectionName, "insert", "121"); } - private void assertWriteResult(String collectionName, String operation, String statusCode) { + private void assertWriteResult(String collectionName, String operation, String errorCode) { AtomicReference scopeName = new AtomicReference<>(); testing() .waitAndAssertTraces( @@ -168,7 +168,7 @@ private void assertWriteResult(String collectionName, String operation, String s span.hasName(operation + " " + collectionName) .hasKind(CLIENT) .hasNoParent() - .hasStatus(statusCode == null ? StatusData.unset() : StatusData.error()) + .hasStatus(errorCode == null ? StatusData.unset() : StatusData.error()) .hasEventsSatisfyingExactly() .hasAttributesSatisfyingExactly( equalTo(DB_SYSTEM_NAME, MONGODB), @@ -184,8 +184,8 @@ private void assertWriteResult(String collectionName, String operation, String s equalTo( NETWORK_PEER_PORT, supportsNetworkPeer() ? Long.valueOf(port) : null), - equalTo(ERROR_TYPE, statusCode), - equalTo(DB_RESPONSE_STATUS_CODE, statusCode)); + equalTo(ERROR_TYPE, errorCode), + equalTo(DB_RESPONSE_STATUS_CODE, errorCode)); })); List> expectedMetricKeys = new ArrayList<>( @@ -200,7 +200,7 @@ private void assertWriteResult(String collectionName, String operation, String s expectedMetricKeys.add(NETWORK_PEER_ADDRESS); expectedMetricKeys.add(NETWORK_PEER_PORT); } - if (statusCode != null) { + if (errorCode != null) { expectedMetricKeys.add(ERROR_TYPE); } assertDurationMetric( diff --git a/instrumentation/opensearch/opensearch-java-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/v3_0/OpenSearchAttributesGetter.java b/instrumentation/opensearch/opensearch-java-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/v3_0/OpenSearchAttributesGetter.java index e291932095de..1a59d427800f 100644 --- a/instrumentation/opensearch/opensearch-java-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/v3_0/OpenSearchAttributesGetter.java +++ b/instrumentation/opensearch/opensearch-java-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/v3_0/OpenSearchAttributesGetter.java @@ -42,7 +42,7 @@ public String getDbOperationName(OpenSearchRequest request) { @Nullable public String getErrorType( OpenSearchRequest request, @Nullable Void response, @Nullable Throwable error) { - Integer statusCode = getResponseStatusCode(error); + Integer statusCode = getErrorCode(error); return statusCode != null && (statusCode >= 400 || statusCode < 100) ? statusCode.toString() : null; @@ -52,7 +52,7 @@ public String getErrorType( @Nullable public String getDbResponseStatusCode( OpenSearchRequest request, @Nullable Void response, @Nullable Throwable error) { - Integer statusCode = getResponseStatusCode(error); + Integer statusCode = getErrorCode(error); return statusCode != null ? statusCode.toString() : null; } @@ -71,7 +71,7 @@ public Integer getServerPort(OpenSearchRequest request) { } @Nullable - private static Integer getResponseStatusCode(@Nullable Throwable error) { + private static Integer getErrorCode(@Nullable Throwable error) { if (error instanceof CompletionException) { error = error.getCause(); } diff --git a/instrumentation/vertx/vertx-redis-client/vertx-redis-client-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/redisclient/v4_0/VertxRedisClientAttributesGetter.java b/instrumentation/vertx/vertx-redis-client/vertx-redis-client-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/redisclient/v4_0/VertxRedisClientAttributesGetter.java index 845e1df6ebc8..6b828c769605 100644 --- a/instrumentation/vertx/vertx-redis-client/vertx-redis-client-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/redisclient/v4_0/VertxRedisClientAttributesGetter.java +++ b/instrumentation/vertx/vertx-redis-client/vertx-redis-client-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/redisclient/v4_0/VertxRedisClientAttributesGetter.java @@ -78,13 +78,13 @@ public Integer getNetworkPeerPort(VertxRedisClientRequest request, @Nullable Voi @Nullable public String getDbResponseStatusCode( VertxRedisClientRequest request, @Nullable Void response, @Nullable Throwable error) { - return VertxRedisClientError.getResponseStatusCode(error); + return VertxRedisClientError.getErrorCode(error); } @Override @Nullable public String getErrorType( VertxRedisClientRequest request, @Nullable Void response, @Nullable Throwable error) { - return VertxRedisClientError.getResponseStatusCode(error); + return VertxRedisClientError.getErrorCode(error); } } diff --git a/instrumentation/vertx/vertx-redis-client/vertx-redis-client-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/redisclient/v4_0/VertxRedisClientError.java b/instrumentation/vertx/vertx-redis-client/vertx-redis-client-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/redisclient/v4_0/VertxRedisClientError.java index b3c9c999cfd3..46143f12bfbe 100644 --- a/instrumentation/vertx/vertx-redis-client/vertx-redis-client-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/redisclient/v4_0/VertxRedisClientError.java +++ b/instrumentation/vertx/vertx-redis-client/vertx-redis-client-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/redisclient/v4_0/VertxRedisClientError.java @@ -39,7 +39,7 @@ public static void captureServerError(ErrorType error) { } @Nullable - static String getResponseStatusCode(@Nullable Throwable error) { + static String getErrorCode(@Nullable Throwable error) { return error instanceof ErrorType ? SERVER_ERROR.get((ErrorType) error) : null; } From e8f6988f8efe18948d6abc6dccb331427665bd38 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 27 Oct 2026 03:38:07 +0000 Subject: [PATCH 24/33] Inline ClickHouse error code extraction Co-authored-by: trask <218610+trask@users.noreply.github.com> --- .../clientv1/v0_5/ClickHouseErrorCodeExtractor.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv1/v0_5/ClickHouseErrorCodeExtractor.java b/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv1/v0_5/ClickHouseErrorCodeExtractor.java index f12bc23b9e54..401c4286cae2 100644 --- a/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv1/v0_5/ClickHouseErrorCodeExtractor.java +++ b/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv1/v0_5/ClickHouseErrorCodeExtractor.java @@ -12,8 +12,11 @@ final class ClickHouseErrorCodeExtractor { @Nullable static String getErrorType(@Nullable Throwable error) { - String errorCode = getErrorCode(error); - return "0".equals(errorCode) ? null : errorCode; + if (error instanceof ClickHouseException) { + int errorCode = ((ClickHouseException) error).getErrorCode(); + return errorCode == 0 ? null : Integer.toString(errorCode); + } + return null; } @Nullable From 11baafa3cc47fff8840b48de343c4ab00f4c83aa Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 27 Oct 2026 03:38:07 +0000 Subject: [PATCH 25/33] Reconcile spymemcached assertions after rebase Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- .../spymemcached/v2_12/SpymemcachedTest.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/instrumentation/spymemcached-2.12/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spymemcached/v2_12/SpymemcachedTest.java b/instrumentation/spymemcached-2.12/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spymemcached/v2_12/SpymemcachedTest.java index f531fc39053e..8977f706efa5 100644 --- a/instrumentation/spymemcached-2.12/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spymemcached/v2_12/SpymemcachedTest.java +++ b/instrumentation/spymemcached-2.12/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spymemcached/v2_12/SpymemcachedTest.java @@ -339,8 +339,7 @@ void asciiGetMiss() throws Exception { testing.runWithSpan( "parent", () -> - assertThat(memcached.asyncGet("test-ascii-get-key-that-doesn't-exist").get()) - .isNull()); + assertThat(memcached.asyncGet("test-ascii-get-key-that-doesn't-exist").get()).isNull()); testing.waitAndAssertTraces( trace -> @@ -561,6 +560,7 @@ void bulkGetWithIteratorTranscodersOmitsKeysWhenCountsDiffer() throws Exception equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "get"), equalTo(DB_QUERY_TEXT, "getBulk"), + equalTo(DB_RESPONSE_STATUS_CODE, "SUCCESS"), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -611,6 +611,7 @@ public int size() { equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "get"), equalTo(DB_QUERY_TEXT, "getBulk test-get"), + equalTo(DB_RESPONSE_STATUS_CODE, "SUCCESS"), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -625,6 +626,7 @@ public int size() { equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "get"), equalTo(DB_QUERY_TEXT, "get test-get"), + equalTo(DB_RESPONSE_STATUS_CODE, "SUCCESS"), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -664,6 +666,7 @@ public Object decode(CachedData cachedData) { equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "get"), equalTo(DB_QUERY_TEXT, "getBulk " + outerKey), + equalTo(DB_RESPONSE_STATUS_CODE, "SUCCESS"), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -678,6 +681,7 @@ public Object decode(CachedData cachedData) { equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "get"), equalTo(DB_QUERY_TEXT, "getBulk " + nestedKey), + equalTo(DB_RESPONSE_STATUS_CODE, "SUCCESS"), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -721,6 +725,7 @@ void bulkGetCancellationPreservesQueryAndDoesNotReportError() { equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "get"), equalTo(DB_QUERY_TEXT, "getBulk cancel-bulk"), + equalTo(DB_RESPONSE_STATUS_CODE, "CANCELLED"), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo(SERVER_PORT, memcachedAddress.getPort()), equalTo( From 1e0366353a6c45687675fb05318ec41a32ce9ff5 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 29 Oct 2026 22:31:15 +0000 Subject: [PATCH 26/33] Expect Lettuce auth setup status codes Co-authored-by: trask <218610+trask@users.noreply.github.com> --- .../lettuce/v5_1/AbstractLettuceSyncClientAuthTest.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/instrumentation/lettuce/lettuce-5.1/testing/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceSyncClientAuthTest.java b/instrumentation/lettuce/lettuce-5.1/testing/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceSyncClientAuthTest.java index f483e22e6d20..1d8cc271278f 100644 --- a/instrumentation/lettuce/lettuce-5.1/testing/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceSyncClientAuthTest.java +++ b/instrumentation/lettuce/lettuce-5.1/testing/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceSyncClientAuthTest.java @@ -10,6 +10,7 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; import static io.opentelemetry.semconv.DbAttributes.DB_OPERATION_NAME; import static io.opentelemetry.semconv.DbAttributes.DB_QUERY_TEXT; +import static io.opentelemetry.semconv.DbAttributes.DB_RESPONSE_STATUS_CODE; import static io.opentelemetry.semconv.DbAttributes.DB_SYSTEM_NAME; import static io.opentelemetry.semconv.ErrorAttributes.ERROR_TYPE; import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_ADDRESS; @@ -82,6 +83,7 @@ void testAuthCommand() throws ReflectiveOperationException { equalTo(DB_SYSTEM_NAME, REDIS), equalTo(DB_QUERY_TEXT, "CLIENT SETINFO lib-name Lettuce"), equalTo(DB_OPERATION_NAME, "CLIENT"), + equalTo(DB_RESPONSE_STATUS_CODE, "NOAUTH"), equalTo( ERROR_TYPE, RedisCommandExecutionException.class.getName())))), @@ -101,6 +103,7 @@ void testAuthCommand() throws ReflectiveOperationException { DB_QUERY_TEXT, val -> val.startsWith("CLIENT SETINFO lib-ver")), equalTo(DB_OPERATION_NAME, "CLIENT"), + equalTo(DB_RESPONSE_STATUS_CODE, "NOAUTH"), equalTo( ERROR_TYPE, RedisCommandExecutionException.class.getName())))), @@ -120,6 +123,7 @@ void testAuthCommand() throws ReflectiveOperationException { DB_QUERY_TEXT, val -> val.startsWith("CLIENT MAINT_NOTIFICATIONS")), equalTo(DB_OPERATION_NAME, "CLIENT"), + equalTo(DB_RESPONSE_STATUS_CODE, "NOAUTH"), equalTo( ERROR_TYPE, RedisCommandExecutionException.class.getName())))), From e681a2045a35a5d6ebc424c5ffb0ce83bb443ef0 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 29 Oct 2026 23:37:35 +0000 Subject: [PATCH 27/33] Condition database response status attributes Co-authored-by: trask <218610+trask@users.noreply.github.com> --- .../incubator/semconv/db/DbClientMetrics.java | 5 ++ .../semconv/db/DbClientMetricsAdvice.java | 2 + .../semconv/db/DbClientMetricsTest.java | 75 ++++++++++++++++ .../SpymemcachedAttributesGetterTest.java | 41 +++------ .../v2_12/SpymemcachedAttributesGetter.java | 12 ++- .../spymemcached/v2_12/SpymemcachedTest.java | 89 ++++++++++--------- 6 files changed, 150 insertions(+), 74 deletions(-) diff --git a/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/DbClientMetrics.java b/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/DbClientMetrics.java index 17e46e01298c..57e609c12883 100644 --- a/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/DbClientMetrics.java +++ b/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/DbClientMetrics.java @@ -5,6 +5,8 @@ package io.opentelemetry.instrumentation.api.incubator.semconv.db; +import static io.opentelemetry.semconv.DbAttributes.DB_RESPONSE_STATUS_CODE; +import static io.opentelemetry.semconv.ErrorAttributes.ERROR_TYPE; import static java.util.concurrent.TimeUnit.SECONDS; import static java.util.logging.Level.FINE; @@ -79,6 +81,9 @@ public void onEnd(Context context, Attributes endAttributes, long endNanos) { } Attributes attributes = state.startAttributes().toBuilder().putAll(endAttributes).build(); + if (attributes.get(ERROR_TYPE) == null) { + attributes = attributes.toBuilder().remove(DB_RESPONSE_STATUS_CODE).build(); + } duration.record((endNanos - state.startTimeNanos()) / NANOS_PER_S, attributes, context); } diff --git a/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/DbClientMetricsAdvice.java b/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/DbClientMetricsAdvice.java index f08251eb0798..eb3109d82fb2 100644 --- a/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/DbClientMetricsAdvice.java +++ b/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/DbClientMetricsAdvice.java @@ -9,6 +9,7 @@ import static io.opentelemetry.semconv.DbAttributes.DB_NAMESPACE; import static io.opentelemetry.semconv.DbAttributes.DB_OPERATION_NAME; import static io.opentelemetry.semconv.DbAttributes.DB_QUERY_SUMMARY; +import static io.opentelemetry.semconv.DbAttributes.DB_RESPONSE_STATUS_CODE; import static io.opentelemetry.semconv.DbAttributes.DB_SYSTEM_NAME; import static io.opentelemetry.semconv.ErrorAttributes.ERROR_TYPE; import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_ADDRESS; @@ -39,6 +40,7 @@ static void applyClientDurationAdvice(DoubleHistogramBuilder builder) { DB_NAMESPACE, DB_OPERATION_NAME, DB_QUERY_SUMMARY, + DB_RESPONSE_STATUS_CODE, ERROR_TYPE, NETWORK_PEER_ADDRESS, NETWORK_PEER_PORT, diff --git a/instrumentation-api-incubator/src/test/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/DbClientMetricsTest.java b/instrumentation-api-incubator/src/test/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/DbClientMetricsTest.java index 39f43bc7e3d6..30afa321b6ed 100644 --- a/instrumentation-api-incubator/src/test/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/DbClientMetricsTest.java +++ b/instrumentation-api-incubator/src/test/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/DbClientMetricsTest.java @@ -106,6 +106,7 @@ void collectsMetrics() { SERVER_ADDRESS, "db1.example:5432,db2.example:5432"), equalTo(ERROR_TYPE, "400"), + equalTo(DB_RESPONSE_STATUS_CODE, "400"), equalTo(NETWORK_PEER_ADDRESS, "1.2.3.4"), equalTo(NETWORK_PEER_PORT, 8080)) .hasExemplarsSatisfying( @@ -116,6 +117,80 @@ void collectsMetrics() { .hasBucketBoundaries(DURATION_BUCKETS)))); } + @Test + void responseStatusCodeIsRecordedOnlyForFailedOperationsWithAvailableCode() { + InMemoryMetricReader metricReader = InMemoryMetricReader.create(); + SdkMeterProvider meterProvider = + SdkMeterProvider.builder().registerMetricReader(metricReader).build(); + cleanup.deferCleanup(meterProvider); + + OperationListener listener = DbClientMetrics.get().create(meterProvider.get("test")); + + record( + listener, + "failedWithCode", + Attributes.builder().put(ERROR_TYPE, "400").put(DB_RESPONSE_STATUS_CODE, "400").build()); + record(listener, "failedWithoutCode", Attributes.of(ERROR_TYPE, "io.example.DbException")); + record(listener, "successfulWithCode", Attributes.of(DB_RESPONSE_STATUS_CODE, "200")); + record(listener, "successfulWithoutCode", Attributes.empty()); + + assertThat(metricReader.collectAllMetrics()) + .satisfiesExactly( + metric -> { + assertThat(metric).hasName("db.client.operation.duration"); + assertThat(metric.getHistogramData().getPoints()) + .satisfiesExactlyInAnyOrder( + point -> + assertThat(point.getAttributes().asMap()) + .isEqualTo( + Attributes.builder() + .put(DB_SYSTEM_NAME, "myDb") + .put(DB_OPERATION_NAME, "failedWithCode") + .put(ERROR_TYPE, "400") + .put(DB_RESPONSE_STATUS_CODE, "400") + .build() + .asMap()), + point -> + assertThat(point.getAttributes().asMap()) + .isEqualTo( + Attributes.builder() + .put(DB_SYSTEM_NAME, "myDb") + .put(DB_OPERATION_NAME, "failedWithoutCode") + .put(ERROR_TYPE, "io.example.DbException") + .build() + .asMap()), + point -> + assertThat(point.getAttributes().asMap()) + .isEqualTo( + Attributes.builder() + .put(DB_SYSTEM_NAME, "myDb") + .put(DB_OPERATION_NAME, "successfulWithCode") + .build() + .asMap()), + point -> + assertThat(point.getAttributes().asMap()) + .isEqualTo( + Attributes.builder() + .put(DB_SYSTEM_NAME, "myDb") + .put(DB_OPERATION_NAME, "successfulWithoutCode") + .build() + .asMap())); + }); + } + + private static void record( + OperationListener listener, String operationName, Attributes responseAttributes) { + Context context = + listener.onStart( + Context.root(), + Attributes.builder() + .put(DB_SYSTEM_NAME, "myDb") + .put(DB_OPERATION_NAME, operationName) + .build(), + nanos(100)); + listener.onEnd(context, responseAttributes, nanos(250)); + } + private static long nanos(int millis) { return MILLISECONDS.toNanos(millis); } diff --git a/instrumentation/spymemcached-2.12/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/spymemcached/v2_12/SpymemcachedAttributesGetterTest.java b/instrumentation/spymemcached-2.12/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/spymemcached/v2_12/SpymemcachedAttributesGetterTest.java index ea309eb0016f..d097f15266ab 100644 --- a/instrumentation/spymemcached-2.12/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/spymemcached/v2_12/SpymemcachedAttributesGetterTest.java +++ b/instrumentation/spymemcached-2.12/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/spymemcached/v2_12/SpymemcachedAttributesGetterTest.java @@ -43,31 +43,13 @@ class SpymemcachedAttributesGetterTest { @ParameterizedTest @EnumSource( value = StatusCode.class, - names = { - "SUCCESS", - "ERR_NOT_FOUND", - "ERR_EXISTS", - "ERR_2BIG", - "ERR_INVAL", - "ERR_NOT_STORED", - "ERR_DELTA_BADVAL", - "ERR_NOT_MY_VBUCKET", - "ERR_UNKNOWN_COMMAND", - "ERR_NO_MEM", - "ERR_NOT_SUPPORTED", - "ERR_INTERNAL", - "ERR_BUSY", - "ERR_TEMP_FAIL", - "CANCELLED", - "INTERRUPTED", - "TIMEDOUT", - "ERR_CLIENT" - }) - void databaseOutcomeStatusesAreReportedRegardlessOfSuccess(StatusCode code) { + names = {"SUCCESS", "ERR_NOT_FOUND", "ERR_EXISTS", "ERR_NOT_STORED", "CANCELLED"}) + void expectedOutcomesDoNotReportResponseStatus(StatusCode code) { OperationFuture future = mock(OperationFuture.class); - when(future.getStatus()).thenReturn(new OperationStatus(true, "status", code)); + when(future.getStatus()) + .thenReturn(new OperationStatus(code == StatusCode.SUCCESS, "status", code)); - assertThat(getter.getDbResponseStatusCode(null, future, null)).isEqualTo(code.name()); + assertThat(getter.getDbResponseStatusCode(null, future, null)).isNull(); } @Test @@ -79,10 +61,10 @@ void responseStatusDoesNotChangeErrorTypeClassification() { assertThat(getter.getErrorType(null, future, null)).isEqualTo("ERR_2BIG"); when(future.getStatus()).thenReturn(new OperationStatus(true, "stored", StatusCode.SUCCESS)); - assertThat(getter.getDbResponseStatusCode(null, future, null)).isEqualTo("SUCCESS"); + assertThat(getter.getDbResponseStatusCode(null, future, null)).isNull(); when(future.getStatus()) .thenReturn(new OperationStatus(false, "cancelled", StatusCode.CANCELLED)); - assertThat(getter.getDbResponseStatusCode(null, future, null)).isEqualTo("CANCELLED"); + assertThat(getter.getDbResponseStatusCode(null, future, null)).isNull(); assertThat(getter.getErrorType(null, future, null)).isNull(); assertThat(getter.getDbResponseStatusCode(null, null, new IllegalStateException("failed"))) .isNull(); @@ -125,22 +107,23 @@ void clientStatusesAreAvailableWithoutChangingErrorType(StatusCode code) { } @Test - void cancelledFutureRetainsItsResponseStatus() { + void cancelledFutureDoesNotRetainItsResponseStatus() { OperationFuture future = mock(OperationFuture.class); when(future.isCancelled()).thenReturn(true); when(future.getStatus()) .thenReturn(new OperationStatus(false, "cancelled", StatusCode.CANCELLED)); - assertThat(getter.getDbResponseStatusCode(null, future, null)).isEqualTo("CANCELLED"); + assertThat(getter.getDbResponseStatusCode(null, future, null)).isNull(); assertThat(getter.getErrorType(null, future, null)).isNull(); } @Test void bulkFutureStatusIsAvailable() { BulkGetFuture future = mock(BulkGetFuture.class); - when(future.getStatus()).thenReturn(new OperationStatus(true, "stored", StatusCode.SUCCESS)); + when(future.getStatus()) + .thenReturn(new OperationStatus(false, "too large", StatusCode.ERR_2BIG)); - assertThat(getter.getDbResponseStatusCode(null, future, null)).isEqualTo("SUCCESS"); + assertThat(getter.getDbResponseStatusCode(null, future, null)).isEqualTo("ERR_2BIG"); } @Test diff --git a/instrumentation/spymemcached-2.12/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spymemcached/v2_12/SpymemcachedAttributesGetter.java b/instrumentation/spymemcached-2.12/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spymemcached/v2_12/SpymemcachedAttributesGetter.java index b01f85d03cff..46f9dc3af949 100644 --- a/instrumentation/spymemcached-2.12/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spymemcached/v2_12/SpymemcachedAttributesGetter.java +++ b/instrumentation/spymemcached-2.12/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spymemcached/v2_12/SpymemcachedAttributesGetter.java @@ -49,9 +49,19 @@ public String getDbResponseStatusCode( return null; } StatusCode code = status.getStatusCode(); - if (code == null) { + if (code == null || status.isSuccess()) { return null; } + switch (code) { + case SUCCESS: + case ERR_NOT_FOUND: + case ERR_EXISTS: + case ERR_NOT_STORED: + case CANCELLED: + return null; + default: + break; + } return code.name(); } diff --git a/instrumentation/spymemcached-2.12/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spymemcached/v2_12/SpymemcachedTest.java b/instrumentation/spymemcached-2.12/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spymemcached/v2_12/SpymemcachedTest.java index 8977f706efa5..aa1bfb3ba6d7 100644 --- a/instrumentation/spymemcached-2.12/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spymemcached/v2_12/SpymemcachedTest.java +++ b/instrumentation/spymemcached-2.12/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spymemcached/v2_12/SpymemcachedTest.java @@ -274,6 +274,7 @@ void storeRejectedAsTooLarge() throws Exception { NETWORK_PEER_PORT, SERVER_ADDRESS, SERVER_PORT, + DB_RESPONSE_STATUS_CODE, ERROR_TYPE); } @@ -295,7 +296,7 @@ void getHit() { equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "get"), equalTo(DB_QUERY_TEXT, "get test-get"), - equalTo(DB_RESPONSE_STATUS_CODE, "SUCCESS"), + equalTo(DB_RESPONSE_STATUS_CODE, null), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -323,7 +324,7 @@ void getMiss() { equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "get"), equalTo(DB_QUERY_TEXT, "get test-get-key-that-doesn't-exist"), - equalTo(DB_RESPONSE_STATUS_CODE, "ERR_NOT_FOUND"), + equalTo(DB_RESPONSE_STATUS_CODE, null), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -353,7 +354,7 @@ void asciiGetMiss() throws Exception { equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "get"), equalTo(DB_QUERY_TEXT, "get test-ascii-get-key-that-doesn't-exist"), - equalTo(DB_RESPONSE_STATUS_CODE, "ERR_NOT_FOUND"), + equalTo(DB_RESPONSE_STATUS_CODE, null), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -394,7 +395,7 @@ void getCancel() { equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "get"), equalTo(DB_QUERY_TEXT, "get test-get"), - equalTo(DB_RESPONSE_STATUS_CODE, "CANCELLED"), + equalTo(DB_RESPONSE_STATUS_CODE, null), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -530,7 +531,7 @@ void bulkGet(String overload, boolean async, boolean capturesKeys) throws Except equalTo( DB_QUERY_TEXT, capturesKeys ? "getBulk test-get test-get-2" : "getBulk"), - equalTo(DB_RESPONSE_STATUS_CODE, "SUCCESS"), + equalTo(DB_RESPONSE_STATUS_CODE, null), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -560,7 +561,7 @@ void bulkGetWithIteratorTranscodersOmitsKeysWhenCountsDiffer() throws Exception equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "get"), equalTo(DB_QUERY_TEXT, "getBulk"), - equalTo(DB_RESPONSE_STATUS_CODE, "SUCCESS"), + equalTo(DB_RESPONSE_STATUS_CODE, null), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -611,7 +612,7 @@ public int size() { equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "get"), equalTo(DB_QUERY_TEXT, "getBulk test-get"), - equalTo(DB_RESPONSE_STATUS_CODE, "SUCCESS"), + equalTo(DB_RESPONSE_STATUS_CODE, null), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -626,7 +627,7 @@ public int size() { equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "get"), equalTo(DB_QUERY_TEXT, "get test-get"), - equalTo(DB_RESPONSE_STATUS_CODE, "SUCCESS"), + equalTo(DB_RESPONSE_STATUS_CODE, null), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -666,7 +667,7 @@ public Object decode(CachedData cachedData) { equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "get"), equalTo(DB_QUERY_TEXT, "getBulk " + outerKey), - equalTo(DB_RESPONSE_STATUS_CODE, "SUCCESS"), + equalTo(DB_RESPONSE_STATUS_CODE, null), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -681,7 +682,7 @@ public Object decode(CachedData cachedData) { equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "get"), equalTo(DB_QUERY_TEXT, "getBulk " + nestedKey), - equalTo(DB_RESPONSE_STATUS_CODE, "SUCCESS"), + equalTo(DB_RESPONSE_STATUS_CODE, null), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -725,7 +726,7 @@ void bulkGetCancellationPreservesQueryAndDoesNotReportError() { equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "get"), equalTo(DB_QUERY_TEXT, "getBulk cancel-bulk"), - equalTo(DB_RESPONSE_STATUS_CODE, "CANCELLED"), + equalTo(DB_RESPONSE_STATUS_CODE, null), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo(SERVER_PORT, memcachedAddress.getPort()), equalTo( @@ -758,7 +759,7 @@ void set() throws Exception { equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "set"), equalTo(DB_QUERY_TEXT, "set test-set 3600 ?"), - equalTo(DB_RESPONSE_STATUS_CODE, "SUCCESS"), + equalTo(DB_RESPONSE_STATUS_CODE, null), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -797,7 +798,7 @@ void setCancel() { equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "set"), equalTo(DB_QUERY_TEXT, "set test-set-cancel 3600 ?"), - equalTo(DB_RESPONSE_STATUS_CODE, "CANCELLED"), + equalTo(DB_RESPONSE_STATUS_CODE, null), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -831,7 +832,7 @@ void add() throws Exception { equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "add"), equalTo(DB_QUERY_TEXT, "add test-add 3600 ?"), - equalTo(DB_RESPONSE_STATUS_CODE, "SUCCESS"), + equalTo(DB_RESPONSE_STATUS_CODE, null), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -846,7 +847,7 @@ void add() throws Exception { equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "get"), equalTo(DB_QUERY_TEXT, "get test-add"), - equalTo(DB_RESPONSE_STATUS_CODE, "SUCCESS"), + equalTo(DB_RESPONSE_STATUS_CODE, null), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -878,7 +879,7 @@ void secondAdd() throws Exception { equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "add"), equalTo(DB_QUERY_TEXT, "add test-add2 3600 ?"), - equalTo(DB_RESPONSE_STATUS_CODE, "SUCCESS"), + equalTo(DB_RESPONSE_STATUS_CODE, null), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -893,7 +894,7 @@ void secondAdd() throws Exception { equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "add"), equalTo(DB_QUERY_TEXT, "add test-add2 3600 ?"), - equalTo(DB_RESPONSE_STATUS_CODE, "ERR_EXISTS"), + equalTo(DB_RESPONSE_STATUS_CODE, null), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -924,7 +925,7 @@ void delete() throws Exception { equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "delete"), equalTo(DB_QUERY_TEXT, "delete test-delete"), - equalTo(DB_RESPONSE_STATUS_CODE, "SUCCESS"), + equalTo(DB_RESPONSE_STATUS_CODE, null), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -939,7 +940,7 @@ void delete() throws Exception { equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "get"), equalTo(DB_QUERY_TEXT, "get test-delete"), - equalTo(DB_RESPONSE_STATUS_CODE, "ERR_NOT_FOUND"), + equalTo(DB_RESPONSE_STATUS_CODE, null), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -970,7 +971,7 @@ void deleteNonExistent() throws Exception { equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "delete"), equalTo(DB_QUERY_TEXT, "delete test-delete-non-existent"), - equalTo(DB_RESPONSE_STATUS_CODE, "ERR_NOT_FOUND"), + equalTo(DB_RESPONSE_STATUS_CODE, null), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -1002,7 +1003,7 @@ void replace() throws Exception { equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "replace"), equalTo(DB_QUERY_TEXT, "replace test-replace 3600 ?"), - equalTo(DB_RESPONSE_STATUS_CODE, "SUCCESS"), + equalTo(DB_RESPONSE_STATUS_CODE, null), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -1017,7 +1018,7 @@ void replace() throws Exception { equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "get"), equalTo(DB_QUERY_TEXT, "get test-replace"), - equalTo(DB_RESPONSE_STATUS_CODE, "SUCCESS"), + equalTo(DB_RESPONSE_STATUS_CODE, null), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -1052,7 +1053,7 @@ void replaceNonExistent() throws Exception { equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "replace"), equalTo(DB_QUERY_TEXT, "replace test-replace-non-existent 3600 ?"), - equalTo(DB_RESPONSE_STATUS_CODE, "ERR_NOT_FOUND"), + equalTo(DB_RESPONSE_STATUS_CODE, null), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -1085,7 +1086,7 @@ void append() throws Exception { equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "gets"), equalTo(DB_QUERY_TEXT, "gets test-append"), - equalTo(DB_RESPONSE_STATUS_CODE, "SUCCESS"), + equalTo(DB_RESPONSE_STATUS_CODE, null), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -1101,7 +1102,7 @@ void append() throws Exception { equalTo(DB_OPERATION_NAME, "append"), satisfies( DB_QUERY_TEXT, val -> val.matches("append \\d+ test-append \\?")), - equalTo(DB_RESPONSE_STATUS_CODE, "SUCCESS"), + equalTo(DB_RESPONSE_STATUS_CODE, null), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -1116,7 +1117,7 @@ void append() throws Exception { equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "get"), equalTo(DB_QUERY_TEXT, "get test-append"), - equalTo(DB_RESPONSE_STATUS_CODE, "SUCCESS"), + equalTo(DB_RESPONSE_STATUS_CODE, null), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -1150,7 +1151,7 @@ void prepend() throws Exception { equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "gets"), equalTo(DB_QUERY_TEXT, "gets test-prepend"), - equalTo(DB_RESPONSE_STATUS_CODE, "SUCCESS"), + equalTo(DB_RESPONSE_STATUS_CODE, null), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -1166,7 +1167,7 @@ void prepend() throws Exception { equalTo(DB_OPERATION_NAME, "prepend"), satisfies( DB_QUERY_TEXT, val -> val.matches("prepend \\d+ test-prepend \\?")), - equalTo(DB_RESPONSE_STATUS_CODE, "SUCCESS"), + equalTo(DB_RESPONSE_STATUS_CODE, null), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -1181,7 +1182,7 @@ void prepend() throws Exception { equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "get"), equalTo(DB_QUERY_TEXT, "get test-prepend"), - equalTo(DB_RESPONSE_STATUS_CODE, "SUCCESS"), + equalTo(DB_RESPONSE_STATUS_CODE, null), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -1214,7 +1215,7 @@ void cas() { equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "gets"), equalTo(DB_QUERY_TEXT, "gets test-cas"), - equalTo(DB_RESPONSE_STATUS_CODE, "SUCCESS"), + equalTo(DB_RESPONSE_STATUS_CODE, null), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -1230,7 +1231,7 @@ void cas() { equalTo(DB_OPERATION_NAME, "cas"), satisfies( DB_QUERY_TEXT, val -> val.matches("cas test-cas \\d+ 3600 \\?")), - equalTo(DB_RESPONSE_STATUS_CODE, "SUCCESS"), + equalTo(DB_RESPONSE_STATUS_CODE, null), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -1280,7 +1281,7 @@ void casNotFound(boolean numericValue, boolean withExpiration) throws Exception + (numericValue && !withExpiration ? " 1234 ?" : " 1234 3600 ?")), - equalTo(DB_RESPONSE_STATUS_CODE, "ERR_NOT_FOUND"), + equalTo(DB_RESPONSE_STATUS_CODE, null), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -1310,7 +1311,7 @@ void touch() throws Exception { equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "touch"), equalTo(DB_QUERY_TEXT, "touch test-touch 3600"), - equalTo(DB_RESPONSE_STATUS_CODE, "SUCCESS"), + equalTo(DB_RESPONSE_STATUS_CODE, null), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -1341,7 +1342,7 @@ void touchNonExistent() throws Exception { equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "touch"), equalTo(DB_QUERY_TEXT, "touch test-touch-non-existent 3600"), - equalTo(DB_RESPONSE_STATUS_CODE, "ERR_NOT_FOUND"), + equalTo(DB_RESPONSE_STATUS_CODE, null), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -1372,7 +1373,7 @@ void getAndTouch() { equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "gat"), equalTo(DB_QUERY_TEXT, "getAndTouch test-touch 3600"), - equalTo(DB_RESPONSE_STATUS_CODE, "SUCCESS"), + equalTo(DB_RESPONSE_STATUS_CODE, null), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -1402,7 +1403,7 @@ void getAndTouchNonExistent() { equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "gat"), equalTo(DB_QUERY_TEXT, "getAndTouch test-touch-non-existent 3600"), - equalTo(DB_RESPONSE_STATUS_CODE, "ERR_NOT_FOUND"), + equalTo(DB_RESPONSE_STATUS_CODE, null), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -1451,7 +1452,7 @@ it needs values to be strings (with digits in them) and it returns actual long f equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "get"), equalTo(DB_QUERY_TEXT, "get test-decr"), - equalTo(DB_RESPONSE_STATUS_CODE, "SUCCESS"), + equalTo(DB_RESPONSE_STATUS_CODE, null), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -1555,7 +1556,7 @@ it needs values to be strings (with digits in them) and it returns actual long f equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "get"), equalTo(DB_QUERY_TEXT, "get test-incr"), - equalTo(DB_RESPONSE_STATUS_CODE, "SUCCESS"), + equalTo(DB_RESPONSE_STATUS_CODE, null), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, @@ -1701,7 +1702,7 @@ void optimizedRedistributionOmitsPeerFromEveryRequest() throws Exception { equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "get"), equalTo(DB_QUERY_TEXT, "get " + keys.get(0)), - equalTo(DB_RESPONSE_STATUS_CODE, "ERR_NOT_FOUND"), + equalTo(DB_RESPONSE_STATUS_CODE, null), equalTo(SERVER_ADDRESS, target), equalTo(stringKey("spymemcached.result"), experimental("miss"))), span -> @@ -1712,7 +1713,7 @@ void optimizedRedistributionOmitsPeerFromEveryRequest() throws Exception { equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "get"), equalTo(DB_QUERY_TEXT, "get " + keys.get(1)), - equalTo(DB_RESPONSE_STATUS_CODE, "ERR_NOT_FOUND"), + equalTo(DB_RESPONSE_STATUS_CODE, null), equalTo(SERVER_ADDRESS, target), equalTo(stringKey("spymemcached.result"), experimental("miss"))))); } @@ -1785,7 +1786,7 @@ void sequentialSingleKeyRetriesUseLastPeer(Protocol protocol, int retries) throw equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "get"), equalTo(DB_QUERY_TEXT, "get " + requestKey), - equalTo(DB_RESPONSE_STATUS_CODE, "ERR_NOT_FOUND"), + equalTo(DB_RESPONSE_STATUS_CODE, null), equalTo(SERVER_ADDRESS, target), equalTo(NETWORK_PEER_ADDRESS, peer.getAddress().getHostAddress()), equalTo(NETWORK_PEER_PORT, (long) peer.getPort()), @@ -1871,7 +1872,7 @@ void retryBeforeInitialEnqueueReturnsKeepsRetryPeer() throws Exception { equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "get"), equalTo(DB_QUERY_TEXT, "get " + requestKey), - equalTo(DB_RESPONSE_STATUS_CODE, "ERR_NOT_FOUND"), + equalTo(DB_RESPONSE_STATUS_CODE, null), equalTo(SERVER_ADDRESS, target), equalTo(NETWORK_PEER_ADDRESS, retryPeer.getAddress().getHostAddress()), equalTo(NETWORK_PEER_PORT, (long) retryPeer.getPort()), @@ -1903,7 +1904,7 @@ void severalConfiguredNodesAreReportedTogether() { equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "get"), equalTo(DB_QUERY_TEXT, "get test-several-nodes"), - equalTo(DB_RESPONSE_STATUS_CODE, "ERR_NOT_FOUND"), + equalTo(DB_RESPONSE_STATUS_CODE, null), satisfies( SERVER_ADDRESS, val -> { @@ -1963,7 +1964,7 @@ void clientKeepsTheNodesItWasCreatedWith() { equalTo(DB_SYSTEM_NAME, MEMCACHED), equalTo(DB_OPERATION_NAME, "get"), equalTo(DB_QUERY_TEXT, "get test-node-list-mutation"), - equalTo(DB_RESPONSE_STATUS_CODE, "ERR_NOT_FOUND"), + equalTo(DB_RESPONSE_STATUS_CODE, null), equalTo(SERVER_ADDRESS, memcachedAddress.getHostString()), equalTo( NETWORK_PEER_ADDRESS, From 8097414b200799419d5aab0ed10c49988400a5e1 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 30 Oct 2026 02:27:43 +0000 Subject: [PATCH 28/33] Capture JDBC warning response status codes Co-authored-by: trask <218610+trask@users.noreply.github.com> --- .../instrumentation/jdbc/JdbcAdviceScope.java | 23 ++++-- .../jdbc/internal/DbRequest.java | 26 ++++++- .../jdbc/internal/JdbcAttributesGetter.java | 18 ++++- .../jdbc/internal/OpenTelemetryStatement.java | 2 +- .../jdbc/datasource/JdbcTelemetryTest.java | 28 +++++-- .../instrumentation/jdbc/TestConnection.java | 34 +++++--- .../instrumentation/jdbc/TestStatement.java | 7 +- .../AbstractJdbcInstrumentationTest.java | 77 +++++++++++++++++++ .../javaagent/build.gradle.kts | 14 ++++ .../v3_0/OpenSearchAttributesGetterTest.java | 0 .../javaagent/build.gradle.kts | 17 ++++ .../OpenSearchRestAttributesGetterTest.java | 0 12 files changed, 215 insertions(+), 31 deletions(-) rename instrumentation/opensearch/opensearch-java-3.0/{javaagent-unit-tests/src/test => javaagent/src/unitTests}/java/io/opentelemetry/javaagent/instrumentation/opensearch/v3_0/OpenSearchAttributesGetterTest.java (100%) rename instrumentation/opensearch/opensearch-rest-common-1.0/{javaagent-unit-tests/src/test => javaagent/src/unitTests}/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/v1_0/OpenSearchRestAttributesGetterTest.java (100%) diff --git a/instrumentation/jdbc/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jdbc/JdbcAdviceScope.java b/instrumentation/jdbc/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jdbc/JdbcAdviceScope.java index 5c59c439f671..d55df2430015 100644 --- a/instrumentation/jdbc/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jdbc/JdbcAdviceScope.java +++ b/instrumentation/jdbc/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jdbc/JdbcAdviceScope.java @@ -22,37 +22,42 @@ public class JdbcAdviceScope { private final CallDepth callDepth; @Nullable private final DbRequest request; + private final Statement statement; @Nullable private final Context context; @Nullable private final Scope scope; private JdbcAdviceScope( CallDepth callDepth, @Nullable DbRequest request, + Statement statement, @Nullable Context context, @Nullable Scope scope) { this.callDepth = callDepth; this.request = request; + this.statement = statement; this.context = context; this.scope = scope; } public static JdbcAdviceScope startBatch(CallDepth callDepth, Statement statement) { - return start(callDepth, () -> createBatchRequest(statement)); + return start(callDepth, statement, () -> createBatchRequest(statement)); } public static JdbcAdviceScope startStatement( CallDepth callDepth, String sql, Statement statement) { - return start(callDepth, () -> DbRequest.create(statement, sql)); + return start(callDepth, statement, () -> DbRequest.create(statement, sql)); } public static JdbcAdviceScope startPreparedStatement( CallDepth callDepth, PreparedStatement preparedStatement) { return start( callDepth, + preparedStatement, () -> DbRequest.create(preparedStatement, JdbcData.getParameters(preparedStatement))); } - private static JdbcAdviceScope start(CallDepth callDepth, Supplier requestSupplier) { + private static JdbcAdviceScope start( + CallDepth callDepth, Statement statement, Supplier requestSupplier) { // Connection#getMetaData() may execute a Statement or PreparedStatement to retrieve DB info // this happens before the DB CLIENT span is started (and put in the current context), so this // instrumentation runs again and the shouldStartSpan() check always returns true - and so on @@ -61,17 +66,17 @@ private static JdbcAdviceScope start(CallDepth callDepth, Supplier re // is called - the first recursive Statement call is just skipped and we do not create a span // for it if (callDepth.getAndIncrement() > 0) { - return new JdbcAdviceScope(callDepth, null, null, null); + return new JdbcAdviceScope(callDepth, null, statement, null, null); } Context parentContext = Context.current(); DbRequest request = requestSupplier.get(); if (request == null || !statementInstrumenter().shouldStart(parentContext, request)) { - return new JdbcAdviceScope(callDepth, null, null, null); + return new JdbcAdviceScope(callDepth, null, statement, null, null); } Context context = statementInstrumenter().start(parentContext, request); - return new JdbcAdviceScope(callDepth, request, context, context.makeCurrent()); + return new JdbcAdviceScope(callDepth, request, statement, context, context.makeCurrent()); } @Nullable @@ -96,6 +101,10 @@ private static DbRequest createBatchRequest(Statement statement) { } public void end(@Nullable Throwable throwable) { + DbRequest completedRequest = request; + if (scope != null && throwable == null && request != null) { + completedRequest = request.withSqlWarningFromStatement(statement); + } if (callDepth.decrementAndGet() > 0) { return; } @@ -103,6 +112,6 @@ public void end(@Nullable Throwable throwable) { return; } scope.close(); - statementInstrumenter().end(context, request, null, throwable); + statementInstrumenter().end(context, completedRequest, null, throwable); } } diff --git a/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/DbRequest.java b/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/DbRequest.java index bf74e67fd7ce..c8fa77fc7756 100644 --- a/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/DbRequest.java +++ b/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/DbRequest.java @@ -15,6 +15,7 @@ import io.opentelemetry.instrumentation.jdbc.internal.dbinfo.DbInfo; import java.sql.Connection; import java.sql.PreparedStatement; +import java.sql.SQLWarning; import java.sql.Statement; import java.util.Collection; import java.util.Map; @@ -118,7 +119,8 @@ private static DbRequest create( batchSize, operationName, preparedStatementParameters, - parameterizedQuery); + parameterizedQuery, + null); } @Nullable @@ -149,4 +151,26 @@ public static DbRequest createTransaction(DbInfo dbInfo, String operationName) { public abstract Map getPreparedStatementParameters(); public abstract boolean isParameterizedQuery(); + + @Nullable + public abstract SQLWarning getSqlWarning(); + + public DbRequest withSqlWarningFromStatement(Statement statement) { + try { + SQLWarning sqlWarning = statement.getWarnings(); + if (sqlWarning == null) { + return this; + } + return new AutoValue_DbRequest( + getDbInfo(), + getQueryTexts(), + getBatchSize(), + getOperationName(), + getPreparedStatementParameters(), + isParameterizedQuery(), + sqlWarning); + } catch (Throwable ignored) { + return this; + } + } } diff --git a/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcAttributesGetter.java b/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcAttributesGetter.java index 01920f959dfb..2bfe2eb399e0 100644 --- a/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcAttributesGetter.java +++ b/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcAttributesGetter.java @@ -16,6 +16,7 @@ import io.opentelemetry.instrumentation.api.incubator.semconv.db.internal.DbServerTarget; import io.opentelemetry.instrumentation.jdbc.internal.dbinfo.DbInfo; import java.sql.SQLException; +import java.sql.SQLWarning; import java.util.Collection; import java.util.Map; import javax.annotation.Nullable; @@ -68,10 +69,25 @@ public String getErrorType( @Override public String getDbResponseStatusCode( DbRequest request, @Nullable Void response, @Nullable Throwable error) { + if (error == null) { + SQLWarning sqlWarning = request.getSqlWarning(); + while (sqlWarning != null) { + String statusCode = getDbResponseStatusCode(request, sqlWarning); + if (statusCode != null) { + return statusCode; + } + sqlWarning = sqlWarning.getNextWarning(); + } + return null; + } if (!(error instanceof SQLException)) { return null; } - SQLException sqlException = (SQLException) error; + return getDbResponseStatusCode(request, (SQLException) error); + } + + @Nullable + private String getDbResponseStatusCode(DbRequest request, SQLException sqlException) { String dbSystemName = getDbSystemName(request); String sqlState = getAvailableSqlState(sqlException); int errorCode = sqlException.getErrorCode(); diff --git a/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/OpenTelemetryStatement.java b/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/OpenTelemetryStatement.java index 0cfeddcaeebc..c0d45b67b84b 100644 --- a/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/OpenTelemetryStatement.java +++ b/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/OpenTelemetryStatement.java @@ -412,7 +412,7 @@ protected T wrapCall(DbRequest request, ThrowingSupplie this.instrumenter.end(context, request, null, t); throw t; } - this.instrumenter.end(context, request, null, null); + this.instrumenter.end(context, request.withSqlWarningFromStatement(delegate), null, null); return result; } diff --git a/instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/datasource/JdbcTelemetryTest.java b/instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/datasource/JdbcTelemetryTest.java index 44b18dcc8614..6afc83f8af3e 100644 --- a/instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/datasource/JdbcTelemetryTest.java +++ b/instrumentation/jdbc/library/src/test/java/io/opentelemetry/instrumentation/jdbc/datasource/JdbcTelemetryTest.java @@ -175,14 +175,26 @@ void error(int errorCode, String sqlState, String expectedErrorType, String expe equalTo(ERROR_TYPE, expectedErrorType), equalTo(DB_RESPONSE_STATUS_CODE, expectedStatusCode)))); - assertDurationMetric( - testing, - "io.opentelemetry.jdbc", - DB_NAMESPACE, - DB_QUERY_SUMMARY, - DB_SYSTEM_NAME, - ERROR_TYPE, - SERVER_ADDRESS); + if (expectedStatusCode == null) { + assertDurationMetric( + testing, + "io.opentelemetry.jdbc", + DB_NAMESPACE, + DB_QUERY_SUMMARY, + DB_SYSTEM_NAME, + ERROR_TYPE, + SERVER_ADDRESS); + } else { + assertDurationMetric( + testing, + "io.opentelemetry.jdbc", + DB_NAMESPACE, + DB_QUERY_SUMMARY, + DB_SYSTEM_NAME, + DB_RESPONSE_STATUS_CODE, + ERROR_TYPE, + SERVER_ADDRESS); + } testing.waitAndAssertMetrics( "io.opentelemetry.jdbc", metric -> diff --git a/instrumentation/jdbc/testing/src/main/java/io/opentelemetry/instrumentation/jdbc/TestConnection.java b/instrumentation/jdbc/testing/src/main/java/io/opentelemetry/instrumentation/jdbc/TestConnection.java index 9c1c4d15edd6..5b722bf119aa 100644 --- a/instrumentation/jdbc/testing/src/main/java/io/opentelemetry/instrumentation/jdbc/TestConnection.java +++ b/instrumentation/jdbc/testing/src/main/java/io/opentelemetry/instrumentation/jdbc/TestConnection.java @@ -31,6 +31,7 @@ public class TestConnection implements Connection { private final String url; private final Consumer sqlConsumer; + private SQLWarning statementWarning; public TestConnection() { this(null, unused -> {}); @@ -56,6 +57,15 @@ private TestConnection(String url, Consumer sqlConsumer) { this.sqlConsumer = sqlConsumer; } + public void setStatementWarning(SQLWarning statementWarning) { + this.statementWarning = statementWarning; + } + + private T withStatementWarning(T statement) { + statement.setWarning(statementWarning); + return statement; + } + @Override public void abort(Executor executor) throws SQLException {} @@ -95,19 +105,19 @@ public SQLXML createSQLXML() throws SQLException { @Override public Statement createStatement() throws SQLException { - return new TestStatement(this, sqlConsumer); + return withStatementWarning(new TestStatement(this, sqlConsumer)); } @Override public Statement createStatement(int resultSetType, int resultSetConcurrency) throws SQLException { - return new TestStatement(this, sqlConsumer); + return withStatementWarning(new TestStatement(this, sqlConsumer)); } @Override public Statement createStatement( int resultSetType, int resultSetConcurrency, int resultSetHoldability) throws SQLException { - return new TestStatement(this, sqlConsumer); + return withStatementWarning(new TestStatement(this, sqlConsumer)); } @Override @@ -201,14 +211,14 @@ public String nativeSQL(String sql) throws SQLException { @Override public CallableStatement prepareCall(String sql) throws SQLException { sqlConsumer.accept(sql); - return new TestCallableStatement(this); + return withStatementWarning(new TestCallableStatement(this)); } @Override public CallableStatement prepareCall(String sql, int resultSetType, int resultSetConcurrency) throws SQLException { sqlConsumer.accept(sql); - return new TestCallableStatement(this); + return withStatementWarning(new TestCallableStatement(this)); } @Override @@ -216,20 +226,20 @@ public CallableStatement prepareCall( String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability) throws SQLException { sqlConsumer.accept(sql); - return new TestCallableStatement(this); + return withStatementWarning(new TestCallableStatement(this)); } @Override public PreparedStatement prepareStatement(String sql) throws SQLException { sqlConsumer.accept(sql); - return new TestPreparedStatement(this); + return withStatementWarning(new TestPreparedStatement(this)); } @Override public PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency) throws SQLException { sqlConsumer.accept(sql); - return new TestPreparedStatement(this); + return withStatementWarning(new TestPreparedStatement(this)); } @Override @@ -237,25 +247,25 @@ public PreparedStatement prepareStatement( String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability) throws SQLException { sqlConsumer.accept(sql); - return new TestPreparedStatement(this); + return withStatementWarning(new TestPreparedStatement(this)); } @Override public PreparedStatement prepareStatement(String sql, int autoGeneratedKeys) throws SQLException { sqlConsumer.accept(sql); - return new TestPreparedStatement(this); + return withStatementWarning(new TestPreparedStatement(this)); } @Override public PreparedStatement prepareStatement(String sql, int[] columnIndexes) throws SQLException { sqlConsumer.accept(sql); - return new TestPreparedStatement(this); + return withStatementWarning(new TestPreparedStatement(this)); } @Override public PreparedStatement prepareStatement(String sql, String[] columnNames) throws SQLException { sqlConsumer.accept(sql); - return new TestPreparedStatement(this); + return withStatementWarning(new TestPreparedStatement(this)); } @Override diff --git a/instrumentation/jdbc/testing/src/main/java/io/opentelemetry/instrumentation/jdbc/TestStatement.java b/instrumentation/jdbc/testing/src/main/java/io/opentelemetry/instrumentation/jdbc/TestStatement.java index c006283ceda9..bc3bd29826a4 100644 --- a/instrumentation/jdbc/testing/src/main/java/io/opentelemetry/instrumentation/jdbc/TestStatement.java +++ b/instrumentation/jdbc/testing/src/main/java/io/opentelemetry/instrumentation/jdbc/TestStatement.java @@ -15,6 +15,7 @@ class TestStatement implements Statement { private final Connection connection; private final Consumer sqlConsumer; + private SQLWarning warning; TestStatement(Connection connection) { this.connection = connection; @@ -26,6 +27,10 @@ class TestStatement implements Statement { this.sqlConsumer = sqlConsumer; } + void setWarning(SQLWarning warning) { + this.warning = warning; + } + protected boolean hasResultSet() { return true; } @@ -181,7 +186,7 @@ public int getUpdateCount() throws SQLException { @Override public SQLWarning getWarnings() throws SQLException { - return null; + return warning; } @Override diff --git a/instrumentation/jdbc/testing/src/main/java/io/opentelemetry/instrumentation/jdbc/testing/AbstractJdbcInstrumentationTest.java b/instrumentation/jdbc/testing/src/main/java/io/opentelemetry/instrumentation/jdbc/testing/AbstractJdbcInstrumentationTest.java index a3665ee35617..a1a31033304c 100644 --- a/instrumentation/jdbc/testing/src/main/java/io/opentelemetry/instrumentation/jdbc/testing/AbstractJdbcInstrumentationTest.java +++ b/instrumentation/jdbc/testing/src/main/java/io/opentelemetry/instrumentation/jdbc/testing/AbstractJdbcInstrumentationTest.java @@ -54,6 +54,7 @@ import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; +import java.sql.SQLWarning; import java.sql.Statement; import java.util.ArrayList; import java.util.Collections; @@ -506,6 +507,82 @@ void testFailedStatement() throws SQLException { } } + @ParameterizedTest + @ValueSource(strings = {"statement", "prepared", "callable"}) + void testStatementWarningStatusCode(String statementType) throws SQLException { + Connection connectionWithoutWarning = wrap(new TestConnection()); + cleanup.deferCleanup(connectionWithoutWarning); + Statement statementWithoutWarning = createStatement(connectionWithoutWarning, statementType); + cleanup.deferCleanup(statementWithoutWarning); + + SQLWarning warning = new SQLWarning("warning", null, 0); + warning.setNextWarning(new SQLWarning("next warning", "01001", 0)); + TestConnection testConnection = new TestConnection(); + testConnection.setStatementWarning(warning); + Connection connectionWithWarning = wrap(testConnection); + cleanup.deferCleanup(connectionWithWarning); + Statement statementWithWarning = createStatement(connectionWithWarning, statementType); + cleanup.deferCleanup(statementWithWarning); + + testing() + .runWithSpan( + "parent", + () -> { + executeStatement(statementWithoutWarning); + executeStatement(statementWithWarning); + }); + assertThat((Object) statementWithWarning.getWarnings()).isSameAs(warning); + assertThat(statementWithWarning.getWarnings().getNextWarning().getSQLState()) + .isEqualTo("01001"); + + testing() + .waitAndAssertTraces( + trace -> + trace.hasSpansSatisfyingExactly( + span -> span.hasName("parent").hasKind(SpanKind.INTERNAL).hasNoParent(), + span -> + span.hasKind(SpanKind.CLIENT) + .hasStatus(StatusData.unset()) + .hasAttributesSatisfying( + equalTo(DB_RESPONSE_STATUS_CODE, null), equalTo(ERROR_TYPE, null)), + span -> + span.hasKind(SpanKind.CLIENT) + .hasStatus(StatusData.unset()) + .hasAttributesSatisfying( + equalTo(DB_RESPONSE_STATUS_CODE, "01001"), + equalTo(ERROR_TYPE, null)))); + + assertDurationMetric( + testing(), + "io.opentelemetry.jdbc", + DB_SYSTEM_NAME, + DB_NAMESPACE, + DB_QUERY_SUMMARY, + SERVER_ADDRESS); + } + + private static Statement createStatement(Connection connection, String statementType) + throws SQLException { + switch (statementType) { + case "statement": + return connection.createStatement(); + case "prepared": + return connection.prepareStatement("SELECT 1"); + case "callable": + return connection.prepareCall("CALL ABS(3)"); + default: + throw new IllegalArgumentException(statementType); + } + } + + private static void executeStatement(Statement statement) throws SQLException { + if (statement instanceof PreparedStatement) { + ((PreparedStatement) statement).execute(); + } else { + statement.execute("SELECT 1"); + } + } + static Stream preparedStatementStream() throws SQLException { return Stream.of( Arguments.of( diff --git a/instrumentation/opensearch/opensearch-java-3.0/javaagent/build.gradle.kts b/instrumentation/opensearch/opensearch-java-3.0/javaagent/build.gradle.kts index 8fc796e735fe..38b85e0aada6 100644 --- a/instrumentation/opensearch/opensearch-java-3.0/javaagent/build.gradle.kts +++ b/instrumentation/opensearch/opensearch-java-3.0/javaagent/build.gradle.kts @@ -47,6 +47,14 @@ dependencies { } testing.suites { + register("unitTests") { + dependencies { + implementation(project()) + implementation(project(":instrumentation-api-incubator")) + implementation("org.opensearch.client:opensearch-java:3.0.0") + } + } + executions("test") { configureDefault { filter { @@ -63,3 +71,9 @@ testing.suites { } } } + +tasks { + check { + dependsOn(testing.suites) + } +} diff --git a/instrumentation/opensearch/opensearch-java-3.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/opensearch/v3_0/OpenSearchAttributesGetterTest.java b/instrumentation/opensearch/opensearch-java-3.0/javaagent/src/unitTests/java/io/opentelemetry/javaagent/instrumentation/opensearch/v3_0/OpenSearchAttributesGetterTest.java similarity index 100% rename from instrumentation/opensearch/opensearch-java-3.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/opensearch/v3_0/OpenSearchAttributesGetterTest.java rename to instrumentation/opensearch/opensearch-java-3.0/javaagent/src/unitTests/java/io/opentelemetry/javaagent/instrumentation/opensearch/v3_0/OpenSearchAttributesGetterTest.java diff --git a/instrumentation/opensearch/opensearch-rest-common-1.0/javaagent/build.gradle.kts b/instrumentation/opensearch/opensearch-rest-common-1.0/javaagent/build.gradle.kts index 5053d30b7a9f..c8cee4f4a6f4 100644 --- a/instrumentation/opensearch/opensearch-rest-common-1.0/javaagent/build.gradle.kts +++ b/instrumentation/opensearch/opensearch-rest-common-1.0/javaagent/build.gradle.kts @@ -8,3 +8,20 @@ dependencies { annotationProcessor("com.google.auto.value:auto-value") } + +testing { + suites { + register("unitTests") { + dependencies { + implementation(project()) + implementation(project(":instrumentation-api-incubator")) + } + } + } +} + +tasks { + check { + dependsOn(testing.suites) + } +} diff --git a/instrumentation/opensearch/opensearch-rest-common-1.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/v1_0/OpenSearchRestAttributesGetterTest.java b/instrumentation/opensearch/opensearch-rest-common-1.0/javaagent/src/unitTests/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/v1_0/OpenSearchRestAttributesGetterTest.java similarity index 100% rename from instrumentation/opensearch/opensearch-rest-common-1.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/v1_0/OpenSearchRestAttributesGetterTest.java rename to instrumentation/opensearch/opensearch-rest-common-1.0/javaagent/src/unitTests/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/v1_0/OpenSearchRestAttributesGetterTest.java From 5180ec73fd1e3f1366bd18f517c578e791c33c40 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 30 Oct 2026 02:58:36 +0000 Subject: [PATCH 29/33] Handle JDBC warning read failures safely Co-authored-by: trask <218610+trask@users.noreply.github.com> --- .../incubator/semconv/db/DbClientMetrics.java | 2 +- .../jdbc/internal/DbRequest.java | 7 +++- .../instrumentation/jdbc/TestConnection.java | 6 ++++ .../instrumentation/jdbc/TestStatement.java | 8 +++++ .../AbstractJdbcInstrumentationTest.java | 33 ++++++++++++++++--- 5 files changed, 50 insertions(+), 6 deletions(-) diff --git a/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/DbClientMetrics.java b/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/DbClientMetrics.java index 57e609c12883..2e26c91b97f0 100644 --- a/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/DbClientMetrics.java +++ b/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/DbClientMetrics.java @@ -81,7 +81,7 @@ public void onEnd(Context context, Attributes endAttributes, long endNanos) { } Attributes attributes = state.startAttributes().toBuilder().putAll(endAttributes).build(); - if (attributes.get(ERROR_TYPE) == null) { + if (attributes.get(ERROR_TYPE) == null && attributes.get(DB_RESPONSE_STATUS_CODE) != null) { attributes = attributes.toBuilder().remove(DB_RESPONSE_STATUS_CODE).build(); } diff --git a/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/DbRequest.java b/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/DbRequest.java index c8fa77fc7756..b61222491a8a 100644 --- a/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/DbRequest.java +++ b/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/DbRequest.java @@ -10,6 +10,7 @@ import static java.util.Collections.emptyList; import static java.util.Collections.emptyMap; import static java.util.Collections.singletonList; +import static java.util.logging.Level.FINE; import com.google.auto.value.AutoValue; import io.opentelemetry.instrumentation.jdbc.internal.dbinfo.DbInfo; @@ -19,6 +20,7 @@ import java.sql.Statement; import java.util.Collection; import java.util.Map; +import java.util.logging.Logger; import javax.annotation.Nullable; /** @@ -28,6 +30,8 @@ @AutoValue public abstract class DbRequest { + private static final Logger logger = Logger.getLogger(DbRequest.class.getName()); + @Nullable public static DbRequest create( PreparedStatement statement, Map preparedStatementParameters) { @@ -169,7 +173,8 @@ public DbRequest withSqlWarningFromStatement(Statement statement) { getPreparedStatementParameters(), isParameterizedQuery(), sqlWarning); - } catch (Throwable ignored) { + } catch (Throwable t) { + logger.log(FINE, "Could not get warnings from a statement", t); return this; } } diff --git a/instrumentation/jdbc/testing/src/main/java/io/opentelemetry/instrumentation/jdbc/TestConnection.java b/instrumentation/jdbc/testing/src/main/java/io/opentelemetry/instrumentation/jdbc/TestConnection.java index 5b722bf119aa..278fc64d2dad 100644 --- a/instrumentation/jdbc/testing/src/main/java/io/opentelemetry/instrumentation/jdbc/TestConnection.java +++ b/instrumentation/jdbc/testing/src/main/java/io/opentelemetry/instrumentation/jdbc/TestConnection.java @@ -32,6 +32,7 @@ public class TestConnection implements Connection { private final String url; private final Consumer sqlConsumer; private SQLWarning statementWarning; + private boolean throwOnGetWarnings; public TestConnection() { this(null, unused -> {}); @@ -61,8 +62,13 @@ public void setStatementWarning(SQLWarning statementWarning) { this.statementWarning = statementWarning; } + public void setThrowOnGetWarnings(boolean throwOnGetWarnings) { + this.throwOnGetWarnings = throwOnGetWarnings; + } + private T withStatementWarning(T statement) { statement.setWarning(statementWarning); + statement.setThrowOnGetWarnings(throwOnGetWarnings); return statement; } diff --git a/instrumentation/jdbc/testing/src/main/java/io/opentelemetry/instrumentation/jdbc/TestStatement.java b/instrumentation/jdbc/testing/src/main/java/io/opentelemetry/instrumentation/jdbc/TestStatement.java index bc3bd29826a4..b161255c9d92 100644 --- a/instrumentation/jdbc/testing/src/main/java/io/opentelemetry/instrumentation/jdbc/TestStatement.java +++ b/instrumentation/jdbc/testing/src/main/java/io/opentelemetry/instrumentation/jdbc/TestStatement.java @@ -16,6 +16,7 @@ class TestStatement implements Statement { private final Connection connection; private final Consumer sqlConsumer; private SQLWarning warning; + private boolean throwOnGetWarnings; TestStatement(Connection connection) { this.connection = connection; @@ -31,6 +32,10 @@ void setWarning(SQLWarning warning) { this.warning = warning; } + void setThrowOnGetWarnings(boolean throwOnGetWarnings) { + this.throwOnGetWarnings = throwOnGetWarnings; + } + protected boolean hasResultSet() { return true; } @@ -186,6 +191,9 @@ public int getUpdateCount() throws SQLException { @Override public SQLWarning getWarnings() throws SQLException { + if (throwOnGetWarnings) { + throw new SQLException("getWarnings failed"); + } return warning; } diff --git a/instrumentation/jdbc/testing/src/main/java/io/opentelemetry/instrumentation/jdbc/testing/AbstractJdbcInstrumentationTest.java b/instrumentation/jdbc/testing/src/main/java/io/opentelemetry/instrumentation/jdbc/testing/AbstractJdbcInstrumentationTest.java index a1a31033304c..f5a51924a55a 100644 --- a/instrumentation/jdbc/testing/src/main/java/io/opentelemetry/instrumentation/jdbc/testing/AbstractJdbcInstrumentationTest.java +++ b/instrumentation/jdbc/testing/src/main/java/io/opentelemetry/instrumentation/jdbc/testing/AbstractJdbcInstrumentationTest.java @@ -561,6 +561,32 @@ void testStatementWarningStatusCode(String statementType) throws SQLException { SERVER_ADDRESS); } + @ParameterizedTest + @ValueSource(strings = {"statement", "prepared", "callable"}) + void testStatementWarningReadFailure(String statementType) throws SQLException { + TestConnection testConnection = new TestConnection(); + testConnection.setThrowOnGetWarnings(true); + Connection connection = wrap(testConnection); + cleanup.deferCleanup(connection); + Statement statement = createStatement(connection, statementType); + cleanup.deferCleanup(statement); + + boolean result = testing().runWithSpan("parent", () -> executeStatement(statement)); + + assertThat(result).isTrue(); + testing() + .waitAndAssertTraces( + trace -> + trace.hasSpansSatisfyingExactly( + span -> span.hasName("parent").hasKind(SpanKind.INTERNAL).hasNoParent(), + span -> + span.hasKind(SpanKind.CLIENT) + .hasStatus(StatusData.unset()) + .hasAttributesSatisfying( + equalTo(DB_RESPONSE_STATUS_CODE, null), + equalTo(ERROR_TYPE, null)))); + } + private static Statement createStatement(Connection connection, String statementType) throws SQLException { switch (statementType) { @@ -575,12 +601,11 @@ private static Statement createStatement(Connection connection, String statement } } - private static void executeStatement(Statement statement) throws SQLException { + private static boolean executeStatement(Statement statement) throws SQLException { if (statement instanceof PreparedStatement) { - ((PreparedStatement) statement).execute(); - } else { - statement.execute("SELECT 1"); + return ((PreparedStatement) statement).execute(); } + return statement.execute("SELECT 1"); } static Stream preparedStatementStream() throws SQLException { From ca15158211c24e66144dafd90bd25a9aa8ea3317 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 30 Oct 2026 04:17:03 +0000 Subject: [PATCH 30/33] Keep extracted response codes on database metrics Co-authored-by: trask <218610+trask@users.noreply.github.com> --- .../incubator/semconv/db/DbClientMetrics.java | 6 -- .../semconv/db/DbClientMetricsTest.java | 3 +- .../client/v7_16/ElasticsearchClientTest.java | 5 +- .../rest/v5_0/ElasticsearchRest5Test.java | 5 +- .../rest/v6_4/ElasticsearchRest6Test.java | 5 +- .../rest/v7_0/ElasticsearchRest7Test.java | 5 +- .../AbstractJdbcInstrumentationTest.java | 56 ++++++++++++++----- .../common/AbstractOpenSearchRestTest.java | 5 +- .../junit/db/DbClientMetricsTestUtil.java | 33 +++++++++++ 9 files changed, 92 insertions(+), 31 deletions(-) diff --git a/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/DbClientMetrics.java b/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/DbClientMetrics.java index 2e26c91b97f0..46470b6ea1d2 100644 --- a/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/DbClientMetrics.java +++ b/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/DbClientMetrics.java @@ -5,8 +5,6 @@ package io.opentelemetry.instrumentation.api.incubator.semconv.db; -import static io.opentelemetry.semconv.DbAttributes.DB_RESPONSE_STATUS_CODE; -import static io.opentelemetry.semconv.ErrorAttributes.ERROR_TYPE; import static java.util.concurrent.TimeUnit.SECONDS; import static java.util.logging.Level.FINE; @@ -81,10 +79,6 @@ public void onEnd(Context context, Attributes endAttributes, long endNanos) { } Attributes attributes = state.startAttributes().toBuilder().putAll(endAttributes).build(); - if (attributes.get(ERROR_TYPE) == null && attributes.get(DB_RESPONSE_STATUS_CODE) != null) { - attributes = attributes.toBuilder().remove(DB_RESPONSE_STATUS_CODE).build(); - } - duration.record((endNanos - state.startTimeNanos()) / NANOS_PER_S, attributes, context); } diff --git a/instrumentation-api-incubator/src/test/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/DbClientMetricsTest.java b/instrumentation-api-incubator/src/test/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/DbClientMetricsTest.java index 30afa321b6ed..39ec78891d3d 100644 --- a/instrumentation-api-incubator/src/test/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/DbClientMetricsTest.java +++ b/instrumentation-api-incubator/src/test/java/io/opentelemetry/instrumentation/api/incubator/semconv/db/DbClientMetricsTest.java @@ -118,7 +118,7 @@ void collectsMetrics() { } @Test - void responseStatusCodeIsRecordedOnlyForFailedOperationsWithAvailableCode() { + void responseStatusCodeIsRecordedWhenAvailable() { InMemoryMetricReader metricReader = InMemoryMetricReader.create(); SdkMeterProvider meterProvider = SdkMeterProvider.builder().registerMetricReader(metricReader).build(); @@ -165,6 +165,7 @@ void responseStatusCodeIsRecordedOnlyForFailedOperationsWithAvailableCode() { Attributes.builder() .put(DB_SYSTEM_NAME, "myDb") .put(DB_OPERATION_NAME, "successfulWithCode") + .put(DB_RESPONSE_STATUS_CODE, "200") .build() .asMap()), point -> diff --git a/instrumentation/elasticsearch/elasticsearch-api-client-7.16/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/api/client/v7_16/ElasticsearchClientTest.java b/instrumentation/elasticsearch/elasticsearch-api-client-7.16/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/api/client/v7_16/ElasticsearchClientTest.java index dc40e8d40977..4bbc391b88d6 100644 --- a/instrumentation/elasticsearch/elasticsearch-api-client-7.16/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/api/client/v7_16/ElasticsearchClientTest.java +++ b/instrumentation/elasticsearch/elasticsearch-api-client-7.16/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/api/client/v7_16/ElasticsearchClientTest.java @@ -7,7 +7,7 @@ import static io.opentelemetry.api.common.AttributeKey.stringKey; import static io.opentelemetry.instrumentation.testing.GlobalTraceUtil.runWithSpan; -import static io.opentelemetry.instrumentation.testing.junit.db.DbClientMetricsTestUtil.assertDurationMetric; +import static io.opentelemetry.instrumentation.testing.junit.db.DbClientMetricsTestUtil.assertDurationMetricWithResponseStatus; import static io.opentelemetry.instrumentation.testing.util.TestServerServiceMapping.expectedMappedServiceName; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; @@ -174,9 +174,10 @@ void elasticsearchIndex() throws IOException { httpHost.toURI() + "/test-index/_doc/test-id?timeout=10s"), equalTo(HTTP_RESPONSE_STATUS_CODE, 201L)))); - assertDurationMetric( + assertDurationMetricWithResponseStatus( testing, "io.opentelemetry.elasticsearch-rest-7.0", + "201", DB_OPERATION_NAME, DB_SYSTEM_NAME, SERVER_ADDRESS, diff --git a/instrumentation/elasticsearch/elasticsearch-rest-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/v5_0/ElasticsearchRest5Test.java b/instrumentation/elasticsearch/elasticsearch-rest-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/v5_0/ElasticsearchRest5Test.java index 02dc991b6ed1..181997917cc9 100644 --- a/instrumentation/elasticsearch/elasticsearch-rest-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/v5_0/ElasticsearchRest5Test.java +++ b/instrumentation/elasticsearch/elasticsearch-rest-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/v5_0/ElasticsearchRest5Test.java @@ -6,7 +6,7 @@ package io.opentelemetry.javaagent.instrumentation.elasticsearch.rest.v5_0; import static io.opentelemetry.api.common.AttributeKey.stringKey; -import static io.opentelemetry.instrumentation.testing.junit.db.DbClientMetricsTestUtil.assertDurationMetric; +import static io.opentelemetry.instrumentation.testing.junit.db.DbClientMetricsTestUtil.assertDurationMetricWithResponseStatus; import static io.opentelemetry.instrumentation.testing.util.TestLatestDeps.testLatestDeps; import static io.opentelemetry.instrumentation.testing.util.TestServerServiceMapping.expectedMappedServiceName; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat; @@ -222,9 +222,10 @@ void elasticsearchStatus() throws IOException { equalTo(URL_FULL, httpHost.toURI() + "/_cluster/health"), equalTo(HTTP_RESPONSE_STATUS_CODE, 200)))); - assertDurationMetric( + assertDurationMetricWithResponseStatus( testing, "io.opentelemetry.elasticsearch-rest-5.0", + "200", DB_SYSTEM_NAME, SERVER_ADDRESS, SERVER_PORT); diff --git a/instrumentation/elasticsearch/elasticsearch-rest-6.4/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/v6_4/ElasticsearchRest6Test.java b/instrumentation/elasticsearch/elasticsearch-rest-6.4/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/v6_4/ElasticsearchRest6Test.java index ab423c403920..cec9a013fe39 100644 --- a/instrumentation/elasticsearch/elasticsearch-rest-6.4/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/v6_4/ElasticsearchRest6Test.java +++ b/instrumentation/elasticsearch/elasticsearch-rest-6.4/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/v6_4/ElasticsearchRest6Test.java @@ -6,7 +6,7 @@ package io.opentelemetry.javaagent.instrumentation.elasticsearch.rest.v6_4; import static io.opentelemetry.api.common.AttributeKey.stringKey; -import static io.opentelemetry.instrumentation.testing.junit.db.DbClientMetricsTestUtil.assertDurationMetric; +import static io.opentelemetry.instrumentation.testing.junit.db.DbClientMetricsTestUtil.assertDurationMetricWithResponseStatus; import static io.opentelemetry.instrumentation.testing.util.TestServerServiceMapping.expectedMappedServiceName; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; @@ -124,9 +124,10 @@ void elasticsearchStatus() throws IOException { equalTo(URL_FULL, httpHost.toURI() + "/_cluster/health"), equalTo(HTTP_RESPONSE_STATUS_CODE, 200L)))); - assertDurationMetric( + assertDurationMetricWithResponseStatus( testing, "io.opentelemetry.elasticsearch-rest-6.4", + "200", DB_SYSTEM_NAME, SERVER_ADDRESS, SERVER_PORT); diff --git a/instrumentation/elasticsearch/elasticsearch-rest-7.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/v7_0/ElasticsearchRest7Test.java b/instrumentation/elasticsearch/elasticsearch-rest-7.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/v7_0/ElasticsearchRest7Test.java index 96137dd011ec..0ac11062befc 100644 --- a/instrumentation/elasticsearch/elasticsearch-rest-7.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/v7_0/ElasticsearchRest7Test.java +++ b/instrumentation/elasticsearch/elasticsearch-rest-7.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/v7_0/ElasticsearchRest7Test.java @@ -7,7 +7,7 @@ import static io.opentelemetry.api.common.AttributeKey.stringKey; import static io.opentelemetry.instrumentation.testing.GlobalTraceUtil.runWithSpan; -import static io.opentelemetry.instrumentation.testing.junit.db.DbClientMetricsTestUtil.assertDurationMetric; +import static io.opentelemetry.instrumentation.testing.junit.db.DbClientMetricsTestUtil.assertDurationMetricWithResponseStatus; import static io.opentelemetry.instrumentation.testing.util.TestServerServiceMapping.expectedMappedServiceName; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; @@ -116,9 +116,10 @@ void elasticsearchStatus() throws IOException { equalTo(URL_FULL, httpHost.toURI() + "/_cluster/health"), equalTo(HTTP_RESPONSE_STATUS_CODE, 200L)))); - assertDurationMetric( + assertDurationMetricWithResponseStatus( testing, "io.opentelemetry.elasticsearch-rest-7.0", + "200", DB_SYSTEM_NAME, SERVER_ADDRESS, SERVER_PORT); diff --git a/instrumentation/jdbc/testing/src/main/java/io/opentelemetry/instrumentation/jdbc/testing/AbstractJdbcInstrumentationTest.java b/instrumentation/jdbc/testing/src/main/java/io/opentelemetry/instrumentation/jdbc/testing/AbstractJdbcInstrumentationTest.java index f5a51924a55a..c30844823428 100644 --- a/instrumentation/jdbc/testing/src/main/java/io/opentelemetry/instrumentation/jdbc/testing/AbstractJdbcInstrumentationTest.java +++ b/instrumentation/jdbc/testing/src/main/java/io/opentelemetry/instrumentation/jdbc/testing/AbstractJdbcInstrumentationTest.java @@ -524,13 +524,15 @@ void testStatementWarningStatusCode(String statementType) throws SQLException { Statement statementWithWarning = createStatement(connectionWithWarning, statementType); cleanup.deferCleanup(statementWithWarning); - testing() - .runWithSpan( - "parent", - () -> { - executeStatement(statementWithoutWarning); - executeStatement(statementWithWarning); - }); + boolean result = + testing() + .runWithSpan( + "parent", + () -> { + assertThat(executeStatement(statementWithoutWarning)).isTrue(); + return executeStatement(statementWithWarning); + }); + assertThat(result).isTrue(); assertThat((Object) statementWithWarning.getWarnings()).isSameAs(warning); assertThat(statementWithWarning.getWarnings().getNextWarning().getSQLState()) .isEqualTo("01001"); @@ -552,13 +554,39 @@ void testStatementWarningStatusCode(String statementType) throws SQLException { equalTo(DB_RESPONSE_STATUS_CODE, "01001"), equalTo(ERROR_TYPE, null)))); - assertDurationMetric( - testing(), - "io.opentelemetry.jdbc", - DB_SYSTEM_NAME, - DB_NAMESPACE, - DB_QUERY_SUMMARY, - SERVER_ADDRESS); + testing() + .waitAndAssertMetrics( + "io.opentelemetry.jdbc", + metric -> + metric + .hasName("db.client.operation.duration") + .hasUnit("s") + .hasDescription("Duration of database client operations.") + .satisfies( + data -> { + assertThat(data.getHistogramData().getPoints()) + .hasSize(2) + .anySatisfy( + point -> + assertThat(point.getAttributes().asMap()) + .containsOnlyKeys( + DB_SYSTEM_NAME, + DB_NAMESPACE, + DB_QUERY_SUMMARY, + SERVER_ADDRESS)); + assertThat(data.getHistogramData().getPoints()) + .anySatisfy( + point -> + assertThat(point.getAttributes().asMap()) + .containsOnlyKeys( + DB_SYSTEM_NAME, + DB_NAMESPACE, + DB_QUERY_SUMMARY, + SERVER_ADDRESS, + DB_RESPONSE_STATUS_CODE) + .containsEntry(DB_RESPONSE_STATUS_CODE, "01001") + .doesNotContainKey(ERROR_TYPE)); + })); } @ParameterizedTest diff --git a/instrumentation/opensearch/opensearch-rest-common-1.0/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/AbstractOpenSearchRestTest.java b/instrumentation/opensearch/opensearch-rest-common-1.0/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/AbstractOpenSearchRestTest.java index b1a000ab642d..78fc6ea91158 100644 --- a/instrumentation/opensearch/opensearch-rest-common-1.0/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/AbstractOpenSearchRestTest.java +++ b/instrumentation/opensearch/opensearch-rest-common-1.0/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/common/AbstractOpenSearchRestTest.java @@ -6,7 +6,7 @@ package io.opentelemetry.javaagent.instrumentation.opensearch.rest.common; import static io.opentelemetry.api.common.AttributeKey.stringKey; -import static io.opentelemetry.instrumentation.testing.junit.db.DbClientMetricsTestUtil.assertDurationMetric; +import static io.opentelemetry.instrumentation.testing.junit.db.DbClientMetricsTestUtil.assertDurationMetricWithResponseStatus; import static io.opentelemetry.instrumentation.testing.util.TestServerServiceMapping.expectedMappedServiceName; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; @@ -295,9 +295,10 @@ void shouldRecordMetrics() throws IOException { getTesting().waitForTraces(1); - assertDurationMetric( + assertDurationMetricWithResponseStatus( getTesting(), getInstrumentationName(), + "200", DB_OPERATION_NAME, DB_SYSTEM_NAME, SERVER_ADDRESS, diff --git a/testing-common/src/main/java/io/opentelemetry/instrumentation/testing/junit/db/DbClientMetricsTestUtil.java b/testing-common/src/main/java/io/opentelemetry/instrumentation/testing/junit/db/DbClientMetricsTestUtil.java index f02dd7fec5eb..c86697b39767 100644 --- a/testing-common/src/main/java/io/opentelemetry/instrumentation/testing/junit/db/DbClientMetricsTestUtil.java +++ b/testing-common/src/main/java/io/opentelemetry/instrumentation/testing/junit/db/DbClientMetricsTestUtil.java @@ -6,10 +6,13 @@ package io.opentelemetry.instrumentation.testing.junit.db; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat; +import static io.opentelemetry.semconv.DbAttributes.DB_RESPONSE_STATUS_CODE; import static io.opentelemetry.semconv.DbAttributes.DB_SYSTEM_NAME; +import static io.opentelemetry.semconv.ErrorAttributes.ERROR_TYPE; import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; +import java.util.Arrays; public class DbClientMetricsTestUtil { @@ -38,4 +41,34 @@ public static void assertDurationMetric( assertThat(attributes.asMap()) .containsOnlyKeys(expectedKeys))))); } + + public static void assertDurationMetricWithResponseStatus( + InstrumentationExtension testing, + String instrumentationName, + String expectedResponseStatusCode, + AttributeKey... expectedKeys) { + // db.system.name is required - see + // https://opentelemetry.io/docs/specs/semconv/database/database-metrics/#metric-dbclientoperationduration + assertThat(expectedKeys).extracting(AttributeKey::getKey).contains(DB_SYSTEM_NAME.getKey()); + AttributeKey[] expectedKeysWithStatus = Arrays.copyOf(expectedKeys, expectedKeys.length + 1); + expectedKeysWithStatus[expectedKeys.length] = DB_RESPONSE_STATUS_CODE; + testing.waitAndAssertMetrics( + instrumentationName, + metrics -> + metrics + .hasName("db.client.operation.duration") + .hasUnit("s") + .hasDescription("Duration of database client operations.") + .hasHistogramSatisfying( + histogram -> + histogram.hasPointsSatisfying( + point -> + point.hasAttributesSatisfying( + attributes -> + assertThat(attributes.asMap()) + .containsOnlyKeys(expectedKeysWithStatus) + .containsEntry( + DB_RESPONSE_STATUS_CODE, expectedResponseStatusCode) + .doesNotContainKey(ERROR_TYPE))))); + } } From 46a2ffd2b747ddf89f400b78fe38ff6de70756f9 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 30 Oct 2026 05:02:58 +0000 Subject: [PATCH 31/33] Add real MySQL JDBC warning lifecycle tests Co-authored-by: trask <218610+trask@users.noreply.github.com> --- .../jdbc/test/MySqlReplicationTest.java | 121 ++++++++++++++++++ 1 file changed, 121 insertions(+) diff --git a/instrumentation/jdbc/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jdbc/test/MySqlReplicationTest.java b/instrumentation/jdbc/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jdbc/test/MySqlReplicationTest.java index 1f3da2ce03d5..e33e730c3ebc 100644 --- a/instrumentation/jdbc/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jdbc/test/MySqlReplicationTest.java +++ b/instrumentation/jdbc/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jdbc/test/MySqlReplicationTest.java @@ -9,21 +9,26 @@ import static io.opentelemetry.semconv.DbAttributes.DB_NAMESPACE; import static io.opentelemetry.semconv.DbAttributes.DB_QUERY_SUMMARY; import static io.opentelemetry.semconv.DbAttributes.DB_QUERY_TEXT; +import static io.opentelemetry.semconv.DbAttributes.DB_RESPONSE_STATUS_CODE; import static io.opentelemetry.semconv.DbAttributes.DB_SYSTEM_NAME; +import static io.opentelemetry.semconv.ErrorAttributes.ERROR_TYPE; import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; import static org.assertj.core.api.Assertions.assertThat; import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; +import io.opentelemetry.sdk.trace.data.StatusData; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; +import java.sql.SQLWarning; import java.sql.Statement; import java.util.UUID; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.CsvSource; @@ -83,6 +88,122 @@ void configuredTargetSurvivesRouting(boolean prepared, boolean serverPrepared) t } } + @Test + void streamingResultSetRemainsConsumable() throws Exception { + String sql = "SELECT 1 UNION ALL SELECT 2"; + try (Connection connection = connect(source, ""); + Statement statement = connection.createStatement()) { + statement.setFetchSize(Integer.MIN_VALUE); + try (ResultSet result = statement.executeQuery(sql)) { + assertThat(result.next()).isTrue(); + assertThat(result.getInt(1)).isEqualTo(1); + assertThat(result.next()).isTrue(); + assertThat(result.getInt(1)).isEqualTo(2); + assertThat(result.next()).isFalse(); + } + } + + assertSuccessfulSpan(); + } + + @Test + void multipleResultsAndUpdateCountsRemainConsumable() throws Exception { + String sql = + "SELECT 1; UPDATE jdbc_warning_test SET value = value + 1; " + + "SELECT value FROM jdbc_warning_test"; + try (Connection connection = connect(source, "&allowMultiQueries=true"); + Statement statement = connection.createStatement()) { + createTable(statement); + + assertThat(statement.execute(sql)).isTrue(); + + try (ResultSet result = statement.getResultSet()) { + assertThat(result.next()).isTrue(); + assertThat(result.getInt(1)).isEqualTo(1); + assertThat(result.next()).isFalse(); + } + assertThat(statement.getMoreResults()).isFalse(); + assertThat(statement.getUpdateCount()).isEqualTo(1); + assertThat(statement.getMoreResults()).isTrue(); + try (ResultSet result = statement.getResultSet()) { + assertThat(result.next()).isTrue(); + assertThat(result.getInt(1)).isEqualTo(2); + assertThat(result.next()).isFalse(); + } + assertThat(statement.getMoreResults()).isFalse(); + assertThat(statement.getUpdateCount()).isEqualTo(-1); + } + + assertSuccessfulSpan(); + } + + @Test + void warningIsCapturedWithoutChangingApplicationWarningChain() throws Exception { + try (Connection connection = connect(source, ""); + Statement statement = connection.createStatement()) { + createTable(statement); + + String sql = "INSERT IGNORE INTO jdbc_warning_test VALUES (1), (1)"; + assertThat(statement.executeUpdate(sql)).isZero(); + + SQLWarning warning = statement.getWarnings(); + assertWarning(warning); + assertWarning(warning.getNextWarning()); + assertWarningSpan(); + } + } + + private static Connection connect(GenericContainer mysql, String options) throws Exception { + String url = + "jdbc:mysql://" + + mysql.getHost() + + ":" + + mysql.getMappedPort(3306) + + "/shop?sslMode=DISABLED&allowPublicKeyRetrieval=true&openTelemetry=DISABLED" + + options; + return DriverManager.getConnection(url, "root", PASSWORD); + } + + private static void createTable(Statement statement) throws Exception { + statement.execute("CREATE TEMPORARY TABLE jdbc_warning_test (value INT PRIMARY KEY)"); + testing.waitAndAssertTraces( + trace -> trace.hasSpansSatisfyingExactly(span -> span.hasName("CREATE TEMPORARY TABLE"))); + testing.clearData(); + + statement.executeUpdate("INSERT INTO jdbc_warning_test VALUES (1)"); + testing.waitAndAssertTraces( + trace -> trace.hasSpansSatisfyingExactly(span -> span.hasName("INSERT jdbc_warning_test"))); + testing.clearData(); + } + + private static void assertWarning(SQLWarning warning) { + assertThat((Throwable) warning).isNotNull(); + assertThat(warning.getErrorCode()).isEqualTo(1062); + } + + private static void assertWarningSpan() { + testing.waitAndAssertTraces( + trace -> + trace.hasSpansSatisfyingExactly( + span -> + span.hasKind(SpanKind.CLIENT) + .hasNoParent() + .hasAttributesSatisfying( + equalTo(DB_RESPONSE_STATUS_CODE, "1062"), equalTo(ERROR_TYPE, null)) + .hasStatus(StatusData.unset()))); + } + + private static void assertSuccessfulSpan() { + testing.waitAndAssertTraces( + trace -> + trace.hasSpansSatisfyingExactly( + span -> + span.hasKind(SpanKind.CLIENT) + .hasAttributesSatisfying( + equalTo(DB_RESPONSE_STATUS_CODE, null), equalTo(ERROR_TYPE, null)) + .hasStatus(StatusData.unset()))); + } + private static String query( Connection connection, boolean readOnly, boolean prepared, String target) throws Exception { connection.setReadOnly(readOnly); From d4aebda9f79e9a574f8ec4a764f2d99b53391caf Mon Sep 17 00:00:00 2001 From: Trask Stalnaker Date: Tue, 3 Nov 2026 16:19:23 -0800 Subject: [PATCH 32/33] Fix database response-status metric assertions Include the emitted response status in ClickHouse, MongoDB, Redis, and DynamoDB duration metric expectations without changing production telemetry. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- .../awssdk/v2_2/internal/DynamoDbErrorsTest.java | 7 ++++++- .../clickhouse/clientv1/v0_5/ClickHouseClientV1Test.java | 6 +++++- .../mongo/testing/AbstractMongoClientTest.java | 1 + .../vertx/redisclient/v4_0/VertxRedisClientErrorTest.java | 1 + 4 files changed, 13 insertions(+), 2 deletions(-) diff --git a/instrumentation/aws-sdk/aws-sdk-2.2/library/src/test/java/io/opentelemetry/instrumentation/awssdk/v2_2/internal/DynamoDbErrorsTest.java b/instrumentation/aws-sdk/aws-sdk-2.2/library/src/test/java/io/opentelemetry/instrumentation/awssdk/v2_2/internal/DynamoDbErrorsTest.java index d39e864d5fe0..8fb0f6313196 100644 --- a/instrumentation/aws-sdk/aws-sdk-2.2/library/src/test/java/io/opentelemetry/instrumentation/awssdk/v2_2/internal/DynamoDbErrorsTest.java +++ b/instrumentation/aws-sdk/aws-sdk-2.2/library/src/test/java/io/opentelemetry/instrumentation/awssdk/v2_2/internal/DynamoDbErrorsTest.java @@ -154,7 +154,11 @@ void sdkProtocolOutcome(boolean missingItem) { missingItem ? new AttributeKey[] {DB_SYSTEM_NAME, DB_COLLECTION_NAME, DB_OPERATION_NAME} : new AttributeKey[] { - DB_SYSTEM_NAME, DB_COLLECTION_NAME, DB_OPERATION_NAME, ERROR_TYPE + DB_SYSTEM_NAME, + DB_COLLECTION_NAME, + DB_OPERATION_NAME, + DB_RESPONSE_STATUS_CODE, + ERROR_TYPE }); testing.waitAndAssertMetrics( "io.opentelemetry.aws-sdk-2.2", @@ -175,6 +179,7 @@ void sdkProtocolOutcome(boolean missingItem) { .put(DB_SYSTEM_NAME, "aws.dynamodb") .put(DB_COLLECTION_NAME, "items") .put(DB_OPERATION_NAME, "GetItem") + .put(DB_RESPONSE_STATUS_CODE, errorCode) .put(ERROR_TYPE, errorCode) .build() .asMap()); diff --git a/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv1/v0_5/ClickHouseClientV1Test.java b/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv1/v0_5/ClickHouseClientV1Test.java index 23117337af9a..60c7f9102cfe 100644 --- a/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv1/v0_5/ClickHouseClientV1Test.java +++ b/instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv1/v0_5/ClickHouseClientV1Test.java @@ -418,6 +418,7 @@ void testExecuteAndWaitThrowsException() { DB_SYSTEM_NAME, DB_QUERY_SUMMARY, DB_NAMESPACE, + DB_RESPONSE_STATUS_CODE, ERROR_TYPE, NETWORK_PEER_ADDRESS, NETWORK_PEER_PORT, @@ -431,7 +432,10 @@ void testExecuteAndWaitThrowsException() { .hasHistogramSatisfying( histogram -> histogram.hasPointsSatisfying( - point -> point.hasAttribute(ERROR_TYPE, "60")))); + point -> + point + .hasAttribute(DB_RESPONSE_STATUS_CODE, "60") + .hasAttribute(ERROR_TYPE, "60")))); } @Test 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 ce77594aa049..0c057060d624 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 @@ -201,6 +201,7 @@ private void assertWriteResult(String collectionName, String operation, String e expectedMetricKeys.add(NETWORK_PEER_PORT); } if (errorCode != null) { + expectedMetricKeys.add(DB_RESPONSE_STATUS_CODE); expectedMetricKeys.add(ERROR_TYPE); } assertDurationMetric( diff --git a/instrumentation/vertx/vertx-redis-client/vertx-redis-client-4.0/javaagent/src/testShared/java/io/opentelemetry/javaagent/instrumentation/vertx/redisclient/v4_0/VertxRedisClientErrorTest.java b/instrumentation/vertx/vertx-redis-client/vertx-redis-client-4.0/javaagent/src/testShared/java/io/opentelemetry/javaagent/instrumentation/vertx/redisclient/v4_0/VertxRedisClientErrorTest.java index cba7a17dfc9c..b1b8fa4b3f6e 100644 --- a/instrumentation/vertx/vertx-redis-client/vertx-redis-client-4.0/javaagent/src/testShared/java/io/opentelemetry/javaagent/instrumentation/vertx/redisclient/v4_0/VertxRedisClientErrorTest.java +++ b/instrumentation/vertx/vertx-redis-client/vertx-redis-client-4.0/javaagent/src/testShared/java/io/opentelemetry/javaagent/instrumentation/vertx/redisclient/v4_0/VertxRedisClientErrorTest.java @@ -456,6 +456,7 @@ private void assertTelemetry(String errorType, int requestCount, String response equalTo(SERVER_PORT, server.port), equalTo(NETWORK_PEER_ADDRESS, HOST), equalTo(NETWORK_PEER_PORT, server.port), + equalTo(DB_RESPONSE_STATUS_CODE, responseStatusCode), equalTo(ERROR_TYPE, errorType))))); assertThat(server.failure.get()).isNull(); } From 3c7a4306ad444c6e3c008842ba4f8acba2e44d43 Mon Sep 17 00:00:00 2001 From: Trask Stalnaker Date: Wed, 4 Nov 2026 08:52:19 -0800 Subject: [PATCH 33/33] Fix ClickHouse response status metric assertions Expect the extracted response status key on failed ClickHouse v2 duration metrics and verify its value alongside error.type. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- .../clickhouse/clientv2/v0_8/ClickHouseClientV2Test.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/instrumentation/clickhouse/clickhouse-client-v2-0.8/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv2/v0_8/ClickHouseClientV2Test.java b/instrumentation/clickhouse/clickhouse-client-v2-0.8/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv2/v0_8/ClickHouseClientV2Test.java index 03ea39a1bbd4..69758e669054 100644 --- a/instrumentation/clickhouse/clickhouse-client-v2-0.8/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv2/v0_8/ClickHouseClientV2Test.java +++ b/instrumentation/clickhouse/clickhouse-client-v2-0.8/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/clickhouse/clientv2/v0_8/ClickHouseClientV2Test.java @@ -339,6 +339,7 @@ void testQueryThrowsServerException() { DB_SYSTEM_NAME, DB_QUERY_SUMMARY, DB_NAMESPACE, + DB_RESPONSE_STATUS_CODE, ERROR_TYPE, NETWORK_PEER_ADDRESS, NETWORK_PEER_PORT, @@ -352,7 +353,10 @@ void testQueryThrowsServerException() { .hasHistogramSatisfying( histogram -> histogram.hasPointsSatisfying( - point -> point.hasAttribute(ERROR_TYPE, "60")))); + point -> + point + .hasAttribute(DB_RESPONSE_STATUS_CODE, "60") + .hasAttribute(ERROR_TYPE, "60")))); } @Test