From a6826186cf177852b3276887cb3aa27955d941d0 Mon Sep 17 00:00:00 2001 From: Mateusz Rzeszutek Date: Fri, 24 Mar 2023 16:17:51 +0100 Subject: [PATCH 01/13] Switch from http.flavor to net.protocol.* in HTTP client instrumentations --- .../http/HttpClientAttributesExtractor.java | 2 - .../http/HttpClientAttributesGetter.java | 9 ++++- .../http/TemporaryMetricsView.java | 3 ++ .../messaging/MessagingAttributesGetter.java | 34 ---------------- .../net/NetClientAttributesGetter.java | 10 +---- .../InternalNetClientAttributesExtractor.java | 12 +++--- .../InternalNetServerAttributesExtractor.java | 8 +--- .../net/internal/NetAttributes.java | 26 ++++++++++++ .../HttpClientAttributesExtractorTest.java | 28 +++++++++---- ...tAddressNetClientAttributesGetterTest.java | 15 +++++++ .../net/NetClientAttributesExtractorTest.java | 5 ++- .../net/NetServerAttributesExtractorTest.java | 5 ++- .../instrumenter/InstrumenterBenchmark.java | 17 +++++--- .../akkahttp/AkkaHttpUtil.java | 15 +++---- .../AkkaHttpClientAttributesGetter.java | 5 --- .../client/AkkaHttpNetAttributesGetter.java | 13 ++++++ .../AkkaHttpServerAttributesGetter.java | 2 +- .../DubboNetClientAttributesGetter.java | 12 ++++++ ...heHttpAsyncClientHttpAttributesGetter.java | 6 --- ...cheHttpAsyncClientNetAttributesGetter.java | 11 +++++ .../ApacheHttpClientRequest.java | 25 +++--------- .../ApacheHttpClientHttpAttributesGetter.java | 13 ------ .../ApacheHttpClientNetAttributesGetter.java | 15 +++++++ .../ApacheHttpClientHttpAttributesGetter.java | 6 --- .../ApacheHttpClientNetAttributesGetter.java | 11 +++++ .../v4_0/ApacheHttpClientRequest.java | 25 +++--------- .../ApacheHttpClientHttpAttributesGetter.java | 6 --- .../ApacheHttpClientNetAttributesGetter.java | 11 +++++ .../v4_3/ApacheHttpClientRequest.java | 27 ++++--------- .../ApacheHttpClientHttpAttributesGetter.java | 40 ------------------- .../ApacheHttpClientNetAttributesGetter.java | 29 ++++++++++++++ .../v5_0/AbstractApacheHttpClientTest.java | 4 +- .../ArmeriaHttpClientAttributesGetter.java | 12 ------ .../ArmeriaNetClientAttributesGetter.java | 12 ++++++ .../AsyncHttpClientHttpAttributesGetter.java | 6 --- .../AsyncHttpClientNetAttributesGetter.java | 12 ++++++ .../AsyncHttpClientHttpAttributesGetter.java | 6 --- .../AsyncHttpClientNetAttributesGetter.java | 34 ++++++++++++++-- .../awssdk/v1_11/Aws1ClientTest.groovy | 2 +- .../groovy/Aws0ClientTest.groovy | 6 +-- .../v1_11/AwsSdkHttpAttributesGetter.java | 7 ---- .../v1_11/AwsSdkNetAttributesGetter.java | 26 ++++++++++++ .../v1_11/AbstractAws1ClientTest.groovy | 5 +-- .../v2_2/AwsSdkHttpAttributesGetter.java | 7 ---- .../v2_2/AwsSdkNetAttributesGetter.java | 13 ++++++ .../awssdk/v2_2/AbstractAws2ClientTest.groovy | 6 --- .../v3_0/CassandraNetAttributesGetter.java | 13 ++++++ .../v4_0/CassandraNetAttributesGetter.java | 13 ++++++ .../v4_4/CassandraNetAttributesGetter.java | 14 +++++++ .../v2_0/CouchbaseNetAttributesGetter.java | 13 ++++++ .../test/groovy/ElasticsearchRest5Test.groovy | 6 ++- .../test/groovy/ElasticsearchRest6Test.groovy | 6 ++- .../test/groovy/ElasticsearchRest7Test.groovy | 6 ++- ...searchRestNetResponseAttributesGetter.java | 12 ++++++ ...icsearch6TransportNetAttributesGetter.java | 14 +++++++ ...cTransportNetResponseAttributesGetter.java | 14 +++++++ .../GoogleHttpClientHttpAttributesGetter.java | 6 --- .../GoogleHttpClientNetAttributesGetter.java | 12 ++++++ .../AbstractGoogleHttpClientTest.java | 20 +++++++--- .../GrpcNetClientAttributesGetter.java | 12 ++++++ .../HttpUrlHttpAttributesGetter.java | 6 --- .../HttpUrlNetAttributesGetter.java | 14 +++++++ .../HttpUrlConnectionTest.java | 16 +++++--- .../httpurlconnection/UrlConnectionTest.java | 6 ++- .../JavaHttpClientAttributesGetter.java | 10 ----- .../JavaHttpClientNetAttributesGetter.java | 38 +++++++++++++++--- .../v1_1/JaxRsClientHttpAttributesGetter.java | 6 --- .../v1_1/JaxRsClientNetAttributesGetter.java | 12 ++++++ .../src/test/groovy/JaxRsClientTest.groovy | 1 - .../internal/JdbcNetAttributesGetter.java | 12 ++++++ .../jedis/v1_4/JedisNetAttributesGetter.java | 12 ++++++ .../jedis/v3_0/JedisNetAttributesGetter.java | 12 ++++++ .../jedis/v4_0/JedisNetAttributesGetter.java | 12 ++++++ .../JettyClientHttpAttributesGetter.java | 29 -------------- .../JettyHttpClientNetAttributesGetter.java | 19 +++++++++ .../v4_2/JoddHttpHttpAttributesGetter.java | 34 ---------------- .../v4_2/JoddHttpNetAttributesGetter.java | 20 ++++++++++ .../client/KtorHttpClientAttributesGetter.kt | 3 -- .../client/KtorNetClientAttributesGetter.kt | 8 ++++ .../ktor/v2_0/client/KtorHttpClientTest.kt | 4 +- .../KubernetesHttpAttributesGetter.java | 6 --- .../KubernetesNetAttributesGetter.java | 12 ++++++ .../test/groovy/KubernetesClientTest.groovy | 1 - .../LettuceConnectNetAttributesGetter.java | 12 ++++++ .../LettuceConnectNetAttributesGetter.java | 12 ++++++ .../v5_1/LettuceNetAttributesGetter.java | 12 ++++++ .../mongo/v3_1/MongoNetAttributesGetter.java | 12 ++++++ .../NettyConnectHttpAttributesGetter.java | 7 ---- .../NettyConnectNetAttributesGetter.java | 12 ++++++ .../NettyHttpClientAttributesGetter.java | 10 ----- .../NettyNetClientAttributesGetter.java | 14 +++++++ .../NettyConnectHttpAttributesGetter.java | 7 ---- .../NettyConnectNetAttributesGetter.java | 12 ++++++ .../NettyHttpClientAttributesGetter.java | 10 ----- .../NettyNetClientAttributesGetter.java | 14 +++++++ .../client/NettySslNetAttributesGetter.java | 12 ++++++ .../v2_2/OkHttp2HttpAttributesGetter.java | 20 ---------- .../v2_2/OkHttp2NetAttributesGetter.java | 36 +++++++++++++++++ .../okhttp/v2_2/OkHttp2Test.java | 8 ++-- .../okhttp/v3_0/OkHttpAttributesGetter.java | 23 ----------- .../internal/OkHttpNetAttributesGetter.java | 36 +++++++++++++++++ .../okhttp/v3_0/AbstractOkHttp3Test.java | 7 ++-- .../src/test/java/OpenSearchRestTest.java | 11 +++-- ...SearchRestNetResponseAttributesGetter.java | 12 ++++++ .../PlayWsClientHttpAttributesGetter.java | 6 --- .../PlayWsClientNetAttributesGetter.java | 12 ++++++ .../RabbitChannelNetAttributesGetter.java | 12 ++++++ .../RabbitReceiveNetAttributesGetter.java | 12 ++++++ .../RatpackHttpClientAttributesGetter.java | 6 --- .../RatpackNetClientAttributesGetter.java | 12 ++++++ ...eactorNettyHttpClientAttributesGetter.java | 13 ------ ...ReactorNettyNetClientAttributesGetter.java | 21 ++++++++++ .../AbstractReactorNettyHttpClientTest.java | 4 +- .../v1_0/ReactorNettyBaseUrlOnlyTest.java | 5 ++- .../v1_0/ReactorNettyClientSslTest.java | 5 ++- .../v1_0/ReactorNettyConnectionSpanTest.java | 5 ++- .../redisson/RedissonNetAttributesGetter.java | 12 ++++++ .../v3_1/SpringWebHttpAttributesGetter.java | 7 ---- .../v3_1/SpringWebNetAttributesGetter.java | 12 ++++++ .../v3_1/SpringWebInstrumentationTest.java | 5 ++- .../WebClientHttpAttributesGetter.java | 6 --- .../WebClientNetAttributesGetter.java | 12 ++++++ ...pringWebfluxClientInstrumentationTest.java | 5 ++- .../test/groovy/test/TwilioClientTest.groovy | 15 ++++--- .../client/Vertx3NetAttributesGetter.java | 13 ++++++ .../groovy/client/VertxHttpClientTest.groovy | 5 ++- .../client/Vertx4HttpAttributesGetter.java | 22 ---------- .../client/Vertx4NetAttributesGetter.java | 25 ++++++++++++ .../AbstractVertxHttpAttributesGetter.java | 6 --- .../VertxRxCircuitBreakerWebClientTest.groovy | 6 ++- .../groovy/client/VertxRxWebClientTest.groovy | 6 ++- .../junit/http/AbstractHttpClientTest.java | 19 +++++---- .../junit/http/HttpClientTestOptions.java | 4 +- 133 files changed, 1065 insertions(+), 585 deletions(-) create mode 100644 instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/net/internal/NetAttributes.java diff --git a/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpClientAttributesExtractor.java b/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpClientAttributesExtractor.java index 023420b5f3c1..f078fb07ad18 100644 --- a/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpClientAttributesExtractor.java +++ b/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpClientAttributesExtractor.java @@ -156,8 +156,6 @@ public void onEnd( @Nullable Throwable error) { super.onEnd(attributes, context, request, response, error); - internalSet(attributes, SemanticAttributes.HTTP_FLAVOR, getter.getFlavor(request, response)); - internalNetExtractor.onEnd(attributes, request, response); int resendCount = resendCountIncrementer.applyAsInt(context); diff --git a/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpClientAttributesGetter.java b/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpClientAttributesGetter.java index 5bf19dd50514..254ab3ad5f4c 100644 --- a/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpClientAttributesGetter.java +++ b/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpClientAttributesGetter.java @@ -7,6 +7,7 @@ import io.opentelemetry.context.Context; import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter; +import io.opentelemetry.instrumentation.api.instrumenter.net.NetClientAttributesGetter; import javax.annotation.Nullable; /** @@ -31,7 +32,13 @@ public interface HttpClientAttributesGetter * *

This is called from {@link Instrumenter#end(Context, Object, Object, Throwable)}, whether * {@code response} is {@code null} or not. + * + * @deprecated Use {@link NetClientAttributesGetter#getProtocolName(Object, Object)} and {@link + * NetClientAttributesGetter#getProtocolVersion(Object, Object)} instead. */ + @Deprecated @Nullable - String getFlavor(REQUEST request, @Nullable RESPONSE response); + default String getFlavor(REQUEST request, @Nullable RESPONSE response) { + return null; + } } diff --git a/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/TemporaryMetricsView.java b/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/TemporaryMetricsView.java index 85fbf30bfba5..3ace24729c51 100644 --- a/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/TemporaryMetricsView.java +++ b/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/TemporaryMetricsView.java @@ -8,6 +8,7 @@ import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.common.Attributes; import io.opentelemetry.api.common.AttributesBuilder; +import io.opentelemetry.instrumentation.api.instrumenter.net.internal.NetAttributes; import io.opentelemetry.semconv.trace.attributes.SemanticAttributes; import java.util.HashSet; import java.util.Set; @@ -30,6 +31,8 @@ private static Set buildDurationAlwaysInclude() { view.add(SemanticAttributes.HTTP_METHOD); view.add(SemanticAttributes.HTTP_STATUS_CODE); // Optional view.add(SemanticAttributes.HTTP_FLAVOR); // Optional + view.add(NetAttributes.NET_PROTOCOL_NAME); // Optional + view.add(NetAttributes.NET_PROTOCOL_VERSION); // Optional return view; } diff --git a/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/messaging/MessagingAttributesGetter.java b/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/messaging/MessagingAttributesGetter.java index e868121602b1..7097d5d75d7d 100644 --- a/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/messaging/MessagingAttributesGetter.java +++ b/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/messaging/MessagingAttributesGetter.java @@ -7,7 +7,6 @@ import static java.util.Collections.emptyList; -import io.opentelemetry.instrumentation.api.instrumenter.net.NetClientAttributesGetter; import java.util.List; import javax.annotation.Nullable; @@ -31,39 +30,6 @@ public interface MessagingAttributesGetter { boolean isTemporaryDestination(REQUEST request); - /** - * Returns the application protocol used. - * - * @deprecated Use {@link NetClientAttributesGetter#getProtocolName(Object, Object)} instead. - */ - @Deprecated - @Nullable - default String getProtocol(REQUEST request) { - return null; - } - - /** - * Returns the version of the application protocol used. - * - * @deprecated Use {@link NetClientAttributesGetter#getProtocolVersion(Object, Object)} instead. - */ - @Deprecated - @Nullable - default String getProtocolVersion(REQUEST request) { - return null; - } - - /** - * Returns the application protocol used. - * - * @deprecated The {@code messaging.url} attribute was removed without replacement. - */ - @Deprecated - @Nullable - default String getUrl(REQUEST request) { - return null; - } - @Nullable String getConversationId(REQUEST request); diff --git a/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/net/NetClientAttributesGetter.java b/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/net/NetClientAttributesGetter.java index 33489715a68c..1e2e866f7cfb 100644 --- a/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/net/NetClientAttributesGetter.java +++ b/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/net/NetClientAttributesGetter.java @@ -20,27 +20,21 @@ public interface NetClientAttributesGetter { @Nullable String getTransport(REQUEST request, @Nullable RESPONSE response); - // TODO: make required after the 1.24 release /** * Returns the application protocol used. * *

Examples: `amqp`, `http`, `mqtt`. */ @Nullable - default String getProtocolName(REQUEST request, @Nullable RESPONSE response) { - return null; - } + String getProtocolName(REQUEST request, @Nullable RESPONSE response); - // TODO: make required after the 1.24 release /** * Returns the version of the application protocol used. * *

Examples: `3.1.1`. */ @Nullable - default String getProtocolVersion(REQUEST request, @Nullable RESPONSE response) { - return null; - } + String getProtocolVersion(REQUEST request, @Nullable RESPONSE response); @Nullable String getPeerName(REQUEST request); diff --git a/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/net/internal/InternalNetClientAttributesExtractor.java b/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/net/internal/InternalNetClientAttributesExtractor.java index 1c0b4823e4f5..12df1230444e 100644 --- a/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/net/internal/InternalNetClientAttributesExtractor.java +++ b/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/net/internal/InternalNetClientAttributesExtractor.java @@ -10,6 +10,7 @@ import io.opentelemetry.api.common.AttributesBuilder; import io.opentelemetry.instrumentation.api.instrumenter.net.NetClientAttributesGetter; import io.opentelemetry.semconv.trace.attributes.SemanticAttributes; +import java.util.Locale; import java.util.function.BiPredicate; import javax.annotation.Nullable; @@ -49,13 +50,14 @@ public void onEnd(AttributesBuilder attributes, REQUEST request, @Nullable RESPO internalSet( attributes, SemanticAttributes.NET_TRANSPORT, getter.getTransport(request, response)); + String protocolName = getter.getProtocolName(request, response); + if (protocolName != null) { + internalSet( + attributes, NetAttributes.NET_PROTOCOL_NAME, protocolName.toLowerCase(Locale.ROOT)); + } internalSet( attributes, - SemanticAttributes.NET_APP_PROTOCOL_NAME, - getter.getProtocolName(request, response)); - internalSet( - attributes, - SemanticAttributes.NET_APP_PROTOCOL_VERSION, + NetAttributes.NET_PROTOCOL_VERSION, getter.getProtocolVersion(request, response)); String peerName = extractPeerName(request); diff --git a/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/net/internal/InternalNetServerAttributesExtractor.java b/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/net/internal/InternalNetServerAttributesExtractor.java index 39dd6999f79f..b1371e30742f 100644 --- a/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/net/internal/InternalNetServerAttributesExtractor.java +++ b/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/net/internal/InternalNetServerAttributesExtractor.java @@ -34,12 +34,8 @@ public InternalNetServerAttributesExtractor( public void onStart(AttributesBuilder attributes, REQUEST request) { internalSet(attributes, SemanticAttributes.NET_TRANSPORT, getter.getTransport(request)); - internalSet( - attributes, SemanticAttributes.NET_APP_PROTOCOL_NAME, getter.getProtocolName(request)); - internalSet( - attributes, - SemanticAttributes.NET_APP_PROTOCOL_VERSION, - getter.getProtocolVersion(request)); + internalSet(attributes, NetAttributes.NET_PROTOCOL_NAME, getter.getProtocolName(request)); + internalSet(attributes, NetAttributes.NET_PROTOCOL_VERSION, getter.getProtocolVersion(request)); boolean setSockFamily = false; diff --git a/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/net/internal/NetAttributes.java b/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/net/internal/NetAttributes.java new file mode 100644 index 000000000000..1a23d126cbd6 --- /dev/null +++ b/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/net/internal/NetAttributes.java @@ -0,0 +1,26 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.instrumentation.api.instrumenter.net.internal; + +import static io.opentelemetry.api.common.AttributeKey.stringKey; + +import io.opentelemetry.api.common.AttributeKey; + +/** + * This class is internal and is hence not for public use. Its APIs are unstable and can change at + * any time. + */ +public final class NetAttributes { + + // FIXME: remove this class and replace its usages with SemanticAttributes once schema 1.20 is + // released + + public static final AttributeKey NET_PROTOCOL_NAME = stringKey("net.protocol.name"); + + public static final AttributeKey NET_PROTOCOL_VERSION = stringKey("net.protocol.version"); + + private NetAttributes() {} +} diff --git a/instrumentation-api-semconv/src/test/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpClientAttributesExtractorTest.java b/instrumentation-api-semconv/src/test/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpClientAttributesExtractorTest.java index 552ab35913b1..cd548b5196ea 100644 --- a/instrumentation-api-semconv/src/test/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpClientAttributesExtractorTest.java +++ b/instrumentation-api-semconv/src/test/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpClientAttributesExtractorTest.java @@ -19,6 +19,7 @@ import io.opentelemetry.context.Context; import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor; import io.opentelemetry.instrumentation.api.instrumenter.net.NetClientAttributesGetter; +import io.opentelemetry.instrumentation.api.instrumenter.net.internal.NetAttributes; import io.opentelemetry.semconv.trace.attributes.SemanticAttributes; import java.util.HashMap; import java.util.List; @@ -60,11 +61,6 @@ public Integer getStatusCode( return Integer.parseInt(response.get("statusCode")); } - @Override - public String getFlavor(Map request, Map response) { - return request.get("flavor"); - } - @Override public List getResponseHeader( Map request, Map response, String name) { @@ -83,6 +79,20 @@ public String getTransport( return response == null ? null : response.get("transport"); } + @Nullable + @Override + public String getProtocolName( + Map request, @Nullable Map response) { + return request.get("protocolName"); + } + + @Nullable + @Override + public String getProtocolVersion( + Map request, @Nullable Map response) { + return request.get("protocolVersion"); + } + @Nullable @Override public String getPeerName(Map request) { @@ -103,9 +113,10 @@ void normal() { request.put("method", "POST"); request.put("url", "http://github.com"); request.put("header.content-length", "10"); - request.put("flavor", "http/2"); request.put("header.user-agent", "okhttp 3.x"); request.put("header.custom-request-header", "123,456"); + request.put("protocolName", "http"); + request.put("protocolVersion", "1.1"); request.put("peerName", "github.com"); request.put("peerPort", "123"); @@ -143,14 +154,15 @@ void normal() { assertThat(endAttributes.build()) .containsOnly( entry(SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH, 10L), - entry(SemanticAttributes.HTTP_FLAVOR, "http/2"), entry(SemanticAttributes.HTTP_STATUS_CODE, 202L), entry(SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH, 20L), entry(SemanticAttributes.HTTP_RESEND_COUNT, 2L), entry( AttributeKey.stringArrayKey("http.response.header.custom_response_header"), asList("654", "321")), - entry(SemanticAttributes.NET_TRANSPORT, IP_TCP)); + entry(SemanticAttributes.NET_TRANSPORT, IP_TCP), + entry(NetAttributes.NET_PROTOCOL_NAME, "http"), + entry(NetAttributes.NET_PROTOCOL_VERSION, "1.1")); } @ParameterizedTest diff --git a/instrumentation-api-semconv/src/test/java/io/opentelemetry/instrumentation/api/instrumenter/net/InetSocketAddressNetClientAttributesGetterTest.java b/instrumentation-api-semconv/src/test/java/io/opentelemetry/instrumentation/api/instrumenter/net/InetSocketAddressNetClientAttributesGetterTest.java index fc33b6d5e969..eb13698b417b 100644 --- a/instrumentation-api-semconv/src/test/java/io/opentelemetry/instrumentation/api/instrumenter/net/InetSocketAddressNetClientAttributesGetterTest.java +++ b/instrumentation-api-semconv/src/test/java/io/opentelemetry/instrumentation/api/instrumenter/net/InetSocketAddressNetClientAttributesGetterTest.java @@ -15,6 +15,7 @@ import io.opentelemetry.semconv.trace.attributes.SemanticAttributes; import java.net.Inet4Address; import java.net.InetSocketAddress; +import javax.annotation.Nullable; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.junit.jupiter.MockitoExtension; @@ -30,6 +31,20 @@ public String getTransport(InetSocketAddress request, InetSocketAddress response return SemanticAttributes.NetTransportValues.IP_TCP; } + @Nullable + @Override + public String getProtocolName( + InetSocketAddress address, @Nullable InetSocketAddress response) { + return null; + } + + @Nullable + @Override + public String getProtocolVersion( + InetSocketAddress address, @Nullable InetSocketAddress response) { + return null; + } + @Override public String getPeerName(InetSocketAddress request) { // net.peer.name and net.peer.port are tested in NetClientAttributesExtractorTest diff --git a/instrumentation-api-semconv/src/test/java/io/opentelemetry/instrumentation/api/instrumenter/net/NetClientAttributesExtractorTest.java b/instrumentation-api-semconv/src/test/java/io/opentelemetry/instrumentation/api/instrumenter/net/NetClientAttributesExtractorTest.java index a745bf711060..424f3f4fe680 100644 --- a/instrumentation-api-semconv/src/test/java/io/opentelemetry/instrumentation/api/instrumenter/net/NetClientAttributesExtractorTest.java +++ b/instrumentation-api-semconv/src/test/java/io/opentelemetry/instrumentation/api/instrumenter/net/NetClientAttributesExtractorTest.java @@ -14,6 +14,7 @@ import io.opentelemetry.api.common.AttributesBuilder; import io.opentelemetry.context.Context; import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor; +import io.opentelemetry.instrumentation.api.instrumenter.net.internal.NetAttributes; import io.opentelemetry.semconv.trace.attributes.SemanticAttributes; import java.util.HashMap; import java.util.Map; @@ -113,8 +114,8 @@ void normal() { assertThat(endAttributes.build()) .containsOnly( entry(SemanticAttributes.NET_TRANSPORT, IP_TCP), - entry(SemanticAttributes.NET_APP_PROTOCOL_NAME, "http"), - entry(SemanticAttributes.NET_APP_PROTOCOL_VERSION, "1.1"), + entry(NetAttributes.NET_PROTOCOL_NAME, "http"), + entry(NetAttributes.NET_PROTOCOL_VERSION, "1.1"), entry(SemanticAttributes.NET_SOCK_FAMILY, "inet6"), entry(SemanticAttributes.NET_SOCK_PEER_ADDR, "1:2:3:4::"), entry(SemanticAttributes.NET_SOCK_PEER_NAME, "proxy.opentelemetry.io"), diff --git a/instrumentation-api-semconv/src/test/java/io/opentelemetry/instrumentation/api/instrumenter/net/NetServerAttributesExtractorTest.java b/instrumentation-api-semconv/src/test/java/io/opentelemetry/instrumentation/api/instrumenter/net/NetServerAttributesExtractorTest.java index a74c53f83cdf..5f8030b51f6a 100644 --- a/instrumentation-api-semconv/src/test/java/io/opentelemetry/instrumentation/api/instrumenter/net/NetServerAttributesExtractorTest.java +++ b/instrumentation-api-semconv/src/test/java/io/opentelemetry/instrumentation/api/instrumenter/net/NetServerAttributesExtractorTest.java @@ -14,6 +14,7 @@ import io.opentelemetry.api.common.AttributesBuilder; import io.opentelemetry.context.Context; import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor; +import io.opentelemetry.instrumentation.api.instrumenter.net.internal.NetAttributes; import io.opentelemetry.semconv.trace.attributes.SemanticAttributes; import java.util.HashMap; import java.util.Map; @@ -118,8 +119,8 @@ void normal() { assertThat(startAttributes.build()) .containsOnly( entry(SemanticAttributes.NET_TRANSPORT, IP_TCP), - entry(SemanticAttributes.NET_APP_PROTOCOL_NAME, "http"), - entry(SemanticAttributes.NET_APP_PROTOCOL_VERSION, "1.1"), + entry(NetAttributes.NET_PROTOCOL_NAME, "http"), + entry(NetAttributes.NET_PROTOCOL_VERSION, "1.1"), entry(SemanticAttributes.NET_HOST_NAME, "opentelemetry.io"), entry(SemanticAttributes.NET_HOST_PORT, 80L), entry(SemanticAttributes.NET_SOCK_FAMILY, "inet6"), diff --git a/instrumentation-api/src/jmh/java/io/opentelemetry/instrumentation/api/instrumenter/InstrumenterBenchmark.java b/instrumentation-api/src/jmh/java/io/opentelemetry/instrumentation/api/instrumenter/InstrumenterBenchmark.java index 175edf184af6..5148fe8170ff 100644 --- a/instrumentation-api/src/jmh/java/io/opentelemetry/instrumentation/api/instrumenter/InstrumenterBenchmark.java +++ b/instrumentation-api/src/jmh/java/io/opentelemetry/instrumentation/api/instrumenter/InstrumenterBenchmark.java @@ -78,11 +78,6 @@ public List getRequestHeader(Void unused, String name) { return Collections.emptyList(); } - @Override - public String getFlavor(Void unused, @Nullable Void unused2) { - return SemanticAttributes.HttpFlavorValues.HTTP_2_0; - } - @Override public Integer getStatusCode(Void unused, Void unused2, @Nullable Throwable error) { return 200; @@ -106,6 +101,18 @@ public String getTransport(Void request, @Nullable Void response) { return SemanticAttributes.NetTransportValues.IP_TCP; } + @Nullable + @Override + public String getProtocolName(Void unused, @Nullable Void unused2) { + return "http"; + } + + @Nullable + @Override + public String getProtocolVersion(Void unused, @Nullable Void unused2) { + return "2.0"; + } + @Nullable @Override public String getPeerName(Void request) { diff --git a/instrumentation/akka/akka-http-10.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/akkahttp/AkkaHttpUtil.java b/instrumentation/akka/akka-http-10.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/akkahttp/AkkaHttpUtil.java index 3438f8f9daa8..f009233fac6a 100644 --- a/instrumentation/akka/akka-http-10.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/akkahttp/AkkaHttpUtil.java +++ b/instrumentation/akka/akka-http-10.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/akkahttp/AkkaHttpUtil.java @@ -7,7 +7,6 @@ import akka.http.scaladsl.model.HttpRequest; import akka.http.scaladsl.model.HttpResponse; -import io.opentelemetry.semconv.trace.attributes.SemanticAttributes; import java.util.Collections; import java.util.List; @@ -33,16 +32,12 @@ public static List responseHeader(HttpResponse httpResponse, String name .orElse(Collections.emptyList()); } - public static String flavor(HttpRequest httpRequest) { - switch (httpRequest.protocol().value()) { - case "HTTP/1.0": - return SemanticAttributes.HttpFlavorValues.HTTP_1_0; - case "HTTP/2.0": - return SemanticAttributes.HttpFlavorValues.HTTP_2_0; - case "HTTP/1.1": - default: - return SemanticAttributes.HttpFlavorValues.HTTP_1_1; + public static String httpVersion(HttpRequest httpRequest) { + String protocol = httpRequest.protocol().value(); + if (protocol.startsWith("HTTP/")) { + protocol = protocol.substring("HTTP/".length()); } + return protocol; } private AkkaHttpUtil() {} diff --git a/instrumentation/akka/akka-http-10.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/akkahttp/client/AkkaHttpClientAttributesGetter.java b/instrumentation/akka/akka-http-10.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/akkahttp/client/AkkaHttpClientAttributesGetter.java index e6ce60f9146d..ae73cccc79c3 100644 --- a/instrumentation/akka/akka-http-10.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/akkahttp/client/AkkaHttpClientAttributesGetter.java +++ b/instrumentation/akka/akka-http-10.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/akkahttp/client/AkkaHttpClientAttributesGetter.java @@ -20,11 +20,6 @@ public String getUrl(HttpRequest httpRequest) { return httpRequest.uri().toString(); } - @Override - public String getFlavor(HttpRequest httpRequest, @Nullable HttpResponse httpResponse) { - return AkkaHttpUtil.flavor(httpRequest); - } - @Override public String getMethod(HttpRequest httpRequest) { return httpRequest.method().value(); diff --git a/instrumentation/akka/akka-http-10.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/akkahttp/client/AkkaHttpNetAttributesGetter.java b/instrumentation/akka/akka-http-10.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/akkahttp/client/AkkaHttpNetAttributesGetter.java index 8beaa91d037e..7b1e4876d866 100644 --- a/instrumentation/akka/akka-http-10.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/akkahttp/client/AkkaHttpNetAttributesGetter.java +++ b/instrumentation/akka/akka-http-10.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/akkahttp/client/AkkaHttpNetAttributesGetter.java @@ -8,6 +8,7 @@ import akka.http.scaladsl.model.HttpRequest; import akka.http.scaladsl.model.HttpResponse; import io.opentelemetry.instrumentation.api.instrumenter.net.NetClientAttributesGetter; +import io.opentelemetry.javaagent.instrumentation.akkahttp.AkkaHttpUtil; import io.opentelemetry.semconv.trace.attributes.SemanticAttributes; import javax.annotation.Nullable; @@ -18,6 +19,18 @@ public String getTransport(HttpRequest httpRequest, @Nullable HttpResponse httpR return SemanticAttributes.NetTransportValues.IP_TCP; } + @Nullable + @Override + public String getProtocolName(HttpRequest httpRequest, @Nullable HttpResponse httpResponse) { + return "http"; + } + + @Nullable + @Override + public String getProtocolVersion(HttpRequest httpRequest, @Nullable HttpResponse httpResponse) { + return AkkaHttpUtil.httpVersion(httpRequest); + } + @Override public String getPeerName(HttpRequest httpRequest) { return httpRequest.uri().authority().host().address(); diff --git a/instrumentation/akka/akka-http-10.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/akkahttp/server/AkkaHttpServerAttributesGetter.java b/instrumentation/akka/akka-http-10.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/akkahttp/server/AkkaHttpServerAttributesGetter.java index e6e77f6775ac..ea427948e104 100644 --- a/instrumentation/akka/akka-http-10.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/akkahttp/server/AkkaHttpServerAttributesGetter.java +++ b/instrumentation/akka/akka-http-10.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/akkahttp/server/AkkaHttpServerAttributesGetter.java @@ -40,7 +40,7 @@ public List getResponseHeader( @Override public String getFlavor(HttpRequest request) { - return AkkaHttpUtil.flavor(request); + return AkkaHttpUtil.httpVersion(request); } @Override diff --git a/instrumentation/apache-dubbo-2.7/library-autoconfigure/src/main/java/io/opentelemetry/instrumentation/apachedubbo/v2_7/internal/DubboNetClientAttributesGetter.java b/instrumentation/apache-dubbo-2.7/library-autoconfigure/src/main/java/io/opentelemetry/instrumentation/apachedubbo/v2_7/internal/DubboNetClientAttributesGetter.java index f82e1ea43d92..ac1c6a935cb0 100644 --- a/instrumentation/apache-dubbo-2.7/library-autoconfigure/src/main/java/io/opentelemetry/instrumentation/apachedubbo/v2_7/internal/DubboNetClientAttributesGetter.java +++ b/instrumentation/apache-dubbo-2.7/library-autoconfigure/src/main/java/io/opentelemetry/instrumentation/apachedubbo/v2_7/internal/DubboNetClientAttributesGetter.java @@ -24,6 +24,18 @@ public String getTransport(DubboRequest request, @Nullable Result response) { return null; } + @Nullable + @Override + public String getProtocolName(DubboRequest request, @Nullable Result result) { + return null; + } + + @Nullable + @Override + public String getProtocolVersion(DubboRequest request, @Nullable Result result) { + return null; + } + @Nullable @Override public String getPeerName(DubboRequest request) { diff --git a/instrumentation/apache-httpasyncclient-4.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpasyncclient/ApacheHttpAsyncClientHttpAttributesGetter.java b/instrumentation/apache-httpasyncclient-4.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpasyncclient/ApacheHttpAsyncClientHttpAttributesGetter.java index 0d4bdf237107..070a6990ed7b 100644 --- a/instrumentation/apache-httpasyncclient-4.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpasyncclient/ApacheHttpAsyncClientHttpAttributesGetter.java +++ b/instrumentation/apache-httpasyncclient-4.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpasyncclient/ApacheHttpAsyncClientHttpAttributesGetter.java @@ -39,12 +39,6 @@ public Integer getStatusCode( return statusLine != null ? statusLine.getStatusCode() : null; } - @Override - @Nullable - public String getFlavor(ApacheHttpClientRequest request, @Nullable HttpResponse response) { - return request.getFlavor(); - } - @Override public List getResponseHeader( ApacheHttpClientRequest request, HttpResponse response, String name) { diff --git a/instrumentation/apache-httpasyncclient-4.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpasyncclient/ApacheHttpAsyncClientNetAttributesGetter.java b/instrumentation/apache-httpasyncclient-4.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpasyncclient/ApacheHttpAsyncClientNetAttributesGetter.java index 817783cb8584..7f2fb4946843 100644 --- a/instrumentation/apache-httpasyncclient-4.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpasyncclient/ApacheHttpAsyncClientNetAttributesGetter.java +++ b/instrumentation/apache-httpasyncclient-4.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpasyncclient/ApacheHttpAsyncClientNetAttributesGetter.java @@ -19,6 +19,17 @@ public String getTransport(ApacheHttpClientRequest request, @Nullable HttpRespon return SemanticAttributes.NetTransportValues.IP_TCP; } + @Override + public String getProtocolName(ApacheHttpClientRequest request, @Nullable HttpResponse response) { + return request.getProtocolName(); + } + + @Override + public String getProtocolVersion( + ApacheHttpClientRequest request, @Nullable HttpResponse response) { + return request.getProtocolVersion(); + } + @Override @Nullable public String getPeerName(ApacheHttpClientRequest request) { diff --git a/instrumentation/apache-httpasyncclient-4.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpasyncclient/ApacheHttpClientRequest.java b/instrumentation/apache-httpasyncclient-4.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpasyncclient/ApacheHttpClientRequest.java index e9b1c6f27e0d..f34edd75672b 100644 --- a/instrumentation/apache-httpasyncclient-4.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpasyncclient/ApacheHttpClientRequest.java +++ b/instrumentation/apache-httpasyncclient-4.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpasyncclient/ApacheHttpClientRequest.java @@ -7,7 +7,6 @@ import static java.util.logging.Level.FINE; -import io.opentelemetry.semconv.trace.attributes.SemanticAttributes; import java.net.InetAddress; import java.net.InetSocketAddress; import java.net.URI; @@ -70,25 +69,13 @@ public String getUrl() { return uri != null ? uri.toString() : null; } - public String getFlavor() { + String getProtocolName() { + return delegate.getProtocolVersion().getProtocol(); + } + + String getProtocolVersion() { ProtocolVersion protocolVersion = delegate.getProtocolVersion(); - String protocol = protocolVersion.getProtocol(); - if (!protocol.equals("HTTP")) { - return null; - } - int major = protocolVersion.getMajor(); - int minor = protocolVersion.getMinor(); - if (major == 1 && minor == 0) { - return SemanticAttributes.HttpFlavorValues.HTTP_1_0; - } - if (major == 1 && minor == 1) { - return SemanticAttributes.HttpFlavorValues.HTTP_1_1; - } - if (major == 2 && minor == 0) { - return SemanticAttributes.HttpFlavorValues.HTTP_2_0; - } - logger.log(FINE, "unexpected http protocol version: {0}", protocolVersion); - return null; + return protocolVersion.getMajor() + "." + protocolVersion.getMinor(); } public String getPeerName() { diff --git a/instrumentation/apache-httpclient/apache-httpclient-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v2_0/ApacheHttpClientHttpAttributesGetter.java b/instrumentation/apache-httpclient/apache-httpclient-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v2_0/ApacheHttpClientHttpAttributesGetter.java index 5cf35ab424e7..78138de29531 100644 --- a/instrumentation/apache-httpclient/apache-httpclient-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v2_0/ApacheHttpClientHttpAttributesGetter.java +++ b/instrumentation/apache-httpclient/apache-httpclient-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v2_0/ApacheHttpClientHttpAttributesGetter.java @@ -9,13 +9,11 @@ import static java.util.Collections.singletonList; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpClientAttributesGetter; -import io.opentelemetry.semconv.trace.attributes.SemanticAttributes; import java.util.List; import javax.annotation.Nullable; import org.apache.commons.httpclient.Header; import org.apache.commons.httpclient.HostConfiguration; import org.apache.commons.httpclient.HttpMethod; -import org.apache.commons.httpclient.HttpMethodBase; import org.apache.commons.httpclient.StatusLine; final class ApacheHttpClientHttpAttributesGetter @@ -70,17 +68,6 @@ public Integer getStatusCode(HttpMethod request, HttpMethod response, @Nullable return statusLine == null ? null : statusLine.getStatusCode(); } - @Override - @Nullable - public String getFlavor(HttpMethod request, @Nullable HttpMethod response) { - if (request instanceof HttpMethodBase) { - return ((HttpMethodBase) request).isHttp11() - ? SemanticAttributes.HttpFlavorValues.HTTP_1_1 - : SemanticAttributes.HttpFlavorValues.HTTP_1_0; - } - return null; - } - @Override public List getResponseHeader(HttpMethod request, HttpMethod response, String name) { Header header = response.getResponseHeader(name); diff --git a/instrumentation/apache-httpclient/apache-httpclient-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v2_0/ApacheHttpClientNetAttributesGetter.java b/instrumentation/apache-httpclient/apache-httpclient-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v2_0/ApacheHttpClientNetAttributesGetter.java index 1129f31a8c0f..9a120ce1ec50 100644 --- a/instrumentation/apache-httpclient/apache-httpclient-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v2_0/ApacheHttpClientNetAttributesGetter.java +++ b/instrumentation/apache-httpclient/apache-httpclient-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v2_0/ApacheHttpClientNetAttributesGetter.java @@ -10,6 +10,7 @@ import javax.annotation.Nullable; import org.apache.commons.httpclient.HostConfiguration; import org.apache.commons.httpclient.HttpMethod; +import org.apache.commons.httpclient.HttpMethodBase; final class ApacheHttpClientNetAttributesGetter implements NetClientAttributesGetter { @@ -19,6 +20,20 @@ public String getTransport(HttpMethod request, @Nullable HttpMethod response) { return SemanticAttributes.NetTransportValues.IP_TCP; } + @Override + public String getProtocolName(HttpMethod request, @Nullable HttpMethod response) { + return "http"; + } + + @Nullable + @Override + public String getProtocolVersion(HttpMethod request, @Nullable HttpMethod response) { + if (request instanceof HttpMethodBase) { + return ((HttpMethodBase) request).isHttp11() ? "1.1" : "1.0"; + } + return null; + } + @Override @Nullable public String getPeerName(HttpMethod request) { diff --git a/instrumentation/apache-httpclient/apache-httpclient-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v4_0/ApacheHttpClientHttpAttributesGetter.java b/instrumentation/apache-httpclient/apache-httpclient-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v4_0/ApacheHttpClientHttpAttributesGetter.java index 41dd0c2a07bd..82323e17310d 100644 --- a/instrumentation/apache-httpclient/apache-httpclient-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v4_0/ApacheHttpClientHttpAttributesGetter.java +++ b/instrumentation/apache-httpclient/apache-httpclient-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v4_0/ApacheHttpClientHttpAttributesGetter.java @@ -36,12 +36,6 @@ public Integer getStatusCode( return response.getStatusLine().getStatusCode(); } - @Override - @Nullable - public String getFlavor(ApacheHttpClientRequest request, @Nullable HttpResponse response) { - return request.getFlavor(); - } - @Override public List getResponseHeader( ApacheHttpClientRequest request, HttpResponse response, String name) { diff --git a/instrumentation/apache-httpclient/apache-httpclient-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v4_0/ApacheHttpClientNetAttributesGetter.java b/instrumentation/apache-httpclient/apache-httpclient-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v4_0/ApacheHttpClientNetAttributesGetter.java index f0fea9eda1ca..c0e74e7596e0 100644 --- a/instrumentation/apache-httpclient/apache-httpclient-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v4_0/ApacheHttpClientNetAttributesGetter.java +++ b/instrumentation/apache-httpclient/apache-httpclient-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v4_0/ApacheHttpClientNetAttributesGetter.java @@ -18,6 +18,17 @@ public String getTransport(ApacheHttpClientRequest request, @Nullable HttpRespon return SemanticAttributes.NetTransportValues.IP_TCP; } + @Override + public String getProtocolName(ApacheHttpClientRequest request, @Nullable HttpResponse response) { + return request.getProtocolName(); + } + + @Override + public String getProtocolVersion( + ApacheHttpClientRequest request, @Nullable HttpResponse response) { + return request.getProtocolVersion(); + } + @Override @Nullable public String getPeerName(ApacheHttpClientRequest request) { diff --git a/instrumentation/apache-httpclient/apache-httpclient-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v4_0/ApacheHttpClientRequest.java b/instrumentation/apache-httpclient/apache-httpclient-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v4_0/ApacheHttpClientRequest.java index a572d4014f4e..428315ac01c8 100644 --- a/instrumentation/apache-httpclient/apache-httpclient-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v4_0/ApacheHttpClientRequest.java +++ b/instrumentation/apache-httpclient/apache-httpclient-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v4_0/ApacheHttpClientRequest.java @@ -7,7 +7,6 @@ import static java.util.logging.Level.FINE; -import io.opentelemetry.semconv.trace.attributes.SemanticAttributes; import java.net.URI; import java.net.URISyntaxException; import java.util.ArrayList; @@ -72,25 +71,13 @@ public String getUrl() { return uri != null ? uri.toString() : null; } - public String getFlavor() { + String getProtocolName() { + return delegate.getProtocolVersion().getProtocol(); + } + + String getProtocolVersion() { ProtocolVersion protocolVersion = delegate.getProtocolVersion(); - String protocol = protocolVersion.getProtocol(); - if (!protocol.equals("HTTP")) { - return null; - } - int major = protocolVersion.getMajor(); - int minor = protocolVersion.getMinor(); - if (major == 1 && minor == 0) { - return SemanticAttributes.HttpFlavorValues.HTTP_1_0; - } - if (major == 1 && minor == 1) { - return SemanticAttributes.HttpFlavorValues.HTTP_1_1; - } - if (major == 2 && minor == 0) { - return SemanticAttributes.HttpFlavorValues.HTTP_2_0; - } - logger.log(FINE, "unexpected http protocol version: {0}", protocolVersion); - return null; + return protocolVersion.getMajor() + "." + protocolVersion.getMinor(); } @Nullable diff --git a/instrumentation/apache-httpclient/apache-httpclient-4.3/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v4_3/ApacheHttpClientHttpAttributesGetter.java b/instrumentation/apache-httpclient/apache-httpclient-4.3/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v4_3/ApacheHttpClientHttpAttributesGetter.java index 1c7b24f2cb18..8476e10cd75f 100644 --- a/instrumentation/apache-httpclient/apache-httpclient-4.3/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v4_3/ApacheHttpClientHttpAttributesGetter.java +++ b/instrumentation/apache-httpclient/apache-httpclient-4.3/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v4_3/ApacheHttpClientHttpAttributesGetter.java @@ -38,12 +38,6 @@ public Integer getStatusCode( return response.getStatusLine().getStatusCode(); } - @Override - @Nullable - public String getFlavor(ApacheHttpClientRequest request, @Nullable HttpResponse response) { - return request.getFlavor(); - } - @Override public List getResponseHeader( ApacheHttpClientRequest request, HttpResponse response, String name) { diff --git a/instrumentation/apache-httpclient/apache-httpclient-4.3/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v4_3/ApacheHttpClientNetAttributesGetter.java b/instrumentation/apache-httpclient/apache-httpclient-4.3/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v4_3/ApacheHttpClientNetAttributesGetter.java index a3d984b537da..c1c2975111a7 100644 --- a/instrumentation/apache-httpclient/apache-httpclient-4.3/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v4_3/ApacheHttpClientNetAttributesGetter.java +++ b/instrumentation/apache-httpclient/apache-httpclient-4.3/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v4_3/ApacheHttpClientNetAttributesGetter.java @@ -19,6 +19,17 @@ public String getTransport(ApacheHttpClientRequest request, @Nullable HttpRespon return SemanticAttributes.NetTransportValues.IP_TCP; } + @Override + public String getProtocolName(ApacheHttpClientRequest request, @Nullable HttpResponse response) { + return request.getProtocolName(); + } + + @Override + public String getProtocolVersion( + ApacheHttpClientRequest request, @Nullable HttpResponse response) { + return request.getProtocolVersion(); + } + @Override @Nullable public String getPeerName(ApacheHttpClientRequest request) { diff --git a/instrumentation/apache-httpclient/apache-httpclient-4.3/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v4_3/ApacheHttpClientRequest.java b/instrumentation/apache-httpclient/apache-httpclient-4.3/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v4_3/ApacheHttpClientRequest.java index e296619e1358..f08862237a03 100644 --- a/instrumentation/apache-httpclient/apache-httpclient-4.3/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v4_3/ApacheHttpClientRequest.java +++ b/instrumentation/apache-httpclient/apache-httpclient-4.3/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v4_3/ApacheHttpClientRequest.java @@ -7,7 +7,6 @@ import static java.util.logging.Level.FINE; -import io.opentelemetry.semconv.trace.attributes.SemanticAttributes; import java.net.InetAddress; import java.net.InetSocketAddress; import java.net.URI; @@ -15,6 +14,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.Locale; import java.util.logging.Logger; import javax.annotation.Nullable; import org.apache.http.Header; @@ -76,26 +76,13 @@ String getUrl() { return uri != null ? uri.toString() : null; } - @Nullable - String getFlavor() { + String getProtocolName() { + return delegate.getProtocolVersion().getProtocol().toLowerCase(Locale.ROOT); + } + + String getProtocolVersion() { ProtocolVersion protocolVersion = delegate.getProtocolVersion(); - String protocol = protocolVersion.getProtocol(); - if (!protocol.equals("HTTP")) { - return null; - } - int major = protocolVersion.getMajor(); - int minor = protocolVersion.getMinor(); - if (major == 1 && minor == 0) { - return SemanticAttributes.HttpFlavorValues.HTTP_1_0; - } - if (major == 1 && minor == 1) { - return SemanticAttributes.HttpFlavorValues.HTTP_1_1; - } - if (major == 2 && minor == 0) { - return SemanticAttributes.HttpFlavorValues.HTTP_2_0; - } - logger.log(FINE, "unexpected http protocol version: {0}", protocolVersion); - return null; + return protocolVersion.getMajor() + "." + protocolVersion.getMinor(); } @Nullable diff --git a/instrumentation/apache-httpclient/apache-httpclient-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v5_0/ApacheHttpClientHttpAttributesGetter.java b/instrumentation/apache-httpclient/apache-httpclient-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v5_0/ApacheHttpClientHttpAttributesGetter.java index 09d4827005f6..cc399391623f 100644 --- a/instrumentation/apache-httpclient/apache-httpclient-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v5_0/ApacheHttpClientHttpAttributesGetter.java +++ b/instrumentation/apache-httpclient/apache-httpclient-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v5_0/ApacheHttpClientHttpAttributesGetter.java @@ -6,24 +6,18 @@ package io.opentelemetry.javaagent.instrumentation.apachehttpclient.v5_0; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpClientAttributesGetter; -import io.opentelemetry.semconv.trace.attributes.SemanticAttributes; import java.util.ArrayList; import java.util.Collections; import java.util.List; -import java.util.logging.Level; -import java.util.logging.Logger; import javax.annotation.Nullable; import org.apache.hc.core5.http.Header; import org.apache.hc.core5.http.HttpRequest; import org.apache.hc.core5.http.HttpResponse; import org.apache.hc.core5.http.MessageHeaders; -import org.apache.hc.core5.http.ProtocolVersion; import org.apache.hc.core5.net.URIAuthority; final class ApacheHttpClientHttpAttributesGetter implements HttpClientAttributesGetter { - private static final Logger logger = - Logger.getLogger(ApacheHttpClientHttpAttributesGetter.class.getName()); @Override public String getMethod(HttpRequest request) { @@ -74,45 +68,11 @@ public Integer getStatusCode( return response.getCode(); } - @Override - @Nullable - public String getFlavor(HttpRequest request, @Nullable HttpResponse response) { - ProtocolVersion protocolVersion = getVersion(request, response); - if (protocolVersion == null) { - return null; - } - String protocol = protocolVersion.getProtocol(); - if (!protocol.equals("HTTP")) { - return null; - } - int major = protocolVersion.getMajor(); - int minor = protocolVersion.getMinor(); - if (major == 1 && minor == 0) { - return SemanticAttributes.HttpFlavorValues.HTTP_1_0; - } - if (major == 1 && minor == 1) { - return SemanticAttributes.HttpFlavorValues.HTTP_1_1; - } - if (major == 2 && minor == 0) { - return SemanticAttributes.HttpFlavorValues.HTTP_2_0; - } - logger.log(Level.FINE, "unexpected http protocol version: {0}", protocolVersion); - return null; - } - @Override public List getResponseHeader(HttpRequest request, HttpResponse response, String name) { return getHeader(response, name); } - private static ProtocolVersion getVersion(HttpRequest request, @Nullable HttpResponse response) { - ProtocolVersion protocolVersion = request.getVersion(); - if (protocolVersion == null && response != null) { - protocolVersion = response.getVersion(); - } - return protocolVersion; - } - private static List getHeader(MessageHeaders messageHeaders, String name) { return headersToList(messageHeaders.getHeaders(name)); } diff --git a/instrumentation/apache-httpclient/apache-httpclient-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v5_0/ApacheHttpClientNetAttributesGetter.java b/instrumentation/apache-httpclient/apache-httpclient-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v5_0/ApacheHttpClientNetAttributesGetter.java index 6d458ca9e69d..92e559bb26c6 100644 --- a/instrumentation/apache-httpclient/apache-httpclient-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v5_0/ApacheHttpClientNetAttributesGetter.java +++ b/instrumentation/apache-httpclient/apache-httpclient-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v5_0/ApacheHttpClientNetAttributesGetter.java @@ -10,6 +10,7 @@ import javax.annotation.Nullable; import org.apache.hc.core5.http.HttpRequest; import org.apache.hc.core5.http.HttpResponse; +import org.apache.hc.core5.http.ProtocolVersion; final class ApacheHttpClientNetAttributesGetter implements NetClientAttributesGetter { @@ -19,6 +20,26 @@ public String getTransport(HttpRequest request, @Nullable HttpResponse response) return SemanticAttributes.NetTransportValues.IP_TCP; } + @Nullable + @Override + public String getProtocolName(HttpRequest request, @Nullable HttpResponse response) { + ProtocolVersion protocolVersion = getVersion(request, response); + if (protocolVersion == null) { + return null; + } + return protocolVersion.getProtocol(); + } + + @Nullable + @Override + public String getProtocolVersion(HttpRequest request, @Nullable HttpResponse response) { + ProtocolVersion protocolVersion = getVersion(request, response); + if (protocolVersion == null) { + return null; + } + return protocolVersion.getMajor() + "." + protocolVersion.getMinor(); + } + @Override @Nullable public String getPeerName(HttpRequest request) { @@ -29,4 +50,12 @@ public String getPeerName(HttpRequest request) { public Integer getPeerPort(HttpRequest request) { return request.getAuthority().getPort(); } + + private static ProtocolVersion getVersion(HttpRequest request, @Nullable HttpResponse response) { + ProtocolVersion protocolVersion = request.getVersion(); + if (protocolVersion == null && response != null) { + protocolVersion = response.getVersion(); + } + return protocolVersion; + } } diff --git a/instrumentation/apache-httpclient/apache-httpclient-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v5_0/AbstractApacheHttpClientTest.java b/instrumentation/apache-httpclient/apache-httpclient-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v5_0/AbstractApacheHttpClientTest.java index 05bc9244da34..1d40695ec85c 100644 --- a/instrumentation/apache-httpclient/apache-httpclient-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v5_0/AbstractApacheHttpClientTest.java +++ b/instrumentation/apache-httpclient/apache-httpclient-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v5_0/AbstractApacheHttpClientTest.java @@ -6,6 +6,7 @@ package io.opentelemetry.javaagent.instrumentation.apachehttpclient.v5_0; import io.opentelemetry.api.common.AttributeKey; +import io.opentelemetry.instrumentation.api.instrumenter.net.internal.NetAttributes; import io.opentelemetry.instrumentation.testing.junit.http.AbstractHttpClientTest; import io.opentelemetry.instrumentation.testing.junit.http.HttpClientResult; import io.opentelemetry.instrumentation.testing.junit.http.HttpClientTestOptions; @@ -42,7 +43,8 @@ protected Set> getHttpAttributes(URI endpoint) { attributes.add(SemanticAttributes.HTTP_URL); attributes.add(SemanticAttributes.HTTP_METHOD); if (endpoint.toString().contains("/success")) { - attributes.add(SemanticAttributes.HTTP_FLAVOR); + attributes.add(NetAttributes.NET_PROTOCOL_NAME); + attributes.add(NetAttributes.NET_PROTOCOL_VERSION); } attributes.add(SemanticAttributes.HTTP_USER_AGENT); return attributes; diff --git a/instrumentation/armeria-1.3/library/src/main/java/io/opentelemetry/instrumentation/armeria/v1_3/ArmeriaHttpClientAttributesGetter.java b/instrumentation/armeria-1.3/library/src/main/java/io/opentelemetry/instrumentation/armeria/v1_3/ArmeriaHttpClientAttributesGetter.java index 43bbaf62bb70..1c0f4f0d9ab6 100644 --- a/instrumentation/armeria-1.3/library/src/main/java/io/opentelemetry/instrumentation/armeria/v1_3/ArmeriaHttpClientAttributesGetter.java +++ b/instrumentation/armeria-1.3/library/src/main/java/io/opentelemetry/instrumentation/armeria/v1_3/ArmeriaHttpClientAttributesGetter.java @@ -8,10 +8,8 @@ import com.linecorp.armeria.common.HttpRequest; import com.linecorp.armeria.common.HttpStatus; import com.linecorp.armeria.common.RequestContext; -import com.linecorp.armeria.common.SessionProtocol; import com.linecorp.armeria.common.logging.RequestLog; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpClientAttributesGetter; -import io.opentelemetry.semconv.trace.attributes.SemanticAttributes; import java.util.List; import javax.annotation.Nullable; @@ -45,16 +43,6 @@ public Integer getStatusCode( return null; } - @Override - public String getFlavor(RequestContext ctx, @Nullable RequestLog requestLog) { - SessionProtocol protocol = ctx.sessionProtocol(); - if (protocol.isMultiplex()) { - return SemanticAttributes.HttpFlavorValues.HTTP_2_0; - } else { - return SemanticAttributes.HttpFlavorValues.HTTP_1_1; - } - } - @Override public List getResponseHeader(RequestContext ctx, RequestLog requestLog, String name) { return requestLog.responseHeaders().getAll(name); diff --git a/instrumentation/armeria-1.3/library/src/main/java/io/opentelemetry/instrumentation/armeria/v1_3/internal/ArmeriaNetClientAttributesGetter.java b/instrumentation/armeria-1.3/library/src/main/java/io/opentelemetry/instrumentation/armeria/v1_3/internal/ArmeriaNetClientAttributesGetter.java index 094589bab97d..8a80b024bfe9 100644 --- a/instrumentation/armeria-1.3/library/src/main/java/io/opentelemetry/instrumentation/armeria/v1_3/internal/ArmeriaNetClientAttributesGetter.java +++ b/instrumentation/armeria-1.3/library/src/main/java/io/opentelemetry/instrumentation/armeria/v1_3/internal/ArmeriaNetClientAttributesGetter.java @@ -7,6 +7,7 @@ import com.linecorp.armeria.common.HttpRequest; import com.linecorp.armeria.common.RequestContext; +import com.linecorp.armeria.common.SessionProtocol; import com.linecorp.armeria.common.logging.RequestLog; import io.opentelemetry.instrumentation.api.instrumenter.net.InetSocketAddressNetClientAttributesGetter; import io.opentelemetry.semconv.trace.attributes.SemanticAttributes; @@ -26,6 +27,17 @@ public String getTransport(RequestContext ctx, @Nullable RequestLog requestLog) return SemanticAttributes.NetTransportValues.IP_TCP; } + @Override + public String getProtocolName(RequestContext ctx, @Nullable RequestLog requestLog) { + return "http"; + } + + @Override + public String getProtocolVersion(RequestContext ctx, @Nullable RequestLog requestLog) { + SessionProtocol protocol = ctx.sessionProtocol(); + return protocol.isMultiplex() ? "2.0" : "1.1"; + } + @Nullable @Override public String getPeerName(RequestContext ctx) { diff --git a/instrumentation/async-http-client/async-http-client-1.9/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/v1_9/AsyncHttpClientHttpAttributesGetter.java b/instrumentation/async-http-client/async-http-client-1.9/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/v1_9/AsyncHttpClientHttpAttributesGetter.java index ab70c37612dd..d52ae0f0488d 100644 --- a/instrumentation/async-http-client/async-http-client-1.9/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/v1_9/AsyncHttpClientHttpAttributesGetter.java +++ b/instrumentation/async-http-client/async-http-client-1.9/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/v1_9/AsyncHttpClientHttpAttributesGetter.java @@ -8,7 +8,6 @@ import com.ning.http.client.Request; import com.ning.http.client.Response; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpClientAttributesGetter; -import io.opentelemetry.semconv.trace.attributes.SemanticAttributes; import java.util.Collections; import java.util.List; import javax.annotation.Nullable; @@ -36,11 +35,6 @@ public Integer getStatusCode(Request request, Response response, @Nullable Throw return response.getStatusCode(); } - @Override - public String getFlavor(Request request, @Nullable Response response) { - return SemanticAttributes.HttpFlavorValues.HTTP_1_1; - } - @Override public List getResponseHeader(Request request, Response response, String name) { return response.getHeaders().getOrDefault(name, Collections.emptyList()); diff --git a/instrumentation/async-http-client/async-http-client-1.9/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/v1_9/AsyncHttpClientNetAttributesGetter.java b/instrumentation/async-http-client/async-http-client-1.9/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/v1_9/AsyncHttpClientNetAttributesGetter.java index f7beefb39a61..c6acad7f073e 100644 --- a/instrumentation/async-http-client/async-http-client-1.9/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/v1_9/AsyncHttpClientNetAttributesGetter.java +++ b/instrumentation/async-http-client/async-http-client-1.9/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/v1_9/AsyncHttpClientNetAttributesGetter.java @@ -19,6 +19,18 @@ public String getTransport(Request request, @Nullable Response response) { return SemanticAttributes.NetTransportValues.IP_TCP; } + @Nullable + @Override + public String getProtocolName(Request request, @Nullable Response response) { + return null; + } + + @Nullable + @Override + public String getProtocolVersion(Request request, @Nullable Response response) { + return null; + } + @Override public String getPeerName(Request request) { return request.getUri().getHost(); diff --git a/instrumentation/async-http-client/async-http-client-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/v2_0/AsyncHttpClientHttpAttributesGetter.java b/instrumentation/async-http-client/async-http-client-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/v2_0/AsyncHttpClientHttpAttributesGetter.java index 8e09f846bdd2..ab8b0d75228c 100644 --- a/instrumentation/async-http-client/async-http-client-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/v2_0/AsyncHttpClientHttpAttributesGetter.java +++ b/instrumentation/async-http-client/async-http-client-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/v2_0/AsyncHttpClientHttpAttributesGetter.java @@ -6,7 +6,6 @@ package io.opentelemetry.javaagent.instrumentation.asynchttpclient.v2_0; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpClientAttributesGetter; -import io.opentelemetry.semconv.trace.attributes.SemanticAttributes; import java.util.List; import javax.annotation.Nullable; import org.asynchttpclient.Response; @@ -35,11 +34,6 @@ public Integer getStatusCode( return response.getStatusCode(); } - @Override - public String getFlavor(RequestContext requestContext, @Nullable Response response) { - return SemanticAttributes.HttpFlavorValues.HTTP_1_1; - } - @Override public List getResponseHeader( RequestContext requestContext, Response response, String name) { diff --git a/instrumentation/async-http-client/async-http-client-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/v2_0/AsyncHttpClientNetAttributesGetter.java b/instrumentation/async-http-client/async-http-client-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/v2_0/AsyncHttpClientNetAttributesGetter.java index c7120b7b8a14..4f43c0426c9a 100644 --- a/instrumentation/async-http-client/async-http-client-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/v2_0/AsyncHttpClientNetAttributesGetter.java +++ b/instrumentation/async-http-client/async-http-client-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/v2_0/AsyncHttpClientNetAttributesGetter.java @@ -5,11 +5,15 @@ package io.opentelemetry.javaagent.instrumentation.asynchttpclient.v2_0; +import io.netty.handler.codec.http.HttpMessage; +import io.netty.handler.codec.http.HttpVersion; import io.opentelemetry.instrumentation.api.instrumenter.net.InetSocketAddressNetClientAttributesGetter; import io.opentelemetry.semconv.trace.attributes.SemanticAttributes; import java.net.InetSocketAddress; +import java.util.Optional; import javax.annotation.Nullable; import org.asynchttpclient.Response; +import org.asynchttpclient.netty.request.NettyRequest; final class AsyncHttpClientNetAttributesGetter extends InetSocketAddressNetClientAttributesGetter { @@ -21,13 +25,35 @@ public String getTransport(RequestContext request, @Nullable Response response) @Nullable @Override - public String getPeerName(RequestContext requestContext) { - return requestContext.getRequest().getUri().getHost(); + public String getProtocolName(RequestContext request, @Nullable Response response) { + return Optional.of(request) + .map(RequestContext::getNettyRequest) + .map(NettyRequest::getHttpRequest) + .map(HttpMessage::getProtocolVersion) + .map(HttpVersion::protocolName) + .orElse(null); + } + + @Nullable + @Override + public String getProtocolVersion(RequestContext request, @Nullable Response response) { + return Optional.of(request) + .map(RequestContext::getNettyRequest) + .map(NettyRequest::getHttpRequest) + .map(HttpMessage::getProtocolVersion) + .map(p -> p.majorVersion() + "." + p.minorVersion()) + .orElse(null); + } + + @Nullable + @Override + public String getPeerName(RequestContext request) { + return request.getRequest().getUri().getHost(); } @Override - public Integer getPeerPort(RequestContext requestContext) { - return requestContext.getRequest().getUri().getPort(); + public Integer getPeerPort(RequestContext request) { + return request.getRequest().getUri().getPort(); } @Override diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/groovy/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/Aws1ClientTest.groovy b/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/groovy/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/Aws1ClientTest.groovy index 7eee03798d72..5f6226320ab4 100644 --- a/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/groovy/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/Aws1ClientTest.groovy +++ b/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/groovy/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/Aws1ClientTest.groovy @@ -14,6 +14,7 @@ import com.amazonaws.services.s3.AmazonS3Client import com.amazonaws.services.s3.AmazonS3ClientBuilder import io.opentelemetry.api.trace.Span import io.opentelemetry.api.trace.SpanKind +import io.opentelemetry.instrumentation.api.instrumenter.net.internal.NetAttributes import io.opentelemetry.instrumentation.awssdk.v1_11.AbstractAws1ClientTest import io.opentelemetry.instrumentation.test.AgentTestTrait import io.opentelemetry.semconv.trace.attributes.SemanticAttributes @@ -100,7 +101,6 @@ class Aws1ClientTest extends AbstractAws1ClientTest implements AgentTestTrait { "$SemanticAttributes.NET_TRANSPORT" IP_TCP "$SemanticAttributes.HTTP_URL" "https://s3.amazonaws.com" "$SemanticAttributes.HTTP_METHOD" "HEAD" - "$SemanticAttributes.HTTP_FLAVOR" "1.1" "$SemanticAttributes.NET_PEER_NAME" "s3.amazonaws.com" "$SemanticAttributes.RPC_SYSTEM" "aws-api" "$SemanticAttributes.RPC_SERVICE" "Amazon S3" diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test_before_1_11_106/groovy/Aws0ClientTest.groovy b/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test_before_1_11_106/groovy/Aws0ClientTest.groovy index 089e7afbabbb..f0981d7bbd91 100644 --- a/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test_before_1_11_106/groovy/Aws0ClientTest.groovy +++ b/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test_before_1_11_106/groovy/Aws0ClientTest.groovy @@ -109,8 +109,9 @@ class Aws0ClientTest extends AgentInstrumentationSpecification { "$SemanticAttributes.HTTP_URL" "${server.httpUri()}" "$SemanticAttributes.HTTP_METHOD" "$method" "$SemanticAttributes.HTTP_STATUS_CODE" 200 - "$SemanticAttributes.HTTP_FLAVOR" "1.1" "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" Long + "net.protocol.name" "http" + "net.protocol.version" "1.1" "$SemanticAttributes.NET_PEER_PORT" server.httpPort() "$SemanticAttributes.NET_PEER_NAME" "127.0.0.1" "$SemanticAttributes.RPC_SYSTEM" "aws-api" @@ -172,7 +173,6 @@ class Aws0ClientTest extends AgentInstrumentationSpecification { "$SemanticAttributes.NET_TRANSPORT" IP_TCP "$SemanticAttributes.HTTP_URL" "http://localhost:${UNUSABLE_PORT}" "$SemanticAttributes.HTTP_METHOD" "$method" - "$SemanticAttributes.HTTP_FLAVOR" "1.1" "$SemanticAttributes.NET_PEER_PORT" 61 "$SemanticAttributes.NET_PEER_NAME" "localhost" "$SemanticAttributes.RPC_SYSTEM" "aws-api" @@ -221,7 +221,6 @@ class Aws0ClientTest extends AgentInstrumentationSpecification { "$SemanticAttributes.NET_TRANSPORT" IP_TCP "$SemanticAttributes.HTTP_URL" "https://s3.amazonaws.com" "$SemanticAttributes.HTTP_METHOD" "GET" - "$SemanticAttributes.HTTP_FLAVOR" "1.1" "$SemanticAttributes.NET_PEER_NAME" "s3.amazonaws.com" "$SemanticAttributes.RPC_SYSTEM" "aws-api" "$SemanticAttributes.RPC_SERVICE" "Amazon S3" @@ -265,7 +264,6 @@ class Aws0ClientTest extends AgentInstrumentationSpecification { "$SemanticAttributes.NET_TRANSPORT" IP_TCP "$SemanticAttributes.HTTP_URL" "${server.httpUri()}" "$SemanticAttributes.HTTP_METHOD" "GET" - "$SemanticAttributes.HTTP_FLAVOR" "1.1" "$SemanticAttributes.NET_PEER_PORT" server.httpPort() "$SemanticAttributes.NET_PEER_NAME" "127.0.0.1" "$SemanticAttributes.RPC_SYSTEM" "aws-api" diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AwsSdkHttpAttributesGetter.java b/instrumentation/aws-sdk/aws-sdk-1.11/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AwsSdkHttpAttributesGetter.java index 431232426cbb..345e235074fd 100644 --- a/instrumentation/aws-sdk/aws-sdk-1.11/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AwsSdkHttpAttributesGetter.java +++ b/instrumentation/aws-sdk/aws-sdk-1.11/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AwsSdkHttpAttributesGetter.java @@ -11,7 +11,6 @@ import com.amazonaws.Request; import com.amazonaws.Response; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpClientAttributesGetter; -import io.opentelemetry.semconv.trace.attributes.SemanticAttributes; import java.util.List; import javax.annotation.Nullable; @@ -22,12 +21,6 @@ public String getUrl(Request request) { return request.getEndpoint().toString(); } - @Override - @Nullable - public String getFlavor(Request request, @Nullable Response response) { - return SemanticAttributes.HttpFlavorValues.HTTP_1_1; - } - @Override public String getMethod(Request request) { return request.getHttpMethod().name(); diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AwsSdkNetAttributesGetter.java b/instrumentation/aws-sdk/aws-sdk-1.11/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AwsSdkNetAttributesGetter.java index 9723e807f921..10fede432bff 100644 --- a/instrumentation/aws-sdk/aws-sdk-1.11/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AwsSdkNetAttributesGetter.java +++ b/instrumentation/aws-sdk/aws-sdk-1.11/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AwsSdkNetAttributesGetter.java @@ -7,9 +7,13 @@ import com.amazonaws.Request; import com.amazonaws.Response; +import com.amazonaws.http.HttpResponse; import io.opentelemetry.instrumentation.api.instrumenter.net.NetClientAttributesGetter; import io.opentelemetry.semconv.trace.attributes.SemanticAttributes; +import java.util.Optional; import javax.annotation.Nullable; +import org.apache.http.ProtocolVersion; +import org.apache.http.client.methods.HttpRequestBase; class AwsSdkNetAttributesGetter implements NetClientAttributesGetter, Response> { @@ -18,6 +22,28 @@ public String getTransport(Request request, @Nullable Response response) { return SemanticAttributes.NetTransportValues.IP_TCP; } + @Nullable + @Override + public String getProtocolName(Request request, @Nullable Response response) { + return Optional.ofNullable(response) + .map(Response::getHttpResponse) + .map(HttpResponse::getHttpRequest) + .map(HttpRequestBase::getProtocolVersion) + .map(ProtocolVersion::getProtocol) + .orElse(null); + } + + @Nullable + @Override + public String getProtocolVersion(Request request, @Nullable Response response) { + return Optional.ofNullable(response) + .map(Response::getHttpResponse) + .map(HttpResponse::getHttpRequest) + .map(HttpRequestBase::getProtocolVersion) + .map(p -> p.getMajor() + "." + p.getMinor()) + .orElse(null); + } + @Override @Nullable public String getPeerName(Request request) { diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/groovy/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractAws1ClientTest.groovy b/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/groovy/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractAws1ClientTest.groovy index 0d12342c8be5..d408c7bea858 100644 --- a/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/groovy/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractAws1ClientTest.groovy +++ b/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/groovy/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractAws1ClientTest.groovy @@ -107,9 +107,10 @@ abstract class AbstractAws1ClientTest extends InstrumentationSpecification { "$SemanticAttributes.HTTP_URL" "${server.httpUri()}" "$SemanticAttributes.HTTP_METHOD" "$method" "$SemanticAttributes.HTTP_STATUS_CODE" 200 - "$SemanticAttributes.HTTP_FLAVOR" "1.1" "$SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH" { it == null || it instanceof Long } "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" Long + "net.protocol.name" "http" + "net.protocol.version" "1.1" "$SemanticAttributes.NET_PEER_PORT" server.httpPort() "$SemanticAttributes.NET_PEER_NAME" "127.0.0.1" "$SemanticAttributes.RPC_SYSTEM" "aws-api" @@ -186,7 +187,6 @@ abstract class AbstractAws1ClientTest extends InstrumentationSpecification { "$SemanticAttributes.NET_TRANSPORT" IP_TCP "$SemanticAttributes.HTTP_URL" "http://127.0.0.1:${UNUSABLE_PORT}" "$SemanticAttributes.HTTP_METHOD" "$method" - "$SemanticAttributes.HTTP_FLAVOR" "1.1" "$SemanticAttributes.NET_PEER_NAME" "127.0.0.1" "$SemanticAttributes.NET_PEER_PORT" 61 "$SemanticAttributes.RPC_SYSTEM" "aws-api" @@ -245,7 +245,6 @@ abstract class AbstractAws1ClientTest extends InstrumentationSpecification { "$SemanticAttributes.HTTP_METHOD" "GET" "$SemanticAttributes.NET_PEER_PORT" server.httpPort() "$SemanticAttributes.NET_PEER_NAME" "127.0.0.1" - "$SemanticAttributes.HTTP_FLAVOR" "1.1" "$SemanticAttributes.RPC_SYSTEM" "aws-api" "$SemanticAttributes.RPC_SERVICE" "Amazon S3" "$SemanticAttributes.RPC_METHOD" "GetObject" diff --git a/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/AwsSdkHttpAttributesGetter.java b/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/AwsSdkHttpAttributesGetter.java index cc069c9376e2..e18d1406f669 100644 --- a/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/AwsSdkHttpAttributesGetter.java +++ b/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/AwsSdkHttpAttributesGetter.java @@ -8,7 +8,6 @@ import static java.util.Collections.emptyList; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpClientAttributesGetter; -import io.opentelemetry.semconv.trace.attributes.SemanticAttributes; import java.util.List; import javax.annotation.Nullable; import software.amazon.awssdk.core.interceptor.ExecutionAttributes; @@ -25,12 +24,6 @@ public String getUrl(ExecutionAttributes request) { return httpRequest.getUri().toString(); } - @Override - @Nullable - public String getFlavor(ExecutionAttributes request, @Nullable SdkHttpResponse response) { - return SemanticAttributes.HttpFlavorValues.HTTP_1_1; - } - @Override public String getMethod(ExecutionAttributes request) { SdkHttpRequest httpRequest = diff --git a/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/AwsSdkNetAttributesGetter.java b/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/AwsSdkNetAttributesGetter.java index 23d6e732eaad..135ab629a5a7 100644 --- a/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/AwsSdkNetAttributesGetter.java +++ b/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/AwsSdkNetAttributesGetter.java @@ -20,6 +20,19 @@ public String getTransport(ExecutionAttributes request, @Nullable SdkHttpRespons return SemanticAttributes.NetTransportValues.IP_TCP; } + @Nullable + @Override + public String getProtocolName(ExecutionAttributes request, @Nullable SdkHttpResponse response) { + return null; + } + + @Nullable + @Override + public String getProtocolVersion( + ExecutionAttributes request, @Nullable SdkHttpResponse response) { + return null; + } + @Override @Nullable public String getPeerName(ExecutionAttributes request) { diff --git a/instrumentation/aws-sdk/aws-sdk-2.2/testing/src/main/groovy/io/opentelemetry/instrumentation/awssdk/v2_2/AbstractAws2ClientTest.groovy b/instrumentation/aws-sdk/aws-sdk-2.2/testing/src/main/groovy/io/opentelemetry/instrumentation/awssdk/v2_2/AbstractAws2ClientTest.groovy index 8504091db141..81bec5bbb0d4 100644 --- a/instrumentation/aws-sdk/aws-sdk-2.2/testing/src/main/groovy/io/opentelemetry/instrumentation/awssdk/v2_2/AbstractAws2ClientTest.groovy +++ b/instrumentation/aws-sdk/aws-sdk-2.2/testing/src/main/groovy/io/opentelemetry/instrumentation/awssdk/v2_2/AbstractAws2ClientTest.groovy @@ -168,7 +168,6 @@ abstract class AbstractAws2ClientTest extends InstrumentationSpecification { "$SemanticAttributes.HTTP_METHOD" "$method" "$SemanticAttributes.HTTP_STATUS_CODE" 200 "$SemanticAttributes.HTTP_USER_AGENT" { it.startsWith("aws-sdk-java/") } - "$SemanticAttributes.HTTP_FLAVOR" "1.1" "$SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH" { it == null || it instanceof Long } "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } "$SemanticAttributes.RPC_SYSTEM" "aws-api" @@ -208,7 +207,6 @@ abstract class AbstractAws2ClientTest extends InstrumentationSpecification { "$SemanticAttributes.HTTP_USER_AGENT" { it.startsWith("aws-sdk-java/") } "$SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH" { it == null || it instanceof Long } "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } - "$SemanticAttributes.HTTP_FLAVOR" "1.1" "$SemanticAttributes.RPC_SYSTEM" "aws-api" "$SemanticAttributes.RPC_SERVICE" "DynamoDb" "$SemanticAttributes.RPC_METHOD" "Query" @@ -243,7 +241,6 @@ abstract class AbstractAws2ClientTest extends InstrumentationSpecification { "$SemanticAttributes.HTTP_METHOD" "$method" "$SemanticAttributes.HTTP_STATUS_CODE" 200 "$SemanticAttributes.HTTP_USER_AGENT" { it.startsWith("aws-sdk-java/") } - "$SemanticAttributes.HTTP_FLAVOR" "1.1" "$SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH" { it == null || it instanceof Long } "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } "$SemanticAttributes.RPC_SYSTEM" "aws-api" @@ -356,7 +353,6 @@ abstract class AbstractAws2ClientTest extends InstrumentationSpecification { "$SemanticAttributes.NET_PEER_PORT" server.httpPort() "$SemanticAttributes.HTTP_URL" { it.startsWith("${server.httpUri()}${path}") } "$SemanticAttributes.HTTP_METHOD" "$method" - "$SemanticAttributes.HTTP_FLAVOR" "1.1" "$SemanticAttributes.HTTP_STATUS_CODE" 200 "$SemanticAttributes.HTTP_USER_AGENT" { it.startsWith("aws-sdk-java/") } "$SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH" { it == null || it instanceof Long } @@ -448,7 +444,6 @@ abstract class AbstractAws2ClientTest extends InstrumentationSpecification { "$SemanticAttributes.NET_PEER_PORT" server.httpPort() "$SemanticAttributes.HTTP_URL" { it.startsWith("${server.httpUri()}${path}") } "$SemanticAttributes.HTTP_METHOD" "$method" - "$SemanticAttributes.HTTP_FLAVOR" "1.1" "$SemanticAttributes.HTTP_STATUS_CODE" 200 "$SemanticAttributes.HTTP_USER_AGENT" { it.startsWith("aws-sdk-java/") } "$SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH" { it == null || it instanceof Long } @@ -550,7 +545,6 @@ abstract class AbstractAws2ClientTest extends InstrumentationSpecification { "$SemanticAttributes.NET_PEER_PORT" server.httpPort() "$SemanticAttributes.HTTP_URL" "${server.httpUri()}${path}" "$SemanticAttributes.HTTP_METHOD" "GET" - "$SemanticAttributes.HTTP_FLAVOR" "1.1" "$SemanticAttributes.RPC_SYSTEM" "aws-api" "$SemanticAttributes.RPC_SERVICE" "S3" "$SemanticAttributes.RPC_METHOD" "GetObject" diff --git a/instrumentation/cassandra/cassandra-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/cassandra/v3_0/CassandraNetAttributesGetter.java b/instrumentation/cassandra/cassandra-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/cassandra/v3_0/CassandraNetAttributesGetter.java index 6d95455e64af..128ba1f10d2a 100644 --- a/instrumentation/cassandra/cassandra-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/cassandra/v3_0/CassandraNetAttributesGetter.java +++ b/instrumentation/cassandra/cassandra-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/cassandra/v3_0/CassandraNetAttributesGetter.java @@ -19,6 +19,19 @@ public String getTransport(CassandraRequest request, @Nullable ExecutionInfo exe return null; } + @Nullable + @Override + public String getProtocolName(CassandraRequest request, @Nullable ExecutionInfo executionInfo) { + return null; + } + + @Nullable + @Override + public String getProtocolVersion( + CassandraRequest request, @Nullable ExecutionInfo executionInfo) { + return null; + } + @Nullable @Override public String getPeerName(CassandraRequest request) { diff --git a/instrumentation/cassandra/cassandra-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/cassandra/v4_0/CassandraNetAttributesGetter.java b/instrumentation/cassandra/cassandra-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/cassandra/v4_0/CassandraNetAttributesGetter.java index 5d3dd467e680..a19b7510be85 100644 --- a/instrumentation/cassandra/cassandra-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/cassandra/v4_0/CassandraNetAttributesGetter.java +++ b/instrumentation/cassandra/cassandra-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/cassandra/v4_0/CassandraNetAttributesGetter.java @@ -21,6 +21,19 @@ public String getTransport(CassandraRequest request, @Nullable ExecutionInfo exe return null; } + @Nullable + @Override + public String getProtocolName(CassandraRequest request, @Nullable ExecutionInfo executionInfo) { + return null; + } + + @Nullable + @Override + public String getProtocolVersion( + CassandraRequest request, @Nullable ExecutionInfo executionInfo) { + return null; + } + @Nullable @Override public String getPeerName(CassandraRequest request) { diff --git a/instrumentation/cassandra/cassandra-4.4/library/src/main/java/io/opentelemetry/instrumentation/cassandra/v4_4/CassandraNetAttributesGetter.java b/instrumentation/cassandra/cassandra-4.4/library/src/main/java/io/opentelemetry/instrumentation/cassandra/v4_4/CassandraNetAttributesGetter.java index 27e64d5e302a..5a6afbde946c 100644 --- a/instrumentation/cassandra/cassandra-4.4/library/src/main/java/io/opentelemetry/instrumentation/cassandra/v4_4/CassandraNetAttributesGetter.java +++ b/instrumentation/cassandra/cassandra-4.4/library/src/main/java/io/opentelemetry/instrumentation/cassandra/v4_4/CassandraNetAttributesGetter.java @@ -21,6 +21,20 @@ public String getTransport(CassandraRequest request, @Nullable ExecutionInfo exe return null; } + @Nullable + @Override + public String getProtocolName( + CassandraRequest cassandraRequest, @Nullable ExecutionInfo executionInfo) { + return null; + } + + @Nullable + @Override + public String getProtocolVersion( + CassandraRequest cassandraRequest, @Nullable ExecutionInfo executionInfo) { + return null; + } + @Nullable @Override public String getPeerName(CassandraRequest request) { diff --git a/instrumentation/couchbase/couchbase-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/couchbase/v2_0/CouchbaseNetAttributesGetter.java b/instrumentation/couchbase/couchbase-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/couchbase/v2_0/CouchbaseNetAttributesGetter.java index ff971d4f19ab..03cfac321c53 100644 --- a/instrumentation/couchbase/couchbase-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/couchbase/v2_0/CouchbaseNetAttributesGetter.java +++ b/instrumentation/couchbase/couchbase-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/couchbase/v2_0/CouchbaseNetAttributesGetter.java @@ -21,6 +21,19 @@ public String getTransport(CouchbaseRequestInfo couchbaseRequest, @Nullable Void : null; } + @Nullable + @Override + public String getProtocolName(CouchbaseRequestInfo couchbaseRequestInfo, @Nullable Void unused) { + return null; + } + + @Nullable + @Override + public String getProtocolVersion( + CouchbaseRequestInfo couchbaseRequestInfo, @Nullable Void unused) { + return null; + } + @Nullable @Override public String getPeerName(CouchbaseRequestInfo couchbaseRequest) { diff --git a/instrumentation/elasticsearch/elasticsearch-rest-5.0/javaagent/src/test/groovy/ElasticsearchRest5Test.groovy b/instrumentation/elasticsearch/elasticsearch-rest-5.0/javaagent/src/test/groovy/ElasticsearchRest5Test.groovy index 7ef9c892deaf..93928ff0f0db 100644 --- a/instrumentation/elasticsearch/elasticsearch-rest-5.0/javaagent/src/test/groovy/ElasticsearchRest5Test.groovy +++ b/instrumentation/elasticsearch/elasticsearch-rest-5.0/javaagent/src/test/groovy/ElasticsearchRest5Test.groovy @@ -91,7 +91,8 @@ class ElasticsearchRest5Test extends AgentInstrumentationSpecification { "$SemanticAttributes.NET_PEER_NAME" httpHost.hostName "$SemanticAttributes.NET_PEER_PORT" httpHost.port "$SemanticAttributes.HTTP_METHOD" "GET" - "$SemanticAttributes.HTTP_FLAVOR" SemanticAttributes.HttpFlavorValues.HTTP_1_1 + "net.protocol.name" "http" + "net.protocol.version" "1.1" "$SemanticAttributes.HTTP_URL" "${httpHost.toURI()}/_cluster/health" "$SemanticAttributes.HTTP_STATUS_CODE" 200 "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" Long @@ -164,7 +165,8 @@ class ElasticsearchRest5Test extends AgentInstrumentationSpecification { "$SemanticAttributes.NET_PEER_NAME" httpHost.hostName "$SemanticAttributes.NET_PEER_PORT" httpHost.port "$SemanticAttributes.HTTP_METHOD" "GET" - "$SemanticAttributes.HTTP_FLAVOR" SemanticAttributes.HttpFlavorValues.HTTP_1_1 + "net.protocol.name" "http" + "net.protocol.version" "1.1" "$SemanticAttributes.HTTP_URL" "${httpHost.toURI()}/_cluster/health" "$SemanticAttributes.HTTP_STATUS_CODE" 200 "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" Long diff --git a/instrumentation/elasticsearch/elasticsearch-rest-6.4/javaagent/src/test/groovy/ElasticsearchRest6Test.groovy b/instrumentation/elasticsearch/elasticsearch-rest-6.4/javaagent/src/test/groovy/ElasticsearchRest6Test.groovy index 5ab11bcadb90..4259e4320dee 100644 --- a/instrumentation/elasticsearch/elasticsearch-rest-6.4/javaagent/src/test/groovy/ElasticsearchRest6Test.groovy +++ b/instrumentation/elasticsearch/elasticsearch-rest-6.4/javaagent/src/test/groovy/ElasticsearchRest6Test.groovy @@ -85,7 +85,8 @@ class ElasticsearchRest6Test extends AgentInstrumentationSpecification { "$SemanticAttributes.NET_PEER_NAME" httpHost.hostName "$SemanticAttributes.NET_PEER_PORT" httpHost.port "$SemanticAttributes.HTTP_METHOD" "GET" - "$SemanticAttributes.HTTP_FLAVOR" SemanticAttributes.HttpFlavorValues.HTTP_1_1 + "net.protocol.name" "http" + "net.protocol.version" "1.1" "$SemanticAttributes.HTTP_URL" "${httpHost.toURI()}/_cluster/health" "$SemanticAttributes.HTTP_STATUS_CODE" 200 "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" Long @@ -157,7 +158,8 @@ class ElasticsearchRest6Test extends AgentInstrumentationSpecification { "$SemanticAttributes.NET_PEER_NAME" httpHost.hostName "$SemanticAttributes.NET_PEER_PORT" httpHost.port "$SemanticAttributes.HTTP_METHOD" "GET" - "$SemanticAttributes.HTTP_FLAVOR" SemanticAttributes.HttpFlavorValues.HTTP_1_1 + "net.protocol.name" "http" + "net.protocol.version" "1.1" "$SemanticAttributes.HTTP_URL" "${httpHost.toURI()}/_cluster/health" "$SemanticAttributes.HTTP_STATUS_CODE" 200 "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" Long diff --git a/instrumentation/elasticsearch/elasticsearch-rest-7.0/javaagent/src/test/groovy/ElasticsearchRest7Test.groovy b/instrumentation/elasticsearch/elasticsearch-rest-7.0/javaagent/src/test/groovy/ElasticsearchRest7Test.groovy index 41d8e245d989..4fe41f205b1b 100644 --- a/instrumentation/elasticsearch/elasticsearch-rest-7.0/javaagent/src/test/groovy/ElasticsearchRest7Test.groovy +++ b/instrumentation/elasticsearch/elasticsearch-rest-7.0/javaagent/src/test/groovy/ElasticsearchRest7Test.groovy @@ -84,7 +84,8 @@ class ElasticsearchRest7Test extends AgentInstrumentationSpecification { "$SemanticAttributes.NET_PEER_NAME" httpHost.hostName "$SemanticAttributes.NET_PEER_PORT" httpHost.port "$SemanticAttributes.HTTP_METHOD" "GET" - "$SemanticAttributes.HTTP_FLAVOR" SemanticAttributes.HttpFlavorValues.HTTP_1_1 + "net.protocol.name" "http" + "net.protocol.version" "1.1" "$SemanticAttributes.HTTP_URL" "${httpHost.toURI()}/_cluster/health" "$SemanticAttributes.HTTP_STATUS_CODE" 200 "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" Long @@ -156,7 +157,8 @@ class ElasticsearchRest7Test extends AgentInstrumentationSpecification { "$SemanticAttributes.NET_PEER_NAME" httpHost.hostName "$SemanticAttributes.NET_PEER_PORT" httpHost.port "$SemanticAttributes.HTTP_METHOD" "GET" - "$SemanticAttributes.HTTP_FLAVOR" SemanticAttributes.HttpFlavorValues.HTTP_1_1 + "net.protocol.name" "http" + "net.protocol.version" "1.1" "$SemanticAttributes.HTTP_URL" "${httpHost.toURI()}/_cluster/health" "$SemanticAttributes.HTTP_STATUS_CODE" 200 "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" Long diff --git a/instrumentation/elasticsearch/elasticsearch-rest-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/ElasticsearchRestNetResponseAttributesGetter.java b/instrumentation/elasticsearch/elasticsearch-rest-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/ElasticsearchRestNetResponseAttributesGetter.java index 71779c0ba3bf..8ea8139ed3b1 100644 --- a/instrumentation/elasticsearch/elasticsearch-rest-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/ElasticsearchRestNetResponseAttributesGetter.java +++ b/instrumentation/elasticsearch/elasticsearch-rest-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/ElasticsearchRestNetResponseAttributesGetter.java @@ -19,6 +19,18 @@ public String getTransport(ElasticsearchRestRequest request, Response response) return SemanticAttributes.NetTransportValues.IP_TCP; } + @Nullable + @Override + public String getProtocolName(ElasticsearchRestRequest request, @Nullable Response response) { + return null; + } + + @Nullable + @Override + public String getProtocolVersion(ElasticsearchRestRequest request, @Nullable Response response) { + return null; + } + @Override @Nullable public String getPeerName(ElasticsearchRestRequest request) { diff --git a/instrumentation/elasticsearch/elasticsearch-transport-6.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/transport/v6_0/Elasticsearch6TransportNetAttributesGetter.java b/instrumentation/elasticsearch/elasticsearch-transport-6.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/transport/v6_0/Elasticsearch6TransportNetAttributesGetter.java index c2d82509f096..df60a4ae1992 100644 --- a/instrumentation/elasticsearch/elasticsearch-transport-6.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/transport/v6_0/Elasticsearch6TransportNetAttributesGetter.java +++ b/instrumentation/elasticsearch/elasticsearch-transport-6.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/transport/v6_0/Elasticsearch6TransportNetAttributesGetter.java @@ -19,6 +19,20 @@ public String getTransport(ElasticTransportRequest request, @Nullable ActionResp return null; } + @Nullable + @Override + public String getProtocolName( + ElasticTransportRequest request, @Nullable ActionResponse actionResponse) { + return null; + } + + @Nullable + @Override + public String getProtocolVersion( + ElasticTransportRequest request, @Nullable ActionResponse actionResponse) { + return null; + } + @Nullable @Override public String getPeerName(ElasticTransportRequest request) { diff --git a/instrumentation/elasticsearch/elasticsearch-transport-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/transport/ElasticTransportNetResponseAttributesGetter.java b/instrumentation/elasticsearch/elasticsearch-transport-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/transport/ElasticTransportNetResponseAttributesGetter.java index 39cc4993a3ce..3374564d496b 100644 --- a/instrumentation/elasticsearch/elasticsearch-transport-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/transport/ElasticTransportNetResponseAttributesGetter.java +++ b/instrumentation/elasticsearch/elasticsearch-transport-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/transport/ElasticTransportNetResponseAttributesGetter.java @@ -18,6 +18,20 @@ public String getTransport(ElasticTransportRequest request, @Nullable ActionResp return null; } + @Nullable + @Override + public String getProtocolName( + ElasticTransportRequest request, @Nullable ActionResponse actionResponse) { + return null; + } + + @Nullable + @Override + public String getProtocolVersion( + ElasticTransportRequest request, @Nullable ActionResponse actionResponse) { + return null; + } + @Override @Nullable public String getPeerName(ElasticTransportRequest request) { diff --git a/instrumentation/google-http-client-1.19/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/googlehttpclient/GoogleHttpClientHttpAttributesGetter.java b/instrumentation/google-http-client-1.19/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/googlehttpclient/GoogleHttpClientHttpAttributesGetter.java index f0a836276400..83d953900855 100644 --- a/instrumentation/google-http-client-1.19/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/googlehttpclient/GoogleHttpClientHttpAttributesGetter.java +++ b/instrumentation/google-http-client-1.19/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/googlehttpclient/GoogleHttpClientHttpAttributesGetter.java @@ -8,7 +8,6 @@ import com.google.api.client.http.HttpRequest; import com.google.api.client.http.HttpResponse; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpClientAttributesGetter; -import io.opentelemetry.semconv.trace.attributes.SemanticAttributes; import java.util.List; import javax.annotation.Nullable; @@ -31,11 +30,6 @@ public List getRequestHeader(HttpRequest httpRequest, String name) { return httpRequest.getHeaders().getHeaderStringValues(name); } - @Override - public String getFlavor(HttpRequest httpRequest, @Nullable HttpResponse httpResponse) { - return SemanticAttributes.HttpFlavorValues.HTTP_1_1; - } - @Override public Integer getStatusCode( HttpRequest httpRequest, HttpResponse httpResponse, @Nullable Throwable error) { diff --git a/instrumentation/google-http-client-1.19/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/googlehttpclient/GoogleHttpClientNetAttributesGetter.java b/instrumentation/google-http-client-1.19/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/googlehttpclient/GoogleHttpClientNetAttributesGetter.java index b1f24d861a77..fd6ee142ae93 100644 --- a/instrumentation/google-http-client-1.19/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/googlehttpclient/GoogleHttpClientNetAttributesGetter.java +++ b/instrumentation/google-http-client-1.19/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/googlehttpclient/GoogleHttpClientNetAttributesGetter.java @@ -19,6 +19,18 @@ public String getTransport(HttpRequest request, @Nullable HttpResponse response) return SemanticAttributes.NetTransportValues.IP_TCP; } + @Nullable + @Override + public String getProtocolName(HttpRequest request, @Nullable HttpResponse response) { + return null; + } + + @Nullable + @Override + public String getProtocolVersion(HttpRequest request, @Nullable HttpResponse response) { + return null; + } + @Override @Nullable public String getPeerName(HttpRequest request) { diff --git a/instrumentation/google-http-client-1.19/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/googlehttpclient/AbstractGoogleHttpClientTest.java b/instrumentation/google-http-client-1.19/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/googlehttpclient/AbstractGoogleHttpClientTest.java index 812965c1404c..ef28596f1915 100644 --- a/instrumentation/google-http-client-1.19/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/googlehttpclient/AbstractGoogleHttpClientTest.java +++ b/instrumentation/google-http-client-1.19/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/googlehttpclient/AbstractGoogleHttpClientTest.java @@ -5,6 +5,7 @@ package io.opentelemetry.javaagent.instrumentation.googlehttpclient; +import static io.opentelemetry.api.common.AttributeKey.stringKey; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat; import com.google.api.client.http.GenericUrl; @@ -13,6 +14,7 @@ import com.google.api.client.http.HttpResponse; import com.google.api.client.http.javanet.NetHttpTransport; import com.google.api.client.util.ClassInfo; +import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.http.AbstractHttpClientTest; @@ -22,8 +24,10 @@ import io.opentelemetry.semconv.trace.attributes.SemanticAttributes; import java.net.URI; import java.util.Collections; +import java.util.HashSet; import java.util.Locale; import java.util.Map; +import java.util.Set; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; @@ -92,7 +96,7 @@ void errorTracesWhenExceptionIsNotThrown() throws Exception { .hasAttributesSatisfying( attrs -> assertThat(attrs) - .hasSize(8) + .hasSize(7) .containsEntry( SemanticAttributes.NET_TRANSPORT, SemanticAttributes.NetTransportValues.IP_TCP) @@ -105,10 +109,7 @@ void errorTracesWhenExceptionIsNotThrown() throws Exception { .containsEntry(SemanticAttributes.HTTP_STATUS_CODE, 500) .hasEntrySatisfying( SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH, - length -> assertThat(length).isPositive()) - .containsEntry( - SemanticAttributes.HTTP_FLAVOR, - SemanticAttributes.HttpFlavorValues.HTTP_1_1)), + length -> assertThat(length).isPositive())), span -> span.hasKind(SpanKind.SERVER).hasParent(trace.getSpan(0)))); } @@ -124,5 +125,14 @@ protected void configure(HttpClientTestOptions.Builder optionsBuilder) { // Circular redirects don't throw an exception with Google Http Client optionsBuilder.disableTestCircularRedirects(); + + optionsBuilder.setHttpAttributes( + uri -> { + Set> attributes = + new HashSet<>(HttpClientTestOptions.DEFAULT_HTTP_ATTRIBUTES); + attributes.remove(stringKey("net.protocol.name")); + attributes.remove(stringKey("net.protocol.version")); + return attributes; + }); } } diff --git a/instrumentation/grpc-1.6/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/internal/GrpcNetClientAttributesGetter.java b/instrumentation/grpc-1.6/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/internal/GrpcNetClientAttributesGetter.java index 0fdb82fb3612..8bbd18ecda7d 100644 --- a/instrumentation/grpc-1.6/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/internal/GrpcNetClientAttributesGetter.java +++ b/instrumentation/grpc-1.6/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/internal/GrpcNetClientAttributesGetter.java @@ -25,6 +25,18 @@ public String getTransport(GrpcRequest request, @Nullable Status response) { return SemanticAttributes.NetTransportValues.IP_TCP; } + @Nullable + @Override + public String getProtocolName(GrpcRequest grpcRequest, @Nullable Status status) { + return null; + } + + @Nullable + @Override + public String getProtocolVersion(GrpcRequest grpcRequest, @Nullable Status status) { + return null; + } + @Nullable @Override public String getPeerName(GrpcRequest grpcRequest) { diff --git a/instrumentation/http-url-connection/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/httpurlconnection/HttpUrlHttpAttributesGetter.java b/instrumentation/http-url-connection/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/httpurlconnection/HttpUrlHttpAttributesGetter.java index a1a463857972..f4a727a4fbd9 100644 --- a/instrumentation/http-url-connection/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/httpurlconnection/HttpUrlHttpAttributesGetter.java +++ b/instrumentation/http-url-connection/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/httpurlconnection/HttpUrlHttpAttributesGetter.java @@ -9,7 +9,6 @@ import static java.util.Collections.singletonList; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpClientAttributesGetter; -import io.opentelemetry.semconv.trace.attributes.SemanticAttributes; import java.net.HttpURLConnection; import java.util.List; import javax.annotation.Nullable; @@ -33,11 +32,6 @@ public List getRequestHeader(HttpURLConnection connection, String name) return value == null ? emptyList() : singletonList(value); } - @Override - public String getFlavor(HttpURLConnection connection, @Nullable Integer statusCode) { - return SemanticAttributes.HttpFlavorValues.HTTP_1_1; - } - @Override public Integer getStatusCode( HttpURLConnection connection, Integer statusCode, @Nullable Throwable error) { diff --git a/instrumentation/http-url-connection/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/httpurlconnection/HttpUrlNetAttributesGetter.java b/instrumentation/http-url-connection/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/httpurlconnection/HttpUrlNetAttributesGetter.java index 53698d93e2b0..1f0bfebc2b25 100644 --- a/instrumentation/http-url-connection/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/httpurlconnection/HttpUrlNetAttributesGetter.java +++ b/instrumentation/http-url-connection/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/httpurlconnection/HttpUrlNetAttributesGetter.java @@ -18,6 +18,20 @@ public String getTransport(HttpURLConnection connection, @Nullable Integer statu return SemanticAttributes.NetTransportValues.IP_TCP; } + @Nullable + @Override + public String getProtocolName(HttpURLConnection connection, @Nullable Integer integer) { + // HttpURLConnection hardcodes the protocol name&version + return "http"; + } + + @Nullable + @Override + public String getProtocolVersion(HttpURLConnection connection, @Nullable Integer integer) { + // HttpURLConnection hardcodes the protocol name&version + return "1.1"; + } + @Override public String getPeerName(HttpURLConnection connection) { return connection.getURL().getHost(); diff --git a/instrumentation/http-url-connection/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/httpurlconnection/HttpUrlConnectionTest.java b/instrumentation/http-url-connection/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/httpurlconnection/HttpUrlConnectionTest.java index 897717cbf3f0..0b7712b31659 100644 --- a/instrumentation/http-url-connection/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/httpurlconnection/HttpUrlConnectionTest.java +++ b/instrumentation/http-url-connection/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/httpurlconnection/HttpUrlConnectionTest.java @@ -5,6 +5,7 @@ package io.opentelemetry.javaagent.instrumentation.httpurlconnection; +import static io.opentelemetry.api.common.AttributeKey.stringKey; import static io.opentelemetry.api.trace.SpanKind.CLIENT; import static io.opentelemetry.api.trace.SpanKind.SERVER; import static io.opentelemetry.javaagent.instrumentation.httpurlconnection.StreamUtils.readLines; @@ -136,12 +137,13 @@ public void traceRequest(boolean useCache) throws IOException { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo(SemanticAttributes.NET_TRANSPORT, IP_TCP), + equalTo(stringKey("net.protocol.name"), "http"), + equalTo(stringKey("net.protocol.version"), "1.1"), equalTo(SemanticAttributes.NET_PEER_NAME, "localhost"), equalTo(SemanticAttributes.NET_PEER_PORT, url.getPort()), equalTo(SemanticAttributes.HTTP_URL, url.toString()), equalTo(SemanticAttributes.HTTP_METHOD, "GET"), equalTo(SemanticAttributes.HTTP_STATUS_CODE, STATUS), - equalTo(SemanticAttributes.HTTP_FLAVOR, "1.1"), satisfies( SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH, AbstractLongAssert::isNotNegative)), @@ -153,12 +155,13 @@ public void traceRequest(boolean useCache) throws IOException { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo(SemanticAttributes.NET_TRANSPORT, IP_TCP), + equalTo(stringKey("net.protocol.name"), "http"), + equalTo(stringKey("net.protocol.version"), "1.1"), equalTo(SemanticAttributes.NET_PEER_NAME, "localhost"), equalTo(SemanticAttributes.NET_PEER_PORT, url.getPort()), equalTo(SemanticAttributes.HTTP_URL, url.toString()), equalTo(SemanticAttributes.HTTP_METHOD, "GET"), equalTo(SemanticAttributes.HTTP_STATUS_CODE, STATUS), - equalTo(SemanticAttributes.HTTP_FLAVOR, "1.1"), satisfies( SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH, AbstractLongAssert::isNotNegative)), @@ -191,12 +194,13 @@ public void testBrokenApiUsage() throws IOException { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo(SemanticAttributes.NET_TRANSPORT, IP_TCP), + equalTo(stringKey("net.protocol.name"), "http"), + equalTo(stringKey("net.protocol.version"), "1.1"), equalTo(SemanticAttributes.NET_PEER_NAME, "localhost"), equalTo(SemanticAttributes.NET_PEER_PORT, url.getPort()), equalTo(SemanticAttributes.HTTP_URL, url.toString()), equalTo(SemanticAttributes.HTTP_METHOD, "GET"), equalTo(SemanticAttributes.HTTP_STATUS_CODE, STATUS), - equalTo(SemanticAttributes.HTTP_FLAVOR, "1.1"), satisfies( SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH, AbstractLongAssert::isNotNegative)), @@ -242,12 +246,13 @@ public void testPostRequest() throws IOException { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo(SemanticAttributes.NET_TRANSPORT, IP_TCP), + equalTo(stringKey("net.protocol.name"), "http"), + equalTo(stringKey("net.protocol.version"), "1.1"), equalTo(SemanticAttributes.NET_PEER_NAME, "localhost"), equalTo(SemanticAttributes.NET_PEER_PORT, url.getPort()), equalTo(SemanticAttributes.HTTP_URL, url.toString()), equalTo(SemanticAttributes.HTTP_METHOD, "POST"), equalTo(SemanticAttributes.HTTP_STATUS_CODE, STATUS), - equalTo(SemanticAttributes.HTTP_FLAVOR, "1.1"), satisfies( SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH, AbstractLongAssert::isNotNegative), @@ -298,12 +303,13 @@ public void getOutputStreamShouldTransformGetIntoPost() throws IOException { .hasParent(trace.getSpan(0)) .hasAttributesSatisfyingExactly( equalTo(SemanticAttributes.NET_TRANSPORT, IP_TCP), + equalTo(stringKey("net.protocol.name"), "http"), + equalTo(stringKey("net.protocol.version"), "1.1"), equalTo(SemanticAttributes.NET_PEER_NAME, "localhost"), equalTo(SemanticAttributes.NET_PEER_PORT, url.getPort()), equalTo(SemanticAttributes.HTTP_URL, url.toString()), equalTo(SemanticAttributes.HTTP_METHOD, "POST"), equalTo(SemanticAttributes.HTTP_STATUS_CODE, STATUS), - equalTo(SemanticAttributes.HTTP_FLAVOR, "1.1"), satisfies( SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH, AbstractLongAssert::isNotNegative), diff --git a/instrumentation/http-url-connection/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/httpurlconnection/UrlConnectionTest.java b/instrumentation/http-url-connection/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/httpurlconnection/UrlConnectionTest.java index e53ce4396a22..1faab858efa3 100644 --- a/instrumentation/http-url-connection/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/httpurlconnection/UrlConnectionTest.java +++ b/instrumentation/http-url-connection/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/httpurlconnection/UrlConnectionTest.java @@ -5,6 +5,7 @@ package io.opentelemetry.javaagent.instrumentation.httpurlconnection; +import static io.opentelemetry.api.common.AttributeKey.stringKey; import static io.opentelemetry.api.trace.SpanKind.CLIENT; import static io.opentelemetry.api.trace.SpanKind.INTERNAL; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; @@ -65,10 +66,11 @@ public void traceRequestWithConnectionFailure(String scheme) { .hasException(thrown) .hasAttributesSatisfyingExactly( equalTo(SemanticAttributes.NET_TRANSPORT, IP_TCP), + equalTo(stringKey("net.protocol.name"), "http"), + equalTo(stringKey("net.protocol.version"), "1.1"), equalTo(SemanticAttributes.NET_PEER_NAME, "localhost"), equalTo(SemanticAttributes.NET_PEER_PORT, PortUtils.UNUSABLE_PORT), equalTo(SemanticAttributes.HTTP_URL, uri), - equalTo(SemanticAttributes.HTTP_METHOD, "GET"), - equalTo(SemanticAttributes.HTTP_FLAVOR, "1.1")))); + equalTo(SemanticAttributes.HTTP_METHOD, "GET")))); } } diff --git a/instrumentation/java-http-client/library/src/main/java/io/opentelemetry/instrumentation/httpclient/internal/JavaHttpClientAttributesGetter.java b/instrumentation/java-http-client/library/src/main/java/io/opentelemetry/instrumentation/httpclient/internal/JavaHttpClientAttributesGetter.java index c43e6e4ff8fd..42215aae1a1b 100644 --- a/instrumentation/java-http-client/library/src/main/java/io/opentelemetry/instrumentation/httpclient/internal/JavaHttpClientAttributesGetter.java +++ b/instrumentation/java-http-client/library/src/main/java/io/opentelemetry/instrumentation/httpclient/internal/JavaHttpClientAttributesGetter.java @@ -6,8 +6,6 @@ package io.opentelemetry.instrumentation.httpclient.internal; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpClientAttributesGetter; -import io.opentelemetry.semconv.trace.attributes.SemanticAttributes; -import java.net.http.HttpClient.Version; import java.net.http.HttpRequest; import java.net.http.HttpResponse; import java.util.List; @@ -42,14 +40,6 @@ public Integer getStatusCode( return httpResponse.statusCode(); } - @Override - public String getFlavor(HttpRequest httpRequest, @Nullable HttpResponse httpResponse) { - if (httpResponse != null && httpResponse.version() == Version.HTTP_2) { - return SemanticAttributes.HttpFlavorValues.HTTP_2_0; - } - return SemanticAttributes.HttpFlavorValues.HTTP_1_1; - } - @Override public List getResponseHeader( HttpRequest httpRequest, HttpResponse httpResponse, String name) { diff --git a/instrumentation/java-http-client/library/src/main/java/io/opentelemetry/instrumentation/httpclient/internal/JavaHttpClientNetAttributesGetter.java b/instrumentation/java-http-client/library/src/main/java/io/opentelemetry/instrumentation/httpclient/internal/JavaHttpClientNetAttributesGetter.java index e79bc2bdff2c..aadd09378c3f 100644 --- a/instrumentation/java-http-client/library/src/main/java/io/opentelemetry/instrumentation/httpclient/internal/JavaHttpClientNetAttributesGetter.java +++ b/instrumentation/java-http-client/library/src/main/java/io/opentelemetry/instrumentation/httpclient/internal/JavaHttpClientNetAttributesGetter.java @@ -7,6 +7,7 @@ import io.opentelemetry.instrumentation.api.instrumenter.net.NetClientAttributesGetter; import io.opentelemetry.semconv.trace.attributes.SemanticAttributes; +import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; import javax.annotation.Nullable; @@ -19,19 +20,46 @@ public class JavaHttpClientNetAttributesGetter implements NetClientAttributesGetter> { @Override - public String getTransport(HttpRequest httpRequest, @Nullable HttpResponse response) { + public String getTransport(HttpRequest request, @Nullable HttpResponse response) { return SemanticAttributes.NetTransportValues.IP_TCP; } + @Nullable + @Override + public String getProtocolName(HttpRequest request, @Nullable HttpResponse response) { + return "http"; + } + + @Nullable + @Override + public String getProtocolVersion(HttpRequest request, @Nullable HttpResponse response) { + HttpClient.Version version; + if (response != null) { + version = response.version(); + } else { + version = request.version().orElse(null); + } + if (version == null) { + return null; + } + switch (version) { + case HTTP_1_1: + return "1.1"; + case HTTP_2: + return "2.0"; + } + return null; + } + @Override @Nullable - public String getPeerName(HttpRequest httpRequest) { - return httpRequest.uri().getHost(); + public String getPeerName(HttpRequest request) { + return request.uri().getHost(); } @Override @Nullable - public Integer getPeerPort(HttpRequest httpRequest) { - return httpRequest.uri().getPort(); + public Integer getPeerPort(HttpRequest request) { + return request.uri().getPort(); } } diff --git a/instrumentation/jaxrs-client/jaxrs-client-1.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrsclient/v1_1/JaxRsClientHttpAttributesGetter.java b/instrumentation/jaxrs-client/jaxrs-client-1.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrsclient/v1_1/JaxRsClientHttpAttributesGetter.java index 6b3f4566f143..c34540100945 100644 --- a/instrumentation/jaxrs-client/jaxrs-client-1.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrsclient/v1_1/JaxRsClientHttpAttributesGetter.java +++ b/instrumentation/jaxrs-client/jaxrs-client-1.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrsclient/v1_1/JaxRsClientHttpAttributesGetter.java @@ -10,7 +10,6 @@ import com.sun.jersey.api.client.ClientRequest; import com.sun.jersey.api.client.ClientResponse; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpClientAttributesGetter; -import io.opentelemetry.semconv.trace.attributes.SemanticAttributes; import java.util.ArrayList; import java.util.List; import javax.annotation.Nullable; @@ -42,11 +41,6 @@ public List getRequestHeader(ClientRequest httpRequest, String name) { return stringHeaders; } - @Override - public String getFlavor(ClientRequest httpRequest, @Nullable ClientResponse httpResponse) { - return SemanticAttributes.HttpFlavorValues.HTTP_1_1; - } - @Override public Integer getStatusCode( ClientRequest httpRequest, ClientResponse httpResponse, @Nullable Throwable error) { diff --git a/instrumentation/jaxrs-client/jaxrs-client-1.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrsclient/v1_1/JaxRsClientNetAttributesGetter.java b/instrumentation/jaxrs-client/jaxrs-client-1.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrsclient/v1_1/JaxRsClientNetAttributesGetter.java index 6c29adaead1a..6537bbe7d148 100644 --- a/instrumentation/jaxrs-client/jaxrs-client-1.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrsclient/v1_1/JaxRsClientNetAttributesGetter.java +++ b/instrumentation/jaxrs-client/jaxrs-client-1.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrsclient/v1_1/JaxRsClientNetAttributesGetter.java @@ -19,6 +19,18 @@ public String getTransport(ClientRequest request, @Nullable ClientResponse respo return SemanticAttributes.NetTransportValues.IP_TCP; } + @Nullable + @Override + public String getProtocolName(ClientRequest request, @Nullable ClientResponse response) { + return null; + } + + @Nullable + @Override + public String getProtocolVersion(ClientRequest request, @Nullable ClientResponse response) { + return null; + } + @Override @Nullable public String getPeerName(ClientRequest request) { diff --git a/instrumentation/jaxrs-client/jaxrs-client-2.0-testing/src/test/groovy/JaxRsClientTest.groovy b/instrumentation/jaxrs-client/jaxrs-client-2.0-testing/src/test/groovy/JaxRsClientTest.groovy index 47dc4b682dc9..1c4c3ae47241 100644 --- a/instrumentation/jaxrs-client/jaxrs-client-2.0-testing/src/test/groovy/JaxRsClientTest.groovy +++ b/instrumentation/jaxrs-client/jaxrs-client-2.0-testing/src/test/groovy/JaxRsClientTest.groovy @@ -115,7 +115,6 @@ abstract class JaxRsClientTest extends HttpClientTest implem "$SemanticAttributes.HTTP_URL" "${uri}" "$SemanticAttributes.HTTP_METHOD" method "$SemanticAttributes.HTTP_STATUS_CODE" statusCode - "$SemanticAttributes.HTTP_FLAVOR" "1.1" "$SemanticAttributes.HTTP_USER_AGENT" { it == null || it instanceof String } "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } } diff --git a/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcNetAttributesGetter.java b/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcNetAttributesGetter.java index 5261fd450bfe..5071924450f3 100644 --- a/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcNetAttributesGetter.java +++ b/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcNetAttributesGetter.java @@ -20,6 +20,18 @@ public String getTransport(DbRequest request, @Nullable Void unused) { return null; } + @Nullable + @Override + public String getProtocolName(DbRequest dbRequest, @Nullable Void unused) { + return null; + } + + @Nullable + @Override + public String getProtocolVersion(DbRequest dbRequest, @Nullable Void unused) { + return null; + } + @Nullable @Override public String getPeerName(DbRequest request) { diff --git a/instrumentation/jedis/jedis-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jedis/v1_4/JedisNetAttributesGetter.java b/instrumentation/jedis/jedis-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jedis/v1_4/JedisNetAttributesGetter.java index aa2c478d2e95..0d7970cc6152 100644 --- a/instrumentation/jedis/jedis-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jedis/v1_4/JedisNetAttributesGetter.java +++ b/instrumentation/jedis/jedis-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jedis/v1_4/JedisNetAttributesGetter.java @@ -16,6 +16,18 @@ public String getTransport(JedisRequest request, @Nullable Void unused) { return null; } + @Nullable + @Override + public String getProtocolName(JedisRequest jedisRequest, @Nullable Void unused) { + return null; + } + + @Nullable + @Override + public String getProtocolVersion(JedisRequest jedisRequest, @Nullable Void unused) { + return null; + } + @Override public String getPeerName(JedisRequest request) { return request.getConnection().getHost(); diff --git a/instrumentation/jedis/jedis-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jedis/v3_0/JedisNetAttributesGetter.java b/instrumentation/jedis/jedis-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jedis/v3_0/JedisNetAttributesGetter.java index 7ecf8007106c..bc676f0b5054 100644 --- a/instrumentation/jedis/jedis-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jedis/v3_0/JedisNetAttributesGetter.java +++ b/instrumentation/jedis/jedis-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jedis/v3_0/JedisNetAttributesGetter.java @@ -19,6 +19,18 @@ public String getTransport(JedisRequest jedisRequest, @Nullable Void unused) { return SemanticAttributes.NetTransportValues.IP_TCP; } + @Nullable + @Override + public String getProtocolName(JedisRequest jedisRequest, @Nullable Void unused) { + return null; + } + + @Nullable + @Override + public String getProtocolVersion(JedisRequest jedisRequest, @Nullable Void unused) { + return null; + } + @Nullable @Override public String getPeerName(JedisRequest jedisRequest) { diff --git a/instrumentation/jedis/jedis-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jedis/v4_0/JedisNetAttributesGetter.java b/instrumentation/jedis/jedis-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jedis/v4_0/JedisNetAttributesGetter.java index fbe9b2216a4f..b805e461373a 100644 --- a/instrumentation/jedis/jedis-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jedis/v4_0/JedisNetAttributesGetter.java +++ b/instrumentation/jedis/jedis-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jedis/v4_0/JedisNetAttributesGetter.java @@ -19,6 +19,18 @@ public String getTransport(JedisRequest jedisRequest, @Nullable Void unused) { return SemanticAttributes.NetTransportValues.IP_TCP; } + @Nullable + @Override + public String getProtocolName(JedisRequest jedisRequest, @Nullable Void unused) { + return null; + } + + @Nullable + @Override + public String getProtocolVersion(JedisRequest jedisRequest, @Nullable Void unused) { + return null; + } + @Nullable @Override public String getPeerName(JedisRequest jedisRequest) { diff --git a/instrumentation/jetty-httpclient/jetty-httpclient-9.2/library/src/main/java/io/opentelemetry/instrumentation/jetty/httpclient/v9_2/internal/JettyClientHttpAttributesGetter.java b/instrumentation/jetty-httpclient/jetty-httpclient-9.2/library/src/main/java/io/opentelemetry/instrumentation/jetty/httpclient/v9_2/internal/JettyClientHttpAttributesGetter.java index b3ab95593088..e1f0472a1419 100644 --- a/instrumentation/jetty-httpclient/jetty-httpclient-9.2/library/src/main/java/io/opentelemetry/instrumentation/jetty/httpclient/v9_2/internal/JettyClientHttpAttributesGetter.java +++ b/instrumentation/jetty-httpclient/jetty-httpclient-9.2/library/src/main/java/io/opentelemetry/instrumentation/jetty/httpclient/v9_2/internal/JettyClientHttpAttributesGetter.java @@ -5,16 +5,11 @@ package io.opentelemetry.instrumentation.jetty.httpclient.v9_2.internal; -import static io.opentelemetry.semconv.trace.attributes.SemanticAttributes.HttpFlavorValues.HTTP_1_0; -import static io.opentelemetry.semconv.trace.attributes.SemanticAttributes.HttpFlavorValues.HTTP_1_1; -import static io.opentelemetry.semconv.trace.attributes.SemanticAttributes.HttpFlavorValues.HTTP_2_0; - import io.opentelemetry.instrumentation.api.instrumenter.http.HttpClientAttributesGetter; import java.util.List; import javax.annotation.Nullable; import org.eclipse.jetty.client.api.Request; import org.eclipse.jetty.client.api.Response; -import org.eclipse.jetty.http.HttpVersion; enum JettyClientHttpAttributesGetter implements HttpClientAttributesGetter { INSTANCE; @@ -36,30 +31,6 @@ public List getRequestHeader(Request request, String name) { return request.getHeaders().getValuesList(name); } - @Override - public String getFlavor(Request request, @Nullable Response response) { - - if (response == null) { - return HTTP_1_1; - } - HttpVersion httpVersion = response.getVersion(); - httpVersion = (httpVersion != null) ? httpVersion : HttpVersion.HTTP_1_1; - switch (httpVersion) { - case HTTP_0_9: - case HTTP_1_0: - return HTTP_1_0; - case HTTP_1_1: - return HTTP_1_1; - default: - // version 2.0 enum name difference in later versions 9.2 and 9.4 versions - if (httpVersion.toString().endsWith("2.0")) { - return HTTP_2_0; - } - - return HTTP_1_1; - } - } - @Override public Integer getStatusCode(Request request, Response response, @Nullable Throwable error) { return response.getStatus(); diff --git a/instrumentation/jetty-httpclient/jetty-httpclient-9.2/library/src/main/java/io/opentelemetry/instrumentation/jetty/httpclient/v9_2/internal/JettyHttpClientNetAttributesGetter.java b/instrumentation/jetty-httpclient/jetty-httpclient-9.2/library/src/main/java/io/opentelemetry/instrumentation/jetty/httpclient/v9_2/internal/JettyHttpClientNetAttributesGetter.java index 9244d4428b86..a242fccff602 100644 --- a/instrumentation/jetty-httpclient/jetty-httpclient-9.2/library/src/main/java/io/opentelemetry/instrumentation/jetty/httpclient/v9_2/internal/JettyHttpClientNetAttributesGetter.java +++ b/instrumentation/jetty-httpclient/jetty-httpclient-9.2/library/src/main/java/io/opentelemetry/instrumentation/jetty/httpclient/v9_2/internal/JettyHttpClientNetAttributesGetter.java @@ -23,6 +23,25 @@ public String getTransport(Request request, @Nullable Response response) { return SemanticAttributes.NetTransportValues.IP_TCP; } + @Nullable + @Override + public String getProtocolName(Request request, @Nullable Response response) { + return "http"; + } + + @Nullable + @Override + public String getProtocolVersion(Request request, @Nullable Response response) { + if (response == null || response.getVersion() == null) { + return null; + } + String version = response.getVersion().toString(); + if (version.startsWith("HTTP/")) { + version = version.substring("HTTP/".length()); + } + return version; + } + @Override @Nullable public String getPeerName(Request request) { diff --git a/instrumentation/jodd-http-4.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/joddhttp/v4_2/JoddHttpHttpAttributesGetter.java b/instrumentation/jodd-http-4.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/joddhttp/v4_2/JoddHttpHttpAttributesGetter.java index f4d221fdddf7..b75ffc62c617 100644 --- a/instrumentation/jodd-http-4.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/joddhttp/v4_2/JoddHttpHttpAttributesGetter.java +++ b/instrumentation/jodd-http-4.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/joddhttp/v4_2/JoddHttpHttpAttributesGetter.java @@ -5,28 +5,14 @@ package io.opentelemetry.javaagent.instrumentation.joddhttp.v4_2; -import static io.opentelemetry.semconv.trace.attributes.SemanticAttributes.HttpFlavorValues.HTTP_1_0; -import static io.opentelemetry.semconv.trace.attributes.SemanticAttributes.HttpFlavorValues.HTTP_1_1; -import static io.opentelemetry.semconv.trace.attributes.SemanticAttributes.HttpFlavorValues.HTTP_2_0; -import static io.opentelemetry.semconv.trace.attributes.SemanticAttributes.HttpFlavorValues.HTTP_3_0; - import io.opentelemetry.instrumentation.api.instrumenter.http.HttpClientAttributesGetter; -import java.util.Arrays; -import java.util.HashSet; import java.util.List; -import java.util.Set; -import java.util.logging.Level; -import java.util.logging.Logger; import javax.annotation.Nullable; import jodd.http.HttpRequest; import jodd.http.HttpResponse; final class JoddHttpHttpAttributesGetter implements HttpClientAttributesGetter { - private static final Logger logger = - Logger.getLogger(JoddHttpHttpAttributesGetter.class.getName()); - private static final Set ALLOWED_HTTP_FLAVORS = - new HashSet<>(Arrays.asList(HTTP_1_0, HTTP_1_1, HTTP_2_0, HTTP_3_0)); @Override public String getMethod(HttpRequest request) { @@ -49,26 +35,6 @@ public Integer getStatusCode( return response.statusCode(); } - @Override - @Nullable - public String getFlavor(HttpRequest request, @Nullable HttpResponse response) { - String httpVersion = request.httpVersion(); - if (httpVersion == null && response != null) { - httpVersion = response.httpVersion(); - } - if (httpVersion != null) { - if (httpVersion.contains("/")) { - httpVersion = httpVersion.substring(httpVersion.lastIndexOf("/") + 1); - } - - if (ALLOWED_HTTP_FLAVORS.contains(httpVersion)) { - return httpVersion; - } - } - logger.log(Level.FINE, "unexpected http protocol version: {0}", httpVersion); - return null; - } - @Override public List getResponseHeader(HttpRequest request, HttpResponse response, String name) { return response.headers(name); diff --git a/instrumentation/jodd-http-4.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/joddhttp/v4_2/JoddHttpNetAttributesGetter.java b/instrumentation/jodd-http-4.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/joddhttp/v4_2/JoddHttpNetAttributesGetter.java index 23cc33e3a27c..398adea5771e 100644 --- a/instrumentation/jodd-http-4.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/joddhttp/v4_2/JoddHttpNetAttributesGetter.java +++ b/instrumentation/jodd-http-4.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/joddhttp/v4_2/JoddHttpNetAttributesGetter.java @@ -19,6 +19,26 @@ public String getTransport(HttpRequest request, @Nullable HttpResponse response) return SemanticAttributes.NetTransportValues.IP_TCP; } + @Override + public String getProtocolName(HttpRequest request, @Nullable HttpResponse response) { + return "http"; + } + + @Nullable + @Override + public String getProtocolVersion(HttpRequest request, @Nullable HttpResponse response) { + String httpVersion = request.httpVersion(); + if (httpVersion == null && response != null) { + httpVersion = response.httpVersion(); + } + if (httpVersion != null) { + if (httpVersion.contains("/")) { + httpVersion = httpVersion.substring(httpVersion.lastIndexOf("/") + 1); + } + } + return httpVersion; + } + @Override @Nullable public String getPeerName(HttpRequest request) { diff --git a/instrumentation/ktor/ktor-2.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v2_0/client/KtorHttpClientAttributesGetter.kt b/instrumentation/ktor/ktor-2.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v2_0/client/KtorHttpClientAttributesGetter.kt index ba1cbb5d1b5c..bc068c6ca368 100644 --- a/instrumentation/ktor/ktor-2.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v2_0/client/KtorHttpClientAttributesGetter.kt +++ b/instrumentation/ktor/ktor-2.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v2_0/client/KtorHttpClientAttributesGetter.kt @@ -14,9 +14,6 @@ internal object KtorHttpClientAttributesGetter : HttpClientAttributesGetter() { // related issue https://github.com/open-telemetry/opentelemetry-java-instrumentation/issues/5722 disableTestRedirects() - setHttpAttributes { DEFAULT_HTTP_ATTRIBUTES - HTTP_FLAVOR } + setHttpAttributes { DEFAULT_HTTP_ATTRIBUTES - setOf(NetAttributes.NET_PROTOCOL_NAME, NetAttributes.NET_PROTOCOL_VERSION) } setSingleConnectionFactory { host, port -> KtorHttpClientSingleConnection(host, port) { installTracing() } diff --git a/instrumentation/kubernetes-client-7.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/kubernetesclient/KubernetesHttpAttributesGetter.java b/instrumentation/kubernetes-client-7.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/kubernetesclient/KubernetesHttpAttributesGetter.java index aaad054a553b..5466d510fbdf 100644 --- a/instrumentation/kubernetes-client-7.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/kubernetesclient/KubernetesHttpAttributesGetter.java +++ b/instrumentation/kubernetes-client-7.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/kubernetesclient/KubernetesHttpAttributesGetter.java @@ -9,7 +9,6 @@ import io.kubernetes.client.openapi.ApiResponse; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpClientAttributesGetter; -import io.opentelemetry.semconv.trace.attributes.SemanticAttributes; import java.util.List; import javax.annotation.Nullable; import okhttp3.Request; @@ -32,11 +31,6 @@ public List getRequestHeader(Request request, String name) { return request.headers(name); } - @Override - public String getFlavor(Request request, @Nullable ApiResponse apiResponse) { - return SemanticAttributes.HttpFlavorValues.HTTP_1_1; - } - @Override public Integer getStatusCode( Request request, ApiResponse apiResponse, @Nullable Throwable error) { diff --git a/instrumentation/kubernetes-client-7.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/kubernetesclient/KubernetesNetAttributesGetter.java b/instrumentation/kubernetes-client-7.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/kubernetesclient/KubernetesNetAttributesGetter.java index 6deb533b4a8e..8c881290e6fd 100644 --- a/instrumentation/kubernetes-client-7.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/kubernetesclient/KubernetesNetAttributesGetter.java +++ b/instrumentation/kubernetes-client-7.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/kubernetesclient/KubernetesNetAttributesGetter.java @@ -18,6 +18,18 @@ public String getTransport(Request request, @Nullable ApiResponse response) { return SemanticAttributes.NetTransportValues.IP_TCP; } + @Nullable + @Override + public String getProtocolName(Request request, @Nullable ApiResponse response) { + return null; + } + + @Nullable + @Override + public String getProtocolVersion(Request request, @Nullable ApiResponse response) { + return null; + } + @Override public String getPeerName(Request request) { return request.url().host(); diff --git a/instrumentation/kubernetes-client-7.0/javaagent/src/test/groovy/KubernetesClientTest.groovy b/instrumentation/kubernetes-client-7.0/javaagent/src/test/groovy/KubernetesClientTest.groovy index b72ba466b312..75aeb8bce31f 100644 --- a/instrumentation/kubernetes-client-7.0/javaagent/src/test/groovy/KubernetesClientTest.groovy +++ b/instrumentation/kubernetes-client-7.0/javaagent/src/test/groovy/KubernetesClientTest.groovy @@ -195,7 +195,6 @@ class KubernetesClientTest extends AgentInstrumentationSpecification { } attributes { "$SemanticAttributes.HTTP_URL" url - "$SemanticAttributes.HTTP_FLAVOR" "1.1" "$SemanticAttributes.HTTP_METHOD" "GET" "$SemanticAttributes.HTTP_USER_AGENT" TEST_USER_AGENT "$SemanticAttributes.HTTP_STATUS_CODE" statusCode diff --git a/instrumentation/lettuce/lettuce-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceConnectNetAttributesGetter.java b/instrumentation/lettuce/lettuce-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceConnectNetAttributesGetter.java index 35bcc05eb448..1cf838243e01 100644 --- a/instrumentation/lettuce/lettuce-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceConnectNetAttributesGetter.java +++ b/instrumentation/lettuce/lettuce-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceConnectNetAttributesGetter.java @@ -17,6 +17,18 @@ public String getTransport(RedisURI redisUri, @Nullable Void unused) { return null; } + @Nullable + @Override + public String getProtocolName(RedisURI redisURI, @Nullable Void unused) { + return null; + } + + @Nullable + @Override + public String getProtocolVersion(RedisURI redisURI, @Nullable Void unused) { + return null; + } + @Override public String getPeerName(RedisURI redisUri) { return redisUri.getHost(); diff --git a/instrumentation/lettuce/lettuce-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceConnectNetAttributesGetter.java b/instrumentation/lettuce/lettuce-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceConnectNetAttributesGetter.java index db5dcba5a164..b554a1d61a9e 100644 --- a/instrumentation/lettuce/lettuce-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceConnectNetAttributesGetter.java +++ b/instrumentation/lettuce/lettuce-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceConnectNetAttributesGetter.java @@ -17,6 +17,18 @@ public String getTransport(RedisURI redisUri, @Nullable Void unused) { return null; } + @Nullable + @Override + public String getProtocolName(RedisURI redisURI, @Nullable Void unused) { + return null; + } + + @Nullable + @Override + public String getProtocolVersion(RedisURI redisURI, @Nullable Void unused) { + return null; + } + @Override public String getPeerName(RedisURI redisUri) { return redisUri.getHost(); diff --git a/instrumentation/lettuce/lettuce-5.1/library/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/LettuceNetAttributesGetter.java b/instrumentation/lettuce/lettuce-5.1/library/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/LettuceNetAttributesGetter.java index e1f91bfeec2f..82fdac7066e0 100644 --- a/instrumentation/lettuce/lettuce-5.1/library/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/LettuceNetAttributesGetter.java +++ b/instrumentation/lettuce/lettuce-5.1/library/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/LettuceNetAttributesGetter.java @@ -20,6 +20,18 @@ public String getTransport(OpenTelemetryEndpoint endpoint, @Nullable Void unused return IP_TCP; } + @Nullable + @Override + public String getProtocolName(OpenTelemetryEndpoint endpoint, @Nullable Void unused) { + return null; + } + + @Nullable + @Override + public String getProtocolVersion(OpenTelemetryEndpoint endpoint, @Nullable Void unused) { + return null; + } + @Nullable @Override public String getPeerName(OpenTelemetryEndpoint openTelemetryEndpoint) { diff --git a/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoNetAttributesGetter.java b/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoNetAttributesGetter.java index 3801fd2679b1..296f28b89d12 100644 --- a/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoNetAttributesGetter.java +++ b/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoNetAttributesGetter.java @@ -17,6 +17,18 @@ public String getTransport(CommandStartedEvent event, @Nullable Void unused) { return null; } + @Nullable + @Override + public String getProtocolName(CommandStartedEvent event, @Nullable Void unused) { + return null; + } + + @Nullable + @Override + public String getProtocolVersion(CommandStartedEvent event, @Nullable Void unused) { + return null; + } + @Nullable @Override public String getPeerName(CommandStartedEvent event) { diff --git a/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/client/NettyConnectHttpAttributesGetter.java b/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/client/NettyConnectHttpAttributesGetter.java index 20ff29b2e9a3..aabb92ed29c9 100644 --- a/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/client/NettyConnectHttpAttributesGetter.java +++ b/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/client/NettyConnectHttpAttributesGetter.java @@ -22,13 +22,6 @@ public String getUrl(NettyConnectionRequest nettyConnectionRequest) { return null; } - @Nullable - @Override - public String getFlavor( - NettyConnectionRequest nettyConnectionRequest, @Nullable Channel channel) { - return null; - } - @Nullable @Override public String getMethod(NettyConnectionRequest nettyConnectionRequest) { diff --git a/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/client/NettyConnectNetAttributesGetter.java b/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/client/NettyConnectNetAttributesGetter.java index ac114e24d4a1..c03cbfb8d17f 100644 --- a/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/client/NettyConnectNetAttributesGetter.java +++ b/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/client/NettyConnectNetAttributesGetter.java @@ -24,6 +24,18 @@ public String getTransport(NettyConnectionRequest request, @Nullable Channel cha return channel instanceof DatagramChannel ? IP_UDP : IP_TCP; } + @Nullable + @Override + public String getProtocolName(NettyConnectionRequest request, @Nullable Channel channel) { + return null; + } + + @Nullable + @Override + public String getProtocolVersion(NettyConnectionRequest request, @Nullable Channel channel) { + return null; + } + @Nullable @Override public String getPeerName(NettyConnectionRequest request) { diff --git a/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/client/NettyHttpClientAttributesGetter.java b/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/client/NettyHttpClientAttributesGetter.java index 6bf2b304aabc..6cac1fb8d3e0 100644 --- a/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/client/NettyHttpClientAttributesGetter.java +++ b/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/client/NettyHttpClientAttributesGetter.java @@ -39,16 +39,6 @@ private String getHost(HttpRequestAndChannel requestAndChannel) { return values.isEmpty() ? null : values.get(0); } - @Override - public String getFlavor( - HttpRequestAndChannel requestAndChannel, @Nullable HttpResponse response) { - String flavor = requestAndChannel.request().getProtocolVersion().toString(); - if (flavor.startsWith("HTTP/")) { - flavor = flavor.substring("HTTP/".length()); - } - return flavor; - } - @Override public String getMethod(HttpRequestAndChannel requestAndChannel) { return requestAndChannel.request().getMethod().getName(); diff --git a/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/client/NettyNetClientAttributesGetter.java b/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/client/NettyNetClientAttributesGetter.java index 5a9973ad5b35..fa9697db20d8 100644 --- a/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/client/NettyNetClientAttributesGetter.java +++ b/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/client/NettyNetClientAttributesGetter.java @@ -15,6 +15,7 @@ import javax.annotation.Nullable; import org.jboss.netty.channel.socket.DatagramChannel; import org.jboss.netty.handler.codec.http.HttpResponse; +import org.jboss.netty.handler.codec.http.HttpVersion; final class NettyNetClientAttributesGetter extends InetSocketAddressNetClientAttributesGetter { @@ -25,6 +26,19 @@ public String getTransport( return requestAndChannel.channel() instanceof DatagramChannel ? IP_UDP : IP_TCP; } + @Override + public String getProtocolName( + HttpRequestAndChannel requestAndChannel, @Nullable HttpResponse httpResponse) { + return requestAndChannel.request().getProtocolVersion().getProtocolName(); + } + + @Override + public String getProtocolVersion( + HttpRequestAndChannel requestAndChannel, @Nullable HttpResponse httpResponse) { + HttpVersion version = requestAndChannel.request().getProtocolVersion(); + return version.getMajorVersion() + "." + version.getMinorVersion(); + } + @Nullable @Override public String getPeerName(HttpRequestAndChannel requestAndChannel) { diff --git a/instrumentation/netty/netty-4-common/library/src/main/java/io/opentelemetry/instrumentation/netty/v4/common/internal/client/NettyConnectHttpAttributesGetter.java b/instrumentation/netty/netty-4-common/library/src/main/java/io/opentelemetry/instrumentation/netty/v4/common/internal/client/NettyConnectHttpAttributesGetter.java index 9504de31d81c..0c3473011016 100644 --- a/instrumentation/netty/netty-4-common/library/src/main/java/io/opentelemetry/instrumentation/netty/v4/common/internal/client/NettyConnectHttpAttributesGetter.java +++ b/instrumentation/netty/netty-4-common/library/src/main/java/io/opentelemetry/instrumentation/netty/v4/common/internal/client/NettyConnectHttpAttributesGetter.java @@ -22,13 +22,6 @@ public String getUrl(NettyConnectionRequest nettyConnectionRequest) { return null; } - @Nullable - @Override - public String getFlavor( - NettyConnectionRequest nettyConnectionRequest, @Nullable Channel channel) { - return null; - } - @Nullable @Override public String getMethod(NettyConnectionRequest nettyConnectionRequest) { diff --git a/instrumentation/netty/netty-4-common/library/src/main/java/io/opentelemetry/instrumentation/netty/v4/common/internal/client/NettyConnectNetAttributesGetter.java b/instrumentation/netty/netty-4-common/library/src/main/java/io/opentelemetry/instrumentation/netty/v4/common/internal/client/NettyConnectNetAttributesGetter.java index 320d278ed65c..5c0d472f39b1 100644 --- a/instrumentation/netty/netty-4-common/library/src/main/java/io/opentelemetry/instrumentation/netty/v4/common/internal/client/NettyConnectNetAttributesGetter.java +++ b/instrumentation/netty/netty-4-common/library/src/main/java/io/opentelemetry/instrumentation/netty/v4/common/internal/client/NettyConnectNetAttributesGetter.java @@ -24,6 +24,18 @@ public String getTransport(NettyConnectionRequest request, @Nullable Channel cha return channel instanceof DatagramChannel ? IP_UDP : IP_TCP; } + @Nullable + @Override + public String getProtocolName(NettyConnectionRequest request, @Nullable Channel channel) { + return null; + } + + @Nullable + @Override + public String getProtocolVersion(NettyConnectionRequest request, @Nullable Channel channel) { + return null; + } + @Nullable @Override public String getPeerName(NettyConnectionRequest request) { diff --git a/instrumentation/netty/netty-4-common/library/src/main/java/io/opentelemetry/instrumentation/netty/v4/common/internal/client/NettyHttpClientAttributesGetter.java b/instrumentation/netty/netty-4-common/library/src/main/java/io/opentelemetry/instrumentation/netty/v4/common/internal/client/NettyHttpClientAttributesGetter.java index 2a0486b1cf99..7175796dfd49 100644 --- a/instrumentation/netty/netty-4-common/library/src/main/java/io/opentelemetry/instrumentation/netty/v4/common/internal/client/NettyHttpClientAttributesGetter.java +++ b/instrumentation/netty/netty-4-common/library/src/main/java/io/opentelemetry/instrumentation/netty/v4/common/internal/client/NettyHttpClientAttributesGetter.java @@ -39,16 +39,6 @@ private String getHost(HttpRequestAndChannel requestAndChannel) { return values.isEmpty() ? null : values.get(0); } - @Override - public String getFlavor( - HttpRequestAndChannel requestAndChannel, @Nullable HttpResponse response) { - String flavor = requestAndChannel.request().getProtocolVersion().toString(); - if (flavor.startsWith("HTTP/")) { - flavor = flavor.substring("HTTP/".length()); - } - return flavor; - } - @Override public String getMethod(HttpRequestAndChannel requestAndChannel) { return requestAndChannel.request().getMethod().name(); diff --git a/instrumentation/netty/netty-4-common/library/src/main/java/io/opentelemetry/instrumentation/netty/v4/common/internal/client/NettyNetClientAttributesGetter.java b/instrumentation/netty/netty-4-common/library/src/main/java/io/opentelemetry/instrumentation/netty/v4/common/internal/client/NettyNetClientAttributesGetter.java index b3b67f8250dd..cd01f79e631d 100644 --- a/instrumentation/netty/netty-4-common/library/src/main/java/io/opentelemetry/instrumentation/netty/v4/common/internal/client/NettyNetClientAttributesGetter.java +++ b/instrumentation/netty/netty-4-common/library/src/main/java/io/opentelemetry/instrumentation/netty/v4/common/internal/client/NettyNetClientAttributesGetter.java @@ -10,6 +10,7 @@ import io.netty.channel.socket.DatagramChannel; import io.netty.handler.codec.http.HttpResponse; +import io.netty.handler.codec.http.HttpVersion; import io.opentelemetry.instrumentation.api.instrumenter.net.InetSocketAddressNetClientAttributesGetter; import io.opentelemetry.instrumentation.netty.v4.common.HttpRequestAndChannel; import java.net.InetSocketAddress; @@ -25,6 +26,19 @@ public String getTransport( return requestAndChannel.channel() instanceof DatagramChannel ? IP_UDP : IP_TCP; } + @Override + public String getProtocolName( + HttpRequestAndChannel requestAndChannel, @Nullable HttpResponse response) { + return requestAndChannel.request().getProtocolVersion().protocolName(); + } + + @Override + public String getProtocolVersion( + HttpRequestAndChannel requestAndChannel, @Nullable HttpResponse response) { + HttpVersion version = requestAndChannel.request().getProtocolVersion(); + return version.majorVersion() + "." + version.minorVersion(); + } + @Nullable @Override public String getPeerName(HttpRequestAndChannel requestAndChannel) { diff --git a/instrumentation/netty/netty-4-common/library/src/main/java/io/opentelemetry/instrumentation/netty/v4/common/internal/client/NettySslNetAttributesGetter.java b/instrumentation/netty/netty-4-common/library/src/main/java/io/opentelemetry/instrumentation/netty/v4/common/internal/client/NettySslNetAttributesGetter.java index 84d22b71cdc3..6f45b8be015e 100644 --- a/instrumentation/netty/netty-4-common/library/src/main/java/io/opentelemetry/instrumentation/netty/v4/common/internal/client/NettySslNetAttributesGetter.java +++ b/instrumentation/netty/netty-4-common/library/src/main/java/io/opentelemetry/instrumentation/netty/v4/common/internal/client/NettySslNetAttributesGetter.java @@ -21,6 +21,18 @@ public String getTransport(NettySslRequest request, @Nullable Void unused) { return request.channel() instanceof DatagramChannel ? IP_UDP : IP_TCP; } + @Nullable + @Override + public String getProtocolName(NettySslRequest request, @Nullable Void unused) { + return null; + } + + @Nullable + @Override + public String getProtocolVersion(NettySslRequest request, @Nullable Void unused) { + return null; + } + @Nullable @Override public String getPeerName(NettySslRequest nettySslRequest) { diff --git a/instrumentation/okhttp/okhttp-2.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/okhttp/v2_2/OkHttp2HttpAttributesGetter.java b/instrumentation/okhttp/okhttp-2.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/okhttp/v2_2/OkHttp2HttpAttributesGetter.java index c3738f3819f0..e1a580cfd4ef 100644 --- a/instrumentation/okhttp/okhttp-2.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/okhttp/v2_2/OkHttp2HttpAttributesGetter.java +++ b/instrumentation/okhttp/okhttp-2.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/okhttp/v2_2/OkHttp2HttpAttributesGetter.java @@ -8,7 +8,6 @@ import com.squareup.okhttp.Request; import com.squareup.okhttp.Response; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpClientAttributesGetter; -import io.opentelemetry.semconv.trace.attributes.SemanticAttributes; import java.util.List; import javax.annotation.Nullable; @@ -34,25 +33,6 @@ public Integer getStatusCode(Request request, Response response, @Nullable Throw return response.code(); } - @Override - @Nullable - public String getFlavor(Request request, @Nullable Response response) { - if (response == null) { - return null; - } - switch (response.protocol()) { - case HTTP_1_0: - return SemanticAttributes.HttpFlavorValues.HTTP_1_0; - case HTTP_1_1: - return SemanticAttributes.HttpFlavorValues.HTTP_1_1; - case HTTP_2: - return SemanticAttributes.HttpFlavorValues.HTTP_2_0; - case SPDY_3: - return SemanticAttributes.HttpFlavorValues.SPDY; - } - return null; - } - @Override public List getResponseHeader(Request request, Response response, String name) { return response.headers(name); diff --git a/instrumentation/okhttp/okhttp-2.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/okhttp/v2_2/OkHttp2NetAttributesGetter.java b/instrumentation/okhttp/okhttp-2.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/okhttp/v2_2/OkHttp2NetAttributesGetter.java index fa2bd7a9aad0..0329a7e18db5 100644 --- a/instrumentation/okhttp/okhttp-2.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/okhttp/v2_2/OkHttp2NetAttributesGetter.java +++ b/instrumentation/okhttp/okhttp-2.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/okhttp/v2_2/OkHttp2NetAttributesGetter.java @@ -19,6 +19,42 @@ public String getTransport(Request request, @Nullable Response response) { return SemanticAttributes.NetTransportValues.IP_TCP; } + @Nullable + @Override + public String getProtocolName(Request request, @Nullable Response response) { + if (response == null) { + return null; + } + switch (response.protocol()) { + case HTTP_1_0: + case HTTP_1_1: + case HTTP_2: + return "http"; + case SPDY_3: + return "spdy"; + } + return null; + } + + @Nullable + @Override + public String getProtocolVersion(Request request, @Nullable Response response) { + if (response == null) { + return null; + } + switch (response.protocol()) { + case HTTP_1_0: + return "1.0"; + case HTTP_1_1: + return "1.1"; + case HTTP_2: + return "2.0"; + case SPDY_3: + return "3.1"; + } + return null; + } + @Override @Nullable public String getPeerName(Request request) { diff --git a/instrumentation/okhttp/okhttp-2.2/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/okhttp/v2_2/OkHttp2Test.java b/instrumentation/okhttp/okhttp-2.2/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/okhttp/v2_2/OkHttp2Test.java index 869136c60fa3..77128c44b83d 100644 --- a/instrumentation/okhttp/okhttp-2.2/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/okhttp/v2_2/OkHttp2Test.java +++ b/instrumentation/okhttp/okhttp-2.2/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/okhttp/v2_2/OkHttp2Test.java @@ -5,6 +5,8 @@ package io.opentelemetry.javaagent.instrumentation.okhttp.v2_2; +import static io.opentelemetry.api.common.AttributeKey.stringKey; + import com.squareup.okhttp.Callback; import com.squareup.okhttp.MediaType; import com.squareup.okhttp.OkHttpClient; @@ -18,7 +20,6 @@ import io.opentelemetry.instrumentation.testing.junit.http.HttpClientInstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.http.HttpClientResult; import io.opentelemetry.instrumentation.testing.junit.http.HttpClientTestOptions; -import io.opentelemetry.semconv.trace.attributes.SemanticAttributes; import java.io.IOException; import java.net.URI; import java.util.HashSet; @@ -101,12 +102,13 @@ protected void configure(HttpClientTestOptions.Builder optionsBuilder) { Set> attributes = new HashSet<>(HttpClientTestOptions.DEFAULT_HTTP_ATTRIBUTES); - // flavor is extracted from the response, and those URLs cause exceptions (= null + // protocol is extracted from the response, and those URLs cause exceptions (= null // response) if ("http://localhost:61/".equals(uri.toString()) || "https://192.0.2.1/".equals(uri.toString()) || resolveAddress("/read-timeout").toString().equals(uri.toString())) { - attributes.remove(SemanticAttributes.HTTP_FLAVOR); + attributes.remove(stringKey("net.protocol.name")); + attributes.remove(stringKey("net.protocol.version")); } return attributes; diff --git a/instrumentation/okhttp/okhttp-3.0/library/src/main/java/io/opentelemetry/instrumentation/okhttp/v3_0/OkHttpAttributesGetter.java b/instrumentation/okhttp/okhttp-3.0/library/src/main/java/io/opentelemetry/instrumentation/okhttp/v3_0/OkHttpAttributesGetter.java index c7454e38da21..beef72549f77 100644 --- a/instrumentation/okhttp/okhttp-3.0/library/src/main/java/io/opentelemetry/instrumentation/okhttp/v3_0/OkHttpAttributesGetter.java +++ b/instrumentation/okhttp/okhttp-3.0/library/src/main/java/io/opentelemetry/instrumentation/okhttp/v3_0/OkHttpAttributesGetter.java @@ -6,7 +6,6 @@ package io.opentelemetry.instrumentation.okhttp.v3_0; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpClientAttributesGetter; -import io.opentelemetry.semconv.trace.attributes.SemanticAttributes; import java.util.List; import javax.annotation.Nullable; import okhttp3.Request; @@ -30,28 +29,6 @@ public List getRequestHeader(Request request, String name) { return request.headers(name); } - @Override - @SuppressWarnings("UnnecessaryDefaultInEnumSwitch") - @Nullable - public String getFlavor(Request request, @Nullable Response response) { - if (response == null) { - return null; - } - switch (response.protocol()) { - case HTTP_1_0: - return SemanticAttributes.HttpFlavorValues.HTTP_1_0; - case HTTP_1_1: - return SemanticAttributes.HttpFlavorValues.HTTP_1_1; - case HTTP_2: - return SemanticAttributes.HttpFlavorValues.HTTP_2_0; - case SPDY_3: - return SemanticAttributes.HttpFlavorValues.SPDY; - // No OTel mapping for other protocols like H2C. - default: - return null; - } - } - @Override public Integer getStatusCode(Request request, Response response, @Nullable Throwable error) { return response.code(); diff --git a/instrumentation/okhttp/okhttp-3.0/library/src/main/java/io/opentelemetry/instrumentation/okhttp/v3_0/internal/OkHttpNetAttributesGetter.java b/instrumentation/okhttp/okhttp-3.0/library/src/main/java/io/opentelemetry/instrumentation/okhttp/v3_0/internal/OkHttpNetAttributesGetter.java index b016a9558f3e..e8982a35ea55 100644 --- a/instrumentation/okhttp/okhttp-3.0/library/src/main/java/io/opentelemetry/instrumentation/okhttp/v3_0/internal/OkHttpNetAttributesGetter.java +++ b/instrumentation/okhttp/okhttp-3.0/library/src/main/java/io/opentelemetry/instrumentation/okhttp/v3_0/internal/OkHttpNetAttributesGetter.java @@ -23,6 +23,42 @@ public String getTransport(Request request, @Nullable Response response) { return SemanticAttributes.NetTransportValues.IP_TCP; } + @Nullable + @Override + public String getProtocolName(Request request, @Nullable Response response) { + if (response == null) { + return null; + } + switch (response.protocol()) { + case HTTP_1_0: + case HTTP_1_1: + case HTTP_2: + return "http"; + case SPDY_3: + return "spdy"; + } + return null; + } + + @Nullable + @Override + public String getProtocolVersion(Request request, @Nullable Response response) { + if (response == null) { + return null; + } + switch (response.protocol()) { + case HTTP_1_0: + return "1.0"; + case HTTP_1_1: + return "1.1"; + case HTTP_2: + return "2.0"; + case SPDY_3: + return "3.1"; + } + return null; + } + @Override @Nullable public String getPeerName(Request request) { diff --git a/instrumentation/okhttp/okhttp-3.0/testing/src/main/java/io/opentelemetry/instrumentation/okhttp/v3_0/AbstractOkHttp3Test.java b/instrumentation/okhttp/okhttp-3.0/testing/src/main/java/io/opentelemetry/instrumentation/okhttp/v3_0/AbstractOkHttp3Test.java index 41a86f347e47..55c7486c2d14 100644 --- a/instrumentation/okhttp/okhttp-3.0/testing/src/main/java/io/opentelemetry/instrumentation/okhttp/v3_0/AbstractOkHttp3Test.java +++ b/instrumentation/okhttp/okhttp-3.0/testing/src/main/java/io/opentelemetry/instrumentation/okhttp/v3_0/AbstractOkHttp3Test.java @@ -5,6 +5,7 @@ package io.opentelemetry.instrumentation.okhttp.v3_0; +import static io.opentelemetry.api.common.AttributeKey.stringKey; import static java.util.Collections.singletonList; import static org.assertj.core.api.Assertions.assertThat; @@ -13,7 +14,6 @@ import io.opentelemetry.instrumentation.testing.junit.http.AbstractHttpClientTest; import io.opentelemetry.instrumentation.testing.junit.http.HttpClientResult; import io.opentelemetry.instrumentation.testing.junit.http.HttpClientTestOptions; -import io.opentelemetry.semconv.trace.attributes.SemanticAttributes; import java.io.IOException; import java.net.URI; import java.util.Collections; @@ -119,12 +119,13 @@ protected void configure(HttpClientTestOptions.Builder optionsBuilder) { Set> attributes = new HashSet<>(HttpClientTestOptions.DEFAULT_HTTP_ATTRIBUTES); - // flavor is extracted from the response, and those URLs cause exceptions (= null + // protocol is extracted from the response, and those URLs cause exceptions (= null // response) if ("http://localhost:61/".equals(uri.toString()) || "https://192.0.2.1/".equals(uri.toString()) || resolveAddress("/read-timeout").toString().equals(uri.toString())) { - attributes.remove(SemanticAttributes.HTTP_FLAVOR); + attributes.remove(stringKey("net.protocol.name")); + attributes.remove(stringKey("net.protocol.version")); } return attributes; diff --git a/instrumentation/opensearch/opensearch-rest-1.0/javaagent/src/test/java/OpenSearchRestTest.java b/instrumentation/opensearch/opensearch-rest-1.0/javaagent/src/test/java/OpenSearchRestTest.java index e4a30c77df9a..ed0d36c9e342 100644 --- a/instrumentation/opensearch/opensearch-rest-1.0/javaagent/src/test/java/OpenSearchRestTest.java +++ b/instrumentation/opensearch/opensearch-rest-1.0/javaagent/src/test/java/OpenSearchRestTest.java @@ -3,6 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ +import static io.opentelemetry.api.common.AttributeKey.stringKey; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import io.opentelemetry.api.trace.SpanKind; @@ -103,12 +104,11 @@ void shouldGetStatusWithTraces() throws IOException { equalTo( SemanticAttributes.NET_TRANSPORT, SemanticAttributes.NetTransportValues.IP_TCP), + equalTo(stringKey("net.protocol.name"), "http"), + equalTo(stringKey("net.protocol.version"), "1.1"), equalTo(SemanticAttributes.NET_PEER_NAME, httpHost.getHostName()), equalTo(SemanticAttributes.NET_PEER_PORT, httpHost.getPort()), equalTo(SemanticAttributes.HTTP_METHOD, "GET"), - equalTo( - SemanticAttributes.HTTP_FLAVOR, - SemanticAttributes.HttpFlavorValues.HTTP_1_1), equalTo( SemanticAttributes.HTTP_URL, httpHost.toURI() + "/_cluster/health"), equalTo(SemanticAttributes.HTTP_STATUS_CODE, 200L), @@ -178,12 +178,11 @@ public void onFailure(Exception e) { equalTo( SemanticAttributes.NET_TRANSPORT, SemanticAttributes.NetTransportValues.IP_TCP), + equalTo(stringKey("net.protocol.name"), "http"), + equalTo(stringKey("net.protocol.version"), "1.1"), equalTo(SemanticAttributes.NET_PEER_NAME, httpHost.getHostName()), equalTo(SemanticAttributes.NET_PEER_PORT, httpHost.getPort()), equalTo(SemanticAttributes.HTTP_METHOD, "GET"), - equalTo( - SemanticAttributes.HTTP_FLAVOR, - SemanticAttributes.HttpFlavorValues.HTTP_1_1), equalTo( SemanticAttributes.HTTP_URL, httpHost.toURI() + "/_cluster/health"), equalTo(SemanticAttributes.HTTP_STATUS_CODE, 200L), diff --git a/instrumentation/opensearch/opensearch-rest-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/OpenSearchRestNetResponseAttributesGetter.java b/instrumentation/opensearch/opensearch-rest-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/OpenSearchRestNetResponseAttributesGetter.java index 02695fe3854c..a71ebd77ebb3 100644 --- a/instrumentation/opensearch/opensearch-rest-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/OpenSearchRestNetResponseAttributesGetter.java +++ b/instrumentation/opensearch/opensearch-rest-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/OpenSearchRestNetResponseAttributesGetter.java @@ -19,6 +19,18 @@ public String getTransport(OpenSearchRestRequest request, Response response) { return SemanticAttributes.NetTransportValues.IP_TCP; } + @Nullable + @Override + public String getProtocolName(OpenSearchRestRequest request, @Nullable Response response) { + return null; + } + + @Nullable + @Override + public String getProtocolVersion(OpenSearchRestRequest request, @Nullable Response response) { + return null; + } + @Override @Nullable public String getPeerName(OpenSearchRestRequest request) { diff --git a/instrumentation/play/play-ws/play-ws-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/playws/PlayWsClientHttpAttributesGetter.java b/instrumentation/play/play-ws/play-ws-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/playws/PlayWsClientHttpAttributesGetter.java index 42feba8f6b20..d4b42a6b2140 100644 --- a/instrumentation/play/play-ws/play-ws-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/playws/PlayWsClientHttpAttributesGetter.java +++ b/instrumentation/play/play-ws/play-ws-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/playws/PlayWsClientHttpAttributesGetter.java @@ -6,7 +6,6 @@ package io.opentelemetry.javaagent.instrumentation.playws; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpClientAttributesGetter; -import io.opentelemetry.semconv.trace.attributes.SemanticAttributes; import java.util.List; import javax.annotation.Nullable; import play.shaded.ahc.org.asynchttpclient.Request; @@ -35,11 +34,6 @@ public Integer getStatusCode(Request request, Response response, @Nullable Throw return response.getStatusCode(); } - @Override - public String getFlavor(Request request, @Nullable Response response) { - return SemanticAttributes.HttpFlavorValues.HTTP_1_1; - } - @Override public List getResponseHeader(Request request, Response response, String name) { return response.getHeaders().getAll(name); diff --git a/instrumentation/play/play-ws/play-ws-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/playws/PlayWsClientNetAttributesGetter.java b/instrumentation/play/play-ws/play-ws-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/playws/PlayWsClientNetAttributesGetter.java index eff748c09b94..1b721f6af1d0 100644 --- a/instrumentation/play/play-ws/play-ws-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/playws/PlayWsClientNetAttributesGetter.java +++ b/instrumentation/play/play-ws/play-ws-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/playws/PlayWsClientNetAttributesGetter.java @@ -20,6 +20,18 @@ public String getTransport(Request request, @Nullable Response response) { return SemanticAttributes.NetTransportValues.IP_TCP; } + @Nullable + @Override + public String getProtocolName(Request request, @Nullable Response response) { + return null; + } + + @Nullable + @Override + public String getProtocolVersion(Request request, @Nullable Response response) { + return null; + } + @Nullable @Override public String getPeerName(Request request) { diff --git a/instrumentation/rabbitmq-2.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rabbitmq/RabbitChannelNetAttributesGetter.java b/instrumentation/rabbitmq-2.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rabbitmq/RabbitChannelNetAttributesGetter.java index ee1f9cf1cac6..6cf02f0d3a10 100644 --- a/instrumentation/rabbitmq-2.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rabbitmq/RabbitChannelNetAttributesGetter.java +++ b/instrumentation/rabbitmq-2.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rabbitmq/RabbitChannelNetAttributesGetter.java @@ -18,6 +18,18 @@ public String getTransport(ChannelAndMethod channelAndMethod, @Nullable Void unu return null; } + @Nullable + @Override + public String getProtocolName(ChannelAndMethod channelAndMethod, @Nullable Void unused) { + return null; + } + + @Nullable + @Override + public String getProtocolVersion(ChannelAndMethod channelAndMethod, @Nullable Void unused) { + return null; + } + @Nullable @Override public String getPeerName(ChannelAndMethod channelAndMethod) { diff --git a/instrumentation/rabbitmq-2.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rabbitmq/RabbitReceiveNetAttributesGetter.java b/instrumentation/rabbitmq-2.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rabbitmq/RabbitReceiveNetAttributesGetter.java index 057674cc1d18..619e36697c2b 100644 --- a/instrumentation/rabbitmq-2.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rabbitmq/RabbitReceiveNetAttributesGetter.java +++ b/instrumentation/rabbitmq-2.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rabbitmq/RabbitReceiveNetAttributesGetter.java @@ -19,6 +19,18 @@ public String getTransport(ReceiveRequest request, @Nullable GetResponse respons return null; } + @Nullable + @Override + public String getProtocolName(ReceiveRequest request, @Nullable GetResponse response) { + return null; + } + + @Nullable + @Override + public String getProtocolVersion(ReceiveRequest request, @Nullable GetResponse response) { + return null; + } + @Nullable @Override public String getPeerName(ReceiveRequest request) { diff --git a/instrumentation/ratpack/ratpack-1.7/library/src/main/java/io/opentelemetry/instrumentation/ratpack/v1_7/RatpackHttpClientAttributesGetter.java b/instrumentation/ratpack/ratpack-1.7/library/src/main/java/io/opentelemetry/instrumentation/ratpack/v1_7/RatpackHttpClientAttributesGetter.java index 5c3342c0c23e..5a63a7417828 100644 --- a/instrumentation/ratpack/ratpack-1.7/library/src/main/java/io/opentelemetry/instrumentation/ratpack/v1_7/RatpackHttpClientAttributesGetter.java +++ b/instrumentation/ratpack/ratpack-1.7/library/src/main/java/io/opentelemetry/instrumentation/ratpack/v1_7/RatpackHttpClientAttributesGetter.java @@ -6,7 +6,6 @@ package io.opentelemetry.instrumentation.ratpack.v1_7; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpClientAttributesGetter; -import io.opentelemetry.semconv.trace.attributes.SemanticAttributes; import java.util.List; import javax.annotation.Nullable; import ratpack.http.client.HttpResponse; @@ -22,11 +21,6 @@ public String getUrl(RequestSpec requestSpec) { return requestSpec.getUri().toString(); } - @Override - public String getFlavor(RequestSpec requestSpec, @Nullable HttpResponse httpResponse) { - return SemanticAttributes.HttpFlavorValues.HTTP_1_1; - } - @Nullable @Override public String getMethod(RequestSpec requestSpec) { diff --git a/instrumentation/ratpack/ratpack-1.7/library/src/main/java/io/opentelemetry/instrumentation/ratpack/v1_7/internal/RatpackNetClientAttributesGetter.java b/instrumentation/ratpack/ratpack-1.7/library/src/main/java/io/opentelemetry/instrumentation/ratpack/v1_7/internal/RatpackNetClientAttributesGetter.java index c9c7e854a33c..0116f213a4f4 100644 --- a/instrumentation/ratpack/ratpack-1.7/library/src/main/java/io/opentelemetry/instrumentation/ratpack/v1_7/internal/RatpackNetClientAttributesGetter.java +++ b/instrumentation/ratpack/ratpack-1.7/library/src/main/java/io/opentelemetry/instrumentation/ratpack/v1_7/internal/RatpackNetClientAttributesGetter.java @@ -23,6 +23,18 @@ public String getTransport(RequestSpec request, @Nullable HttpResponse response) return SemanticAttributes.NetTransportValues.IP_TCP; } + @Nullable + @Override + public String getProtocolName(RequestSpec request, @Nullable HttpResponse response) { + return null; + } + + @Nullable + @Override + public String getProtocolVersion(RequestSpec request, @Nullable HttpResponse response) { + return null; + } + @Override @Nullable public String getPeerName(RequestSpec request) { diff --git a/instrumentation/reactor/reactor-netty/reactor-netty-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/ReactorNettyHttpClientAttributesGetter.java b/instrumentation/reactor/reactor-netty/reactor-netty-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/ReactorNettyHttpClientAttributesGetter.java index 7dc897148aa7..54b0e65390c9 100644 --- a/instrumentation/reactor/reactor-netty/reactor-netty-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/ReactorNettyHttpClientAttributesGetter.java +++ b/instrumentation/reactor/reactor-netty/reactor-netty-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/ReactorNettyHttpClientAttributesGetter.java @@ -57,19 +57,6 @@ private static boolean isAbsolute(String uri) { return uri != null && !uri.isEmpty() && !uri.startsWith("/"); } - @Nullable - @Override - public String getFlavor(HttpClientConfig request, @Nullable HttpClientResponse response) { - if (response != null) { - String flavor = response.version().text(); - if (flavor.startsWith("HTTP/")) { - flavor = flavor.substring("HTTP/".length()); - } - return flavor; - } - return null; - } - @Override public String getMethod(HttpClientConfig request) { return request.method().name(); diff --git a/instrumentation/reactor/reactor-netty/reactor-netty-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/ReactorNettyNetClientAttributesGetter.java b/instrumentation/reactor/reactor-netty/reactor-netty-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/ReactorNettyNetClientAttributesGetter.java index 45c211ae0221..c3037193dfef 100644 --- a/instrumentation/reactor/reactor-netty/reactor-netty-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/ReactorNettyNetClientAttributesGetter.java +++ b/instrumentation/reactor/reactor-netty/reactor-netty-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/ReactorNettyNetClientAttributesGetter.java @@ -5,6 +5,7 @@ package io.opentelemetry.javaagent.instrumentation.reactornetty.v1_0; +import io.netty.handler.codec.http.HttpVersion; import io.opentelemetry.instrumentation.api.instrumenter.net.InetSocketAddressNetClientAttributesGetter; import java.net.InetSocketAddress; import java.net.SocketAddress; @@ -22,6 +23,26 @@ public String getTransport(HttpClientConfig request, @Nullable HttpClientRespons return null; } + @Nullable + @Override + public String getProtocolName(HttpClientConfig request, @Nullable HttpClientResponse response) { + if (response == null) { + return null; + } + return response.version().protocolName(); + } + + @Nullable + @Override + public String getProtocolVersion( + HttpClientConfig request, @Nullable HttpClientResponse response) { + if (response == null) { + return null; + } + HttpVersion version = response.version(); + return version.majorVersion() + "." + version.minorVersion(); + } + @Nullable @Override public String getPeerName(HttpClientConfig request) { diff --git a/instrumentation/reactor/reactor-netty/reactor-netty-1.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/AbstractReactorNettyHttpClientTest.java b/instrumentation/reactor/reactor-netty/reactor-netty-1.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/AbstractReactorNettyHttpClientTest.java index f1e7430ecf2c..30cd260cbe5e 100644 --- a/instrumentation/reactor/reactor-netty/reactor-netty-1.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/AbstractReactorNettyHttpClientTest.java +++ b/instrumentation/reactor/reactor-netty/reactor-netty-1.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/AbstractReactorNettyHttpClientTest.java @@ -5,6 +5,7 @@ package io.opentelemetry.javaagent.instrumentation.reactornetty.v1_0; +import static io.opentelemetry.api.common.AttributeKey.stringKey; import static io.opentelemetry.api.trace.SpanKind.CLIENT; import static io.opentelemetry.api.trace.SpanKind.INTERNAL; import static io.opentelemetry.api.trace.SpanKind.SERVER; @@ -133,9 +134,10 @@ protected Set> getHttpAttributes(URI uri) { Set> attributes = new HashSet<>(HttpClientTestOptions.DEFAULT_HTTP_ATTRIBUTES); if (uri.toString().contains("/read-timeout")) { + attributes.remove(stringKey("net.protocol.name")); + attributes.remove(stringKey("net.protocol.version")); attributes.remove(SemanticAttributes.NET_PEER_NAME); attributes.remove(SemanticAttributes.NET_PEER_PORT); - attributes.remove(SemanticAttributes.HTTP_FLAVOR); } return attributes; } diff --git a/instrumentation/reactor/reactor-netty/reactor-netty-1.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/ReactorNettyBaseUrlOnlyTest.java b/instrumentation/reactor/reactor-netty/reactor-netty-1.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/ReactorNettyBaseUrlOnlyTest.java index ccfa43b3aeb1..a07b8f33b63f 100644 --- a/instrumentation/reactor/reactor-netty/reactor-netty-1.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/ReactorNettyBaseUrlOnlyTest.java +++ b/instrumentation/reactor/reactor-netty/reactor-netty-1.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/ReactorNettyBaseUrlOnlyTest.java @@ -5,12 +5,12 @@ package io.opentelemetry.javaagent.instrumentation.reactornetty.v1_0; +import static io.opentelemetry.api.common.AttributeKey.stringKey; import static io.opentelemetry.api.trace.SpanKind.CLIENT; import static io.opentelemetry.api.trace.SpanKind.INTERNAL; import static io.opentelemetry.api.trace.SpanKind.SERVER; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; -import static io.opentelemetry.semconv.trace.attributes.SemanticAttributes.HttpFlavorValues.HTTP_1_1; import static org.assertj.core.api.Assertions.assertThat; import io.opentelemetry.api.GlobalOpenTelemetry; @@ -109,11 +109,12 @@ void testSuccessfulRequest() { .hasAttributesSatisfyingExactly( equalTo(SemanticAttributes.HTTP_METHOD, "GET"), equalTo(SemanticAttributes.HTTP_URL, uri + "/"), - equalTo(SemanticAttributes.HTTP_FLAVOR, HTTP_1_1), equalTo(SemanticAttributes.HTTP_STATUS_CODE, 200), satisfies( SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH, AbstractLongAssert::isNotNegative), + equalTo(stringKey("net.protocol.name"), "http"), + equalTo(stringKey("net.protocol.version"), "1.1"), equalTo(SemanticAttributes.NET_PEER_NAME, "localhost"), equalTo(SemanticAttributes.NET_PEER_PORT, server.httpPort()), equalTo(SemanticAttributes.NET_SOCK_PEER_ADDR, "127.0.0.1")), diff --git a/instrumentation/reactor/reactor-netty/reactor-netty-1.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/ReactorNettyClientSslTest.java b/instrumentation/reactor/reactor-netty/reactor-netty-1.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/ReactorNettyClientSslTest.java index 98f0a0ff1008..50620bff7fd3 100644 --- a/instrumentation/reactor/reactor-netty/reactor-netty-1.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/ReactorNettyClientSslTest.java +++ b/instrumentation/reactor/reactor-netty/reactor-netty-1.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/ReactorNettyClientSslTest.java @@ -5,13 +5,13 @@ package io.opentelemetry.javaagent.instrumentation.reactornetty.v1_0; +import static io.opentelemetry.api.common.AttributeKey.stringKey; import static io.opentelemetry.api.trace.SpanKind.CLIENT; import static io.opentelemetry.api.trace.SpanKind.INTERNAL; import static io.opentelemetry.api.trace.SpanKind.SERVER; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; -import static io.opentelemetry.semconv.trace.attributes.SemanticAttributes.HttpFlavorValues.HTTP_1_1; import static io.opentelemetry.semconv.trace.attributes.SemanticAttributes.NetTransportValues.IP_TCP; import static org.assertj.core.api.Assertions.catchThrowable; @@ -154,11 +154,12 @@ void shouldSuccessfullyEstablishSslHandshake() throws SSLException { .hasAttributesSatisfyingExactly( equalTo(SemanticAttributes.HTTP_METHOD, "GET"), equalTo(SemanticAttributes.HTTP_URL, uri), - equalTo(SemanticAttributes.HTTP_FLAVOR, HTTP_1_1), equalTo(SemanticAttributes.HTTP_STATUS_CODE, 200), satisfies( SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH, AbstractLongAssert::isNotNegative), + equalTo(stringKey("net.protocol.name"), "http"), + equalTo(stringKey("net.protocol.version"), "1.1"), equalTo(SemanticAttributes.NET_PEER_NAME, "localhost"), equalTo(SemanticAttributes.NET_PEER_PORT, server.httpsPort()), equalTo(SemanticAttributes.NET_SOCK_PEER_ADDR, "127.0.0.1")), diff --git a/instrumentation/reactor/reactor-netty/reactor-netty-1.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/ReactorNettyConnectionSpanTest.java b/instrumentation/reactor/reactor-netty/reactor-netty-1.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/ReactorNettyConnectionSpanTest.java index 1bf36a77c14a..ad7da3593664 100644 --- a/instrumentation/reactor/reactor-netty/reactor-netty-1.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/ReactorNettyConnectionSpanTest.java +++ b/instrumentation/reactor/reactor-netty/reactor-netty-1.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/ReactorNettyConnectionSpanTest.java @@ -5,12 +5,12 @@ package io.opentelemetry.javaagent.instrumentation.reactornetty.v1_0; +import static io.opentelemetry.api.common.AttributeKey.stringKey; import static io.opentelemetry.api.trace.SpanKind.CLIENT; import static io.opentelemetry.api.trace.SpanKind.INTERNAL; import static io.opentelemetry.api.trace.SpanKind.SERVER; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; -import static io.opentelemetry.semconv.trace.attributes.SemanticAttributes.HttpFlavorValues.HTTP_1_1; import static io.opentelemetry.semconv.trace.attributes.SemanticAttributes.NetTransportValues.IP_TCP; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.catchThrowable; @@ -80,11 +80,12 @@ void testSuccessfulRequest() { .hasAttributesSatisfyingExactly( equalTo(SemanticAttributes.HTTP_METHOD, "GET"), equalTo(SemanticAttributes.HTTP_URL, uri), - equalTo(SemanticAttributes.HTTP_FLAVOR, HTTP_1_1), equalTo(SemanticAttributes.HTTP_STATUS_CODE, 200), satisfies( SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH, AbstractLongAssert::isNotNegative), + equalTo(stringKey("net.protocol.name"), "http"), + equalTo(stringKey("net.protocol.version"), "1.1"), equalTo(SemanticAttributes.NET_PEER_NAME, "localhost"), equalTo(SemanticAttributes.NET_PEER_PORT, server.httpPort()), equalTo(SemanticAttributes.NET_SOCK_PEER_ADDR, "127.0.0.1")), diff --git a/instrumentation/redisson/redisson-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/redisson/RedissonNetAttributesGetter.java b/instrumentation/redisson/redisson-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/redisson/RedissonNetAttributesGetter.java index dbf8a4d96fb1..5643746eda98 100644 --- a/instrumentation/redisson/redisson-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/redisson/RedissonNetAttributesGetter.java +++ b/instrumentation/redisson/redisson-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/redisson/RedissonNetAttributesGetter.java @@ -18,6 +18,18 @@ public String getTransport(RedissonRequest request, @Nullable Void unused) { return null; } + @Nullable + @Override + public String getProtocolName(RedissonRequest redissonRequest, @Nullable Void unused) { + return null; + } + + @Nullable + @Override + public String getProtocolVersion(RedissonRequest redissonRequest, @Nullable Void unused) { + return null; + } + @Nullable @Override public String getPeerName(RedissonRequest redissonRequest) { diff --git a/instrumentation/spring/spring-web/spring-web-3.1/library/src/main/java/io/opentelemetry/instrumentation/spring/web/v3_1/SpringWebHttpAttributesGetter.java b/instrumentation/spring/spring-web/spring-web-3.1/library/src/main/java/io/opentelemetry/instrumentation/spring/web/v3_1/SpringWebHttpAttributesGetter.java index 06c5d6fbeb65..13d7d738e94c 100644 --- a/instrumentation/spring/spring-web/spring-web-3.1/library/src/main/java/io/opentelemetry/instrumentation/spring/web/v3_1/SpringWebHttpAttributesGetter.java +++ b/instrumentation/spring/spring-web/spring-web-3.1/library/src/main/java/io/opentelemetry/instrumentation/spring/web/v3_1/SpringWebHttpAttributesGetter.java @@ -36,13 +36,6 @@ public List getRequestHeader(HttpRequest httpRequest, String name) { return httpRequest.getHeaders().getOrDefault(name, emptyList()); } - @Override - @Nullable - public String getFlavor( - HttpRequest httpRequest, @Nullable ClientHttpResponse clientHttpResponse) { - return null; - } - @Nullable private static final MethodHandle GET_STATUS_CODE; @Nullable private static final MethodHandle STATUS_CODE_VALUE; diff --git a/instrumentation/spring/spring-web/spring-web-3.1/library/src/main/java/io/opentelemetry/instrumentation/spring/web/v3_1/SpringWebNetAttributesGetter.java b/instrumentation/spring/spring-web/spring-web-3.1/library/src/main/java/io/opentelemetry/instrumentation/spring/web/v3_1/SpringWebNetAttributesGetter.java index 4a47d826ee7a..95442550ece9 100644 --- a/instrumentation/spring/spring-web/spring-web-3.1/library/src/main/java/io/opentelemetry/instrumentation/spring/web/v3_1/SpringWebNetAttributesGetter.java +++ b/instrumentation/spring/spring-web/spring-web-3.1/library/src/main/java/io/opentelemetry/instrumentation/spring/web/v3_1/SpringWebNetAttributesGetter.java @@ -19,6 +19,18 @@ public String getTransport(HttpRequest httpRequest, @Nullable ClientHttpResponse return SemanticAttributes.NetTransportValues.IP_TCP; } + @Nullable + @Override + public String getProtocolName(HttpRequest httpRequest, @Nullable ClientHttpResponse response) { + return null; + } + + @Nullable + @Override + public String getProtocolVersion(HttpRequest httpRequest, @Nullable ClientHttpResponse response) { + return null; + } + @Override @Nullable public String getPeerName(HttpRequest httpRequest) { diff --git a/instrumentation/spring/spring-web/spring-web-3.1/library/src/test/java/io/opentelemetry/instrumentation/spring/web/v3_1/SpringWebInstrumentationTest.java b/instrumentation/spring/spring-web/spring-web-3.1/library/src/test/java/io/opentelemetry/instrumentation/spring/web/v3_1/SpringWebInstrumentationTest.java index eaa14722de0c..e5626974b92d 100644 --- a/instrumentation/spring/spring-web/spring-web-3.1/library/src/test/java/io/opentelemetry/instrumentation/spring/web/v3_1/SpringWebInstrumentationTest.java +++ b/instrumentation/spring/spring-web/spring-web-3.1/library/src/test/java/io/opentelemetry/instrumentation/spring/web/v3_1/SpringWebInstrumentationTest.java @@ -5,6 +5,7 @@ package io.opentelemetry.instrumentation.spring.web.v3_1; +import static io.opentelemetry.api.common.AttributeKey.stringKey; import static java.util.Collections.singletonList; import io.opentelemetry.api.common.AttributeKey; @@ -13,7 +14,6 @@ import io.opentelemetry.instrumentation.testing.junit.http.HttpClientInstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.http.HttpClientResult; import io.opentelemetry.instrumentation.testing.junit.http.HttpClientTestOptions; -import io.opentelemetry.semconv.trace.attributes.SemanticAttributes; import java.net.URI; import java.util.Collections; import java.util.HashSet; @@ -101,7 +101,8 @@ protected void configure(HttpClientTestOptions.Builder optionsBuilder) { uri -> { Set> attributes = new HashSet<>(HttpClientTestOptions.DEFAULT_HTTP_ATTRIBUTES); - attributes.remove(SemanticAttributes.HTTP_FLAVOR); + attributes.remove(stringKey("net.protocol.name")); + attributes.remove(stringKey("net.protocol.version")); return attributes; }); } diff --git a/instrumentation/spring/spring-webflux/spring-webflux-5.3/library/src/main/java/io/opentelemetry/instrumentation/spring/webflux/v5_3/internal/WebClientHttpAttributesGetter.java b/instrumentation/spring/spring-webflux/spring-webflux-5.3/library/src/main/java/io/opentelemetry/instrumentation/spring/webflux/v5_3/internal/WebClientHttpAttributesGetter.java index 6464d880d7ed..5e0f8cb9ba34 100644 --- a/instrumentation/spring/spring-webflux/spring-webflux-5.3/library/src/main/java/io/opentelemetry/instrumentation/spring/webflux/v5_3/internal/WebClientHttpAttributesGetter.java +++ b/instrumentation/spring/spring-webflux/spring-webflux-5.3/library/src/main/java/io/opentelemetry/instrumentation/spring/webflux/v5_3/internal/WebClientHttpAttributesGetter.java @@ -22,12 +22,6 @@ public String getUrl(ClientRequest request) { return request.url().toString(); } - @Nullable - @Override - public String getFlavor(ClientRequest request, @Nullable ClientResponse response) { - return null; - } - @Override public String getMethod(ClientRequest request) { return request.method().name(); diff --git a/instrumentation/spring/spring-webflux/spring-webflux-5.3/library/src/main/java/io/opentelemetry/instrumentation/spring/webflux/v5_3/internal/WebClientNetAttributesGetter.java b/instrumentation/spring/spring-webflux/spring-webflux-5.3/library/src/main/java/io/opentelemetry/instrumentation/spring/webflux/v5_3/internal/WebClientNetAttributesGetter.java index b58942939481..a4b01902b908 100644 --- a/instrumentation/spring/spring-webflux/spring-webflux-5.3/library/src/main/java/io/opentelemetry/instrumentation/spring/webflux/v5_3/internal/WebClientNetAttributesGetter.java +++ b/instrumentation/spring/spring-webflux/spring-webflux-5.3/library/src/main/java/io/opentelemetry/instrumentation/spring/webflux/v5_3/internal/WebClientNetAttributesGetter.java @@ -23,6 +23,18 @@ public String getTransport(ClientRequest request, @Nullable ClientResponse respo return SemanticAttributes.NetTransportValues.IP_TCP; } + @Nullable + @Override + public String getProtocolName(ClientRequest request, @Nullable ClientResponse response) { + return null; + } + + @Nullable + @Override + public String getProtocolVersion(ClientRequest request, @Nullable ClientResponse response) { + return null; + } + @Nullable @Override public String getPeerName(ClientRequest request) { diff --git a/instrumentation/spring/spring-webflux/spring-webflux-5.3/testing/src/main/java/io/opentelemetry/instrumentation/spring/webflux/client/AbstractSpringWebfluxClientInstrumentationTest.java b/instrumentation/spring/spring-webflux/spring-webflux-5.3/testing/src/main/java/io/opentelemetry/instrumentation/spring/webflux/client/AbstractSpringWebfluxClientInstrumentationTest.java index db64b7b21bd7..f0449191a178 100644 --- a/instrumentation/spring/spring-webflux/spring-webflux-5.3/testing/src/main/java/io/opentelemetry/instrumentation/spring/webflux/client/AbstractSpringWebfluxClientInstrumentationTest.java +++ b/instrumentation/spring/spring-webflux/spring-webflux-5.3/testing/src/main/java/io/opentelemetry/instrumentation/spring/webflux/client/AbstractSpringWebfluxClientInstrumentationTest.java @@ -5,13 +5,13 @@ package io.opentelemetry.instrumentation.spring.webflux.client; +import static io.opentelemetry.api.common.AttributeKey.stringKey; import static java.util.Objects.requireNonNull; import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.instrumentation.testing.junit.http.AbstractHttpClientTest; import io.opentelemetry.instrumentation.testing.junit.http.HttpClientResult; import io.opentelemetry.instrumentation.testing.junit.http.HttpClientTestOptions; -import io.opentelemetry.semconv.trace.attributes.SemanticAttributes; import java.lang.invoke.MethodHandle; import java.lang.invoke.MethodHandles; import java.lang.invoke.MethodType; @@ -71,7 +71,8 @@ protected void configure(HttpClientTestOptions.Builder optionsBuilder) { uri -> { Set> attributes = new HashSet<>(HttpClientTestOptions.DEFAULT_HTTP_ATTRIBUTES); - attributes.remove(SemanticAttributes.HTTP_FLAVOR); + attributes.remove(stringKey("net.protocol.name")); + attributes.remove(stringKey("net.protocol.version")); return attributes; }); diff --git a/instrumentation/twilio-6.6/javaagent/src/test/groovy/test/TwilioClientTest.groovy b/instrumentation/twilio-6.6/javaagent/src/test/groovy/test/TwilioClientTest.groovy index f362f397f0a0..3871e591cbe4 100644 --- a/instrumentation/twilio-6.6/javaagent/src/test/groovy/test/TwilioClientTest.groovy +++ b/instrumentation/twilio-6.6/javaagent/src/test/groovy/test/TwilioClientTest.groovy @@ -249,8 +249,9 @@ class TwilioClientTest extends AgentInstrumentationSpecification { childOf span(1) attributes { "$SemanticAttributes.NET_TRANSPORT.key" SemanticAttributes.NetTransportValues.IP_TCP + "net.protocol.name" "http" + "net.protocol.version" "1.1" "$SemanticAttributes.NET_PEER_NAME.key" "api.twilio.com" - "$SemanticAttributes.HTTP_FLAVOR.key" SemanticAttributes.HttpFlavorValues.HTTP_1_1 "$SemanticAttributes.HTTP_METHOD.key" "POST" "$SemanticAttributes.HTTP_URL.key" "https://api.twilio.com/2010-04-01/Accounts/abc/Messages.json" "$SemanticAttributes.HTTP_STATUS_CODE.key" 200 @@ -316,8 +317,9 @@ class TwilioClientTest extends AgentInstrumentationSpecification { status ERROR attributes { "$SemanticAttributes.NET_TRANSPORT.key" SemanticAttributes.NetTransportValues.IP_TCP + "net.protocol.name" "http" + "net.protocol.version" "1.1" "$SemanticAttributes.NET_PEER_NAME.key" "api.twilio.com" - "$SemanticAttributes.HTTP_FLAVOR.key" SemanticAttributes.HttpFlavorValues.HTTP_1_1 "$SemanticAttributes.HTTP_METHOD.key" "POST" "$SemanticAttributes.HTTP_URL.key" "https://api.twilio.com/2010-04-01/Accounts/abc/Messages.json" "$SemanticAttributes.HTTP_STATUS_CODE.key" 500 @@ -329,8 +331,9 @@ class TwilioClientTest extends AgentInstrumentationSpecification { childOf span(1) attributes { "$SemanticAttributes.NET_TRANSPORT.key" SemanticAttributes.NetTransportValues.IP_TCP + "net.protocol.name" "http" + "net.protocol.version" "1.1" "$SemanticAttributes.NET_PEER_NAME.key" "api.twilio.com" - "$SemanticAttributes.HTTP_FLAVOR.key" SemanticAttributes.HttpFlavorValues.HTTP_1_1 "$SemanticAttributes.HTTP_METHOD.key" "POST" "$SemanticAttributes.HTTP_URL.key" "https://api.twilio.com/2010-04-01/Accounts/abc/Messages.json" "$SemanticAttributes.HTTP_STATUS_CODE.key" 200 @@ -403,8 +406,9 @@ class TwilioClientTest extends AgentInstrumentationSpecification { status ERROR attributes { "$SemanticAttributes.NET_TRANSPORT.key" SemanticAttributes.NetTransportValues.IP_TCP + "net.protocol.name" "http" + "net.protocol.version" "1.1" "$SemanticAttributes.NET_PEER_NAME.key" "api.twilio.com" - "$SemanticAttributes.HTTP_FLAVOR.key" SemanticAttributes.HttpFlavorValues.HTTP_1_1 "$SemanticAttributes.HTTP_METHOD.key" "POST" "$SemanticAttributes.HTTP_URL.key" "https://api.twilio.com/2010-04-01/Accounts/abc/Messages.json" "$SemanticAttributes.HTTP_STATUS_CODE.key" 500 @@ -416,8 +420,9 @@ class TwilioClientTest extends AgentInstrumentationSpecification { childOf span(1) attributes { "$SemanticAttributes.NET_TRANSPORT.key" SemanticAttributes.NetTransportValues.IP_TCP + "net.protocol.name" "http" + "net.protocol.version" "1.1" "$SemanticAttributes.NET_PEER_NAME.key" "api.twilio.com" - "$SemanticAttributes.HTTP_FLAVOR.key" SemanticAttributes.HttpFlavorValues.HTTP_1_1 "$SemanticAttributes.HTTP_METHOD.key" "POST" "$SemanticAttributes.HTTP_URL.key" "https://api.twilio.com/2010-04-01/Accounts/abc/Messages.json" "$SemanticAttributes.HTTP_STATUS_CODE.key" 200 diff --git a/instrumentation/vertx/vertx-http-client/vertx-http-client-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/v3_0/client/Vertx3NetAttributesGetter.java b/instrumentation/vertx/vertx-http-client/vertx-http-client-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/v3_0/client/Vertx3NetAttributesGetter.java index 8f38a06c0351..0f957f61b40c 100644 --- a/instrumentation/vertx/vertx-http-client/vertx-http-client-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/v3_0/client/Vertx3NetAttributesGetter.java +++ b/instrumentation/vertx/vertx-http-client/vertx-http-client-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/v3_0/client/Vertx3NetAttributesGetter.java @@ -21,6 +21,19 @@ public String getTransport(HttpClientRequest request, @Nullable HttpClientRespon return SemanticAttributes.NetTransportValues.IP_TCP; } + @Nullable + @Override + public String getProtocolName(HttpClientRequest request, @Nullable HttpClientResponse response) { + return null; + } + + @Nullable + @Override + public String getProtocolVersion( + HttpClientRequest request, @Nullable HttpClientResponse response) { + return null; + } + @Nullable @Override public String getPeerName(HttpClientRequest request) { diff --git a/instrumentation/vertx/vertx-http-client/vertx-http-client-3.0/javaagent/src/test/groovy/client/VertxHttpClientTest.groovy b/instrumentation/vertx/vertx-http-client/vertx-http-client-3.0/javaagent/src/test/groovy/client/VertxHttpClientTest.groovy index 5394d5a4ac63..334d6f774523 100644 --- a/instrumentation/vertx/vertx-http-client/vertx-http-client-3.0/javaagent/src/test/groovy/client/VertxHttpClientTest.groovy +++ b/instrumentation/vertx/vertx-http-client/vertx-http-client-3.0/javaagent/src/test/groovy/client/VertxHttpClientTest.groovy @@ -20,6 +20,8 @@ import spock.lang.Shared import java.util.concurrent.CompletableFuture +import static io.opentelemetry.api.common.AttributeKey.stringKey + class VertxHttpClientTest extends HttpClientTest implements AgentTestTrait { @Shared @@ -81,7 +83,8 @@ class VertxHttpClientTest extends HttpClientTest implements A @Override Set> httpAttributes(URI uri) { def attributes = super.httpAttributes(uri) - attributes.remove(SemanticAttributes.HTTP_FLAVOR) + attributes.remove(stringKey("net.protocol.name")) + attributes.remove(stringKey("net.protocol.version")) attributes.remove(SemanticAttributes.NET_PEER_NAME) attributes.remove(SemanticAttributes.NET_PEER_PORT) return attributes diff --git a/instrumentation/vertx/vertx-http-client/vertx-http-client-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/v4_0/client/Vertx4HttpAttributesGetter.java b/instrumentation/vertx/vertx-http-client/vertx-http-client-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/v4_0/client/Vertx4HttpAttributesGetter.java index 4e846b7f3959..164088b3b374 100644 --- a/instrumentation/vertx/vertx-http-client/vertx-http-client-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/v4_0/client/Vertx4HttpAttributesGetter.java +++ b/instrumentation/vertx/vertx-http-client/vertx-http-client-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/v4_0/client/Vertx4HttpAttributesGetter.java @@ -6,11 +6,7 @@ package io.opentelemetry.javaagent.instrumentation.vertx.v4_0.client; import io.opentelemetry.javaagent.instrumentation.vertx.client.AbstractVertxHttpAttributesGetter; -import io.opentelemetry.semconv.trace.attributes.SemanticAttributes; import io.vertx.core.http.HttpClientRequest; -import io.vertx.core.http.HttpClientResponse; -import io.vertx.core.http.HttpVersion; -import javax.annotation.Nullable; final class Vertx4HttpAttributesGetter extends AbstractVertxHttpAttributesGetter { @@ -31,22 +27,4 @@ private static boolean isAbsolute(String uri) { public String getMethod(HttpClientRequest request) { return request.getMethod().name(); } - - @Nullable - @Override - public String getFlavor(HttpClientRequest request, @Nullable HttpClientResponse response) { - HttpVersion version = request.version(); - if (version == null) { - return null; - } - switch (version) { - case HTTP_1_0: - return SemanticAttributes.HttpFlavorValues.HTTP_1_0; - case HTTP_1_1: - return SemanticAttributes.HttpFlavorValues.HTTP_1_1; - case HTTP_2: - return SemanticAttributes.HttpFlavorValues.HTTP_2_0; - } - return null; - } } diff --git a/instrumentation/vertx/vertx-http-client/vertx-http-client-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/v4_0/client/Vertx4NetAttributesGetter.java b/instrumentation/vertx/vertx-http-client/vertx-http-client-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/v4_0/client/Vertx4NetAttributesGetter.java index 08ced3d7689b..9113bcbccfe3 100644 --- a/instrumentation/vertx/vertx-http-client/vertx-http-client-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/v4_0/client/Vertx4NetAttributesGetter.java +++ b/instrumentation/vertx/vertx-http-client/vertx-http-client-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/v4_0/client/Vertx4NetAttributesGetter.java @@ -9,6 +9,7 @@ import io.opentelemetry.semconv.trace.attributes.SemanticAttributes; import io.vertx.core.http.HttpClientRequest; import io.vertx.core.http.HttpClientResponse; +import io.vertx.core.http.HttpVersion; import io.vertx.core.net.SocketAddress; import javax.annotation.Nullable; @@ -20,6 +21,30 @@ public String getTransport(HttpClientRequest request, @Nullable HttpClientRespon return SemanticAttributes.NetTransportValues.IP_TCP; } + @Override + public String getProtocolName(HttpClientRequest request, @Nullable HttpClientResponse response) { + return "http"; + } + + @Nullable + @Override + public String getProtocolVersion( + HttpClientRequest request, @Nullable HttpClientResponse response) { + HttpVersion version = request.version(); + if (version == null) { + return null; + } + switch (version) { + case HTTP_1_0: + return "1.0"; + case HTTP_1_1: + return "1.1"; + case HTTP_2: + return "2.0"; + } + return null; + } + @Nullable @Override public String getPeerName(HttpClientRequest request) { diff --git a/instrumentation/vertx/vertx-http-client/vertx-http-client-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/client/AbstractVertxHttpAttributesGetter.java b/instrumentation/vertx/vertx-http-client/vertx-http-client-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/client/AbstractVertxHttpAttributesGetter.java index aaa6fac3474a..0dcc9b5f2939 100644 --- a/instrumentation/vertx/vertx-http-client/vertx-http-client-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/client/AbstractVertxHttpAttributesGetter.java +++ b/instrumentation/vertx/vertx-http-client/vertx-http-client-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/client/AbstractVertxHttpAttributesGetter.java @@ -14,12 +14,6 @@ public abstract class AbstractVertxHttpAttributesGetter implements HttpClientAttributesGetter { - @Nullable - @Override - public String getFlavor(HttpClientRequest request, @Nullable HttpClientResponse response) { - return null; - } - @Override public List getRequestHeader(HttpClientRequest request, String name) { return request.headers().getAll(name); diff --git a/instrumentation/vertx/vertx-rx-java-3.5/javaagent/src/version35Test/groovy/client/VertxRxCircuitBreakerWebClientTest.groovy b/instrumentation/vertx/vertx-rx-java-3.5/javaagent/src/version35Test/groovy/client/VertxRxCircuitBreakerWebClientTest.groovy index de95c8fc381f..93e3a44dfb15 100644 --- a/instrumentation/vertx/vertx-rx-java-3.5/javaagent/src/version35Test/groovy/client/VertxRxCircuitBreakerWebClientTest.groovy +++ b/instrumentation/vertx/vertx-rx-java-3.5/javaagent/src/version35Test/groovy/client/VertxRxCircuitBreakerWebClientTest.groovy @@ -25,6 +25,9 @@ import spock.lang.Shared import java.util.concurrent.CompletableFuture import java.util.function.Consumer +import static io.opentelemetry.api.common.AttributeKey.stringKey +import static io.opentelemetry.api.common.AttributeKey.stringKey + class VertxRxCircuitBreakerWebClientTest extends HttpClientTest> implements AgentTestTrait { @Shared @@ -102,7 +105,8 @@ class VertxRxCircuitBreakerWebClientTest extends HttpClientTest> @Override Set> httpAttributes(URI uri) { def attributes = super.httpAttributes(uri) - attributes.remove(SemanticAttributes.HTTP_FLAVOR) + attributes.remove(stringKey("net.protocol.name")) + attributes.remove(stringKey("net.protocol.version")) attributes.remove(SemanticAttributes.NET_PEER_NAME) attributes.remove(SemanticAttributes.NET_PEER_PORT) return attributes diff --git a/instrumentation/vertx/vertx-rx-java-3.5/javaagent/src/version35Test/groovy/client/VertxRxWebClientTest.groovy b/instrumentation/vertx/vertx-rx-java-3.5/javaagent/src/version35Test/groovy/client/VertxRxWebClientTest.groovy index e2091837a833..23e500c805f8 100644 --- a/instrumentation/vertx/vertx-rx-java-3.5/javaagent/src/version35Test/groovy/client/VertxRxWebClientTest.groovy +++ b/instrumentation/vertx/vertx-rx-java-3.5/javaagent/src/version35Test/groovy/client/VertxRxWebClientTest.groovy @@ -21,6 +21,9 @@ import io.vertx.reactivex.ext.web.client.HttpResponse import io.vertx.reactivex.ext.web.client.WebClient import spock.lang.Shared +import static io.opentelemetry.api.common.AttributeKey.stringKey +import static io.opentelemetry.api.common.AttributeKey.stringKey + class VertxRxWebClientTest extends HttpClientTest> implements AgentTestTrait { @Shared @@ -88,7 +91,8 @@ class VertxRxWebClientTest extends HttpClientTest> implement @Override Set> httpAttributes(URI uri) { def attributes = super.httpAttributes(uri) - attributes.remove(SemanticAttributes.HTTP_FLAVOR) + attributes.remove(stringKey("net.protocol.name")) + attributes.remove(stringKey("net.protocol.version")) attributes.remove(SemanticAttributes.NET_PEER_NAME) attributes.remove(SemanticAttributes.NET_PEER_PORT) return attributes diff --git a/testing-common/src/main/java/io/opentelemetry/instrumentation/testing/junit/http/AbstractHttpClientTest.java b/testing-common/src/main/java/io/opentelemetry/instrumentation/testing/junit/http/AbstractHttpClientTest.java index 905eb91ef16b..4d84e5de7452 100644 --- a/testing-common/src/main/java/io/opentelemetry/instrumentation/testing/junit/http/AbstractHttpClientTest.java +++ b/testing-common/src/main/java/io/opentelemetry/instrumentation/testing/junit/http/AbstractHttpClientTest.java @@ -14,6 +14,7 @@ import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.trace.Span; import io.opentelemetry.api.trace.SpanKind; +import io.opentelemetry.instrumentation.api.instrumenter.net.internal.NetAttributes; import io.opentelemetry.instrumentation.test.utils.PortUtils; import io.opentelemetry.instrumentation.testing.InstrumentationTestRunner; import io.opentelemetry.sdk.testing.assertj.SpanDataAssert; @@ -890,6 +891,13 @@ SpanDataAssert assertClientSpan( if (attrs.get(SemanticAttributes.NET_TRANSPORT) != null) { assertThat(attrs).containsEntry(SemanticAttributes.NET_TRANSPORT, IP_TCP); } + if (httpClientAttributes.contains(NetAttributes.NET_PROTOCOL_NAME)) { + assertThat(attrs).containsEntry(NetAttributes.NET_PROTOCOL_NAME, "http"); + } + if (httpClientAttributes.contains(NetAttributes.NET_PROTOCOL_VERSION)) { + // TODO(anuraaga): Support HTTP/2 + assertThat(attrs).containsEntry(NetAttributes.NET_PROTOCOL_VERSION, "1.1"); + } if (httpClientAttributes.contains(SemanticAttributes.NET_PEER_NAME)) { assertThat(attrs).containsEntry(SemanticAttributes.NET_PEER_NAME, uri.getHost()); } @@ -935,13 +943,6 @@ SpanDataAssert assertClientSpan( if (httpClientAttributes.contains(SemanticAttributes.HTTP_METHOD)) { assertThat(attrs).containsEntry(SemanticAttributes.HTTP_METHOD, method); } - if (httpClientAttributes.contains(SemanticAttributes.HTTP_FLAVOR)) { - // TODO(anuraaga): Support HTTP/2 - assertThat(attrs) - .containsEntry( - SemanticAttributes.HTTP_FLAVOR, - SemanticAttributes.HttpFlavorValues.HTTP_1_1); - } if (httpClientAttributes.contains(SemanticAttributes.HTTP_USER_AGENT)) { String userAgent = options.getUserAgent(); if (userAgent != null || attrs.get(SemanticAttributes.HTTP_USER_AGENT) != null) { @@ -986,10 +987,12 @@ static SpanDataAssert assertServerSpan(SpanDataAssert span) { } protected Set> httpAttributes(URI uri) { + // FIXME (mateusz) why is this not the same as HttpClientTestOptions.DEFAULT_HTTP_ATTRIBUTES? Set> attributes = new HashSet<>(); + attributes.add(NetAttributes.NET_PROTOCOL_NAME); + attributes.add(NetAttributes.NET_PROTOCOL_VERSION); attributes.add(SemanticAttributes.HTTP_URL); attributes.add(SemanticAttributes.HTTP_METHOD); - attributes.add(SemanticAttributes.HTTP_FLAVOR); attributes.add(SemanticAttributes.HTTP_USER_AGENT); return attributes; } diff --git a/testing-common/src/main/java/io/opentelemetry/instrumentation/testing/junit/http/HttpClientTestOptions.java b/testing-common/src/main/java/io/opentelemetry/instrumentation/testing/junit/http/HttpClientTestOptions.java index c182cd859ada..a013040a6918 100644 --- a/testing-common/src/main/java/io/opentelemetry/instrumentation/testing/junit/http/HttpClientTestOptions.java +++ b/testing-common/src/main/java/io/opentelemetry/instrumentation/testing/junit/http/HttpClientTestOptions.java @@ -8,6 +8,7 @@ import com.google.auto.value.AutoValue; import com.google.errorprone.annotations.CanIgnoreReturnValue; import io.opentelemetry.api.common.AttributeKey; +import io.opentelemetry.instrumentation.api.instrumenter.net.internal.NetAttributes; import io.opentelemetry.semconv.trace.attributes.SemanticAttributes; import java.net.URI; import java.util.Arrays; @@ -24,11 +25,12 @@ public abstract class HttpClientTestOptions { Collections.unmodifiableSet( new HashSet<>( Arrays.asList( + NetAttributes.NET_PROTOCOL_NAME, + NetAttributes.NET_PROTOCOL_VERSION, SemanticAttributes.NET_PEER_NAME, SemanticAttributes.NET_PEER_PORT, SemanticAttributes.HTTP_URL, SemanticAttributes.HTTP_METHOD, - SemanticAttributes.HTTP_FLAVOR, SemanticAttributes.HTTP_USER_AGENT))); public static final BiFunction DEFAULT_EXPECTED_CLIENT_SPAN_NAME_MAPPER = From 6b1777a24ae54abc38e17a95ee72937afe4dab9d Mon Sep 17 00:00:00 2001 From: Mateusz Rzeszutek Date: Mon, 27 Mar 2023 08:47:44 +0200 Subject: [PATCH 02/13] r2dbc --- .../v1_0/internal/R2dbcNetAttributesGetter.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/instrumentation/r2dbc-1.0/library/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/internal/R2dbcNetAttributesGetter.java b/instrumentation/r2dbc-1.0/library/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/internal/R2dbcNetAttributesGetter.java index 9b8cfe2e6f6b..751a512ee0c7 100644 --- a/instrumentation/r2dbc-1.0/library/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/internal/R2dbcNetAttributesGetter.java +++ b/instrumentation/r2dbc-1.0/library/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/internal/R2dbcNetAttributesGetter.java @@ -21,6 +21,18 @@ public String getTransport(DbExecution request, @Nullable Void unused) { return null; } + @Nullable + @Override + public String getProtocolName(DbExecution dbExecution, @Nullable Void unused) { + return null; + } + + @Nullable + @Override + public String getProtocolVersion(DbExecution dbExecution, @Nullable Void unused) { + return null; + } + @Nullable @Override public String getPeerName(DbExecution request) { From cdb4a57f9955b43804a9f4cabc85a3383287f100 Mon Sep 17 00:00:00 2001 From: Mateusz Rzeszutek Date: Mon, 27 Mar 2023 09:25:55 +0200 Subject: [PATCH 03/13] fix jodd test compilation --- .../v4_2/JoddHttpHttpAttributesGetterTest.java | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/instrumentation/jodd-http-4.2/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/joddhttp/v4_2/JoddHttpHttpAttributesGetterTest.java b/instrumentation/jodd-http-4.2/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/joddhttp/v4_2/JoddHttpHttpAttributesGetterTest.java index 04c6a6409eed..a0ddcfbbb5ca 100644 --- a/instrumentation/jodd-http-4.2/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/joddhttp/v4_2/JoddHttpHttpAttributesGetterTest.java +++ b/instrumentation/jodd-http-4.2/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/joddhttp/v4_2/JoddHttpHttpAttributesGetterTest.java @@ -10,12 +10,9 @@ import static jodd.http.HttpStatus.HTTP_NOT_FOUND; import static jodd.http.HttpStatus.HTTP_OK; import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNull; -import io.opentelemetry.semconv.trace.attributes.SemanticAttributes.HttpFlavorValues; import java.util.Arrays; import java.util.List; -import jodd.http.HttpBase; import jodd.http.HttpRequest; import jodd.http.HttpResponse; import org.junit.jupiter.api.Test; @@ -72,21 +69,6 @@ void getStatusCode() { } } - @Test - void getFlavor() { - HttpRequest request = HttpRequest.get("/test").httpVersion(HttpBase.HTTP_1_1); - assertEquals(HttpFlavorValues.HTTP_1_1, attributesGetter.getFlavor(request, null)); - request.httpVersion(null); - assertNull(attributesGetter.getFlavor(request, null)); - request.httpVersion("INVALID-HTTP-Version"); - assertNull(attributesGetter.getFlavor(request, null)); - request.httpVersion(null); - HttpResponse response = new HttpResponse().httpVersion(HttpBase.HTTP_1_0); - assertEquals(HttpFlavorValues.HTTP_1_0, attributesGetter.getFlavor(request, response)); - response.httpVersion(null); - assertNull(attributesGetter.getFlavor(request, response)); - } - @Test void getResponseHeader() { HttpResponse response = From 5df5d12bd4f13afd2f32e88f4a315a6bd327c755 Mon Sep 17 00:00:00 2001 From: Mateusz Rzeszutek Date: Mon, 27 Mar 2023 10:05:29 +0200 Subject: [PATCH 04/13] fix tests --- .../v5_0/AbstractApacheHttpClientTest.java | 7 ++++--- .../instrumentation/apachecamel/aws/AwsSpan.groovy | 3 ++- .../src/test/groovy/JaxRsClientTest.groovy | 2 ++ 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/instrumentation/apache-httpclient/apache-httpclient-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v5_0/AbstractApacheHttpClientTest.java b/instrumentation/apache-httpclient/apache-httpclient-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v5_0/AbstractApacheHttpClientTest.java index 1d40695ec85c..8c93f2f7af74 100644 --- a/instrumentation/apache-httpclient/apache-httpclient-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v5_0/AbstractApacheHttpClientTest.java +++ b/instrumentation/apache-httpclient/apache-httpclient-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v5_0/AbstractApacheHttpClientTest.java @@ -5,8 +5,9 @@ package io.opentelemetry.javaagent.instrumentation.apachehttpclient.v5_0; +import static io.opentelemetry.api.common.AttributeKey.stringKey; + import io.opentelemetry.api.common.AttributeKey; -import io.opentelemetry.instrumentation.api.instrumenter.net.internal.NetAttributes; import io.opentelemetry.instrumentation.testing.junit.http.AbstractHttpClientTest; import io.opentelemetry.instrumentation.testing.junit.http.HttpClientResult; import io.opentelemetry.instrumentation.testing.junit.http.HttpClientTestOptions; @@ -43,8 +44,8 @@ protected Set> getHttpAttributes(URI endpoint) { attributes.add(SemanticAttributes.HTTP_URL); attributes.add(SemanticAttributes.HTTP_METHOD); if (endpoint.toString().contains("/success")) { - attributes.add(NetAttributes.NET_PROTOCOL_NAME); - attributes.add(NetAttributes.NET_PROTOCOL_VERSION); + attributes.add(stringKey("net.protocol.name")); + attributes.add(stringKey("net.protocol.version")); } attributes.add(SemanticAttributes.HTTP_USER_AGENT); return attributes; diff --git a/instrumentation/camel-2.20/javaagent/src/test/groovy/io/opentelemetry/javaagent/instrumentation/apachecamel/aws/AwsSpan.groovy b/instrumentation/camel-2.20/javaagent/src/test/groovy/io/opentelemetry/javaagent/instrumentation/apachecamel/aws/AwsSpan.groovy index 765c917fbc84..df7ee080e1d0 100644 --- a/instrumentation/camel-2.20/javaagent/src/test/groovy/io/opentelemetry/javaagent/instrumentation/apachecamel/aws/AwsSpan.groovy +++ b/instrumentation/camel-2.20/javaagent/src/test/groovy/io/opentelemetry/javaagent/instrumentation/apachecamel/aws/AwsSpan.groovy @@ -56,13 +56,14 @@ class AwsSpan { "rpc.service" "AmazonSQS" "aws.queue.name" { it == null || it == queueName } "aws.queue.url" { it == null || it == queueUrl } - "http.flavor" "1.1" "http.method" "POST" "http.status_code" 200 "http.url" String "http.user_agent" { it == null || it instanceof String } "http.request_content_length" { it == null || it instanceof Long } "http.response_content_length" { it == null || it instanceof Long } + "net.protocol.name" "http" + "net.protocol.version" "1.1" "net.peer.name" String "net.peer.port" { it == null || it instanceof Number } "net.transport" IP_TCP diff --git a/instrumentation/jaxrs-client/jaxrs-client-2.0-testing/src/test/groovy/JaxRsClientTest.groovy b/instrumentation/jaxrs-client/jaxrs-client-2.0-testing/src/test/groovy/JaxRsClientTest.groovy index 1c4c3ae47241..50b3b834fcbd 100644 --- a/instrumentation/jaxrs-client/jaxrs-client-2.0-testing/src/test/groovy/JaxRsClientTest.groovy +++ b/instrumentation/jaxrs-client/jaxrs-client-2.0-testing/src/test/groovy/JaxRsClientTest.groovy @@ -109,6 +109,8 @@ abstract class JaxRsClientTest extends HttpClientTest implem status ERROR attributes { "$SemanticAttributes.NET_TRANSPORT" IP_TCP + "net.protocol.name" "http" + "net.protocol.version" "1.1" "$SemanticAttributes.NET_PEER_NAME" uri.host "$SemanticAttributes.NET_PEER_PORT" uri.port > 0 ? uri.port : { it == null || it == 443 } "$SemanticAttributes.NET_SOCK_PEER_ADDR" { it == "127.0.0.1" || it == null } From 0573b665ec2b196a4708e8e54e061e5c6b6ba1d8 Mon Sep 17 00:00:00 2001 From: Mateusz Rzeszutek Date: Mon, 27 Mar 2023 11:15:51 +0200 Subject: [PATCH 05/13] fix tests --- .../test/groovy/AsyncHttpClientTest.groovy | 10 +++ .../test/groovy/AsyncHttpClientTest.groovy | 9 -- .../src/test/groovy/S3TracingTest.groovy | 87 ++++++++++++------- .../src/test/groovy/SnsTracingTest.groovy | 24 +++-- .../v1_11/AbstractSqsTracingTest.groovy | 12 ++- .../v2_2/AbstractAws2SqsTracingTest.groovy | 4 - .../apachecamel/aws/AwsSpan.groovy | 6 +- .../groovy/PlayWsClientTestBaseBase.groovy | 10 +-- .../smoketest/AppServerTest.groovy | 4 +- 9 files changed, 103 insertions(+), 63 deletions(-) diff --git a/instrumentation/async-http-client/async-http-client-1.9/javaagent/src/test/groovy/AsyncHttpClientTest.groovy b/instrumentation/async-http-client/async-http-client-1.9/javaagent/src/test/groovy/AsyncHttpClientTest.groovy index 95907d85f9e2..e91c7fec5be5 100644 --- a/instrumentation/async-http-client/async-http-client-1.9/javaagent/src/test/groovy/AsyncHttpClientTest.groovy +++ b/instrumentation/async-http-client/async-http-client-1.9/javaagent/src/test/groovy/AsyncHttpClientTest.groovy @@ -10,6 +10,7 @@ import com.ning.http.client.Request import com.ning.http.client.RequestBuilder import com.ning.http.client.Response import com.ning.http.client.uri.Uri +import io.opentelemetry.api.common.AttributeKey import io.opentelemetry.instrumentation.test.AgentTestTrait import io.opentelemetry.instrumentation.test.base.HttpClientTest import io.opentelemetry.instrumentation.testing.junit.http.HttpClientResult @@ -17,6 +18,8 @@ import io.opentelemetry.instrumentation.testing.junit.http.SingleConnection import spock.lang.AutoCleanup import spock.lang.Shared +import static io.opentelemetry.api.common.AttributeKey.stringKey + class AsyncHttpClientTest extends HttpClientTest implements AgentTestTrait { @AutoCleanup @@ -69,4 +72,11 @@ class AsyncHttpClientTest extends HttpClientTest implements AgentTestTr // for a high concurrency test. return null } + + Set> httpAttributes(URI uri) { + def attributes = super.httpAttributes(uri) + attributes.remove(stringKey("net.protocol.name")) + attributes.remove(stringKey("net.protocol.version")) + return attributes + } } diff --git a/instrumentation/async-http-client/async-http-client-2.0/javaagent/src/test/groovy/AsyncHttpClientTest.groovy b/instrumentation/async-http-client/async-http-client-2.0/javaagent/src/test/groovy/AsyncHttpClientTest.groovy index f6d932d2cdb6..ab841e723648 100644 --- a/instrumentation/async-http-client/async-http-client-2.0/javaagent/src/test/groovy/AsyncHttpClientTest.groovy +++ b/instrumentation/async-http-client/async-http-client-2.0/javaagent/src/test/groovy/AsyncHttpClientTest.groovy @@ -65,13 +65,4 @@ class AsyncHttpClientTest extends HttpClientTest implements AgentTestTr boolean testRedirects() { false } - - @Override - Set> httpAttributes(URI uri) { - Set> extra = [ - SemanticAttributes.HTTP_SCHEME, - SemanticAttributes.HTTP_TARGET - ] - super.httpAttributes(uri) + extra - } } diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/groovy/S3TracingTest.groovy b/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/groovy/S3TracingTest.groovy index 0881daa23127..eda0963be699 100644 --- a/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/groovy/S3TracingTest.groovy +++ b/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/groovy/S3TracingTest.groovy @@ -57,12 +57,13 @@ class S3TracingTest extends AgentInstrumentationSpecification { "aws.queue.name" queueName "rpc.system" "aws-api" "rpc.service" "AmazonSQS" - "http.flavor" "1.1" "http.method" "POST" "http.status_code" 200 "http.url" String "net.peer.name" String "net.transport" IP_TCP + "net.protocol.name" "http" + "net.protocol.version" "1.1" "net.peer.port" { it == null || Number } "$SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH" { it == null || it instanceof Long } "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } @@ -82,12 +83,13 @@ class S3TracingTest extends AgentInstrumentationSpecification { "rpc.system" "aws-api" "rpc.service" "Amazon S3" "aws.bucket.name" bucketName - "http.flavor" "1.1" "http.method" "PUT" "http.status_code" 200 "http.url" String "net.peer.name" String "net.transport" IP_TCP + "net.protocol.name" "http" + "net.protocol.version" "1.1" "net.peer.port" { it == null || Number } "$SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH" { it == null || it instanceof Long } "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } @@ -107,12 +109,13 @@ class S3TracingTest extends AgentInstrumentationSpecification { "aws.queue.url" queueUrl "rpc.system" "aws-api" "rpc.service" "AmazonSQS" - "http.flavor" "1.1" "http.method" "POST" "http.status_code" 200 "http.url" String "net.peer.name" String "net.transport" IP_TCP + "net.protocol.name" "http" + "net.protocol.version" "1.1" "net.peer.port" { it == null || Number } "$SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH" { it == null || it instanceof Long } "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } @@ -132,12 +135,13 @@ class S3TracingTest extends AgentInstrumentationSpecification { "aws.queue.url" queueUrl "rpc.system" "aws-api" "rpc.service" "AmazonSQS" - "http.flavor" "1.1" "http.method" "POST" "http.status_code" 200 "http.url" String "net.peer.name" String "net.transport" IP_TCP + "net.protocol.name" "http" + "net.protocol.version" "1.1" "net.peer.port" { it == null || Number } "$SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH" { it == null || it instanceof Long } "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } @@ -157,12 +161,13 @@ class S3TracingTest extends AgentInstrumentationSpecification { "rpc.system" "aws-api" "rpc.service" "Amazon S3" "aws.bucket.name" bucketName - "http.flavor" "1.1" "http.method" "PUT" "http.status_code" 200 "http.url" String "net.peer.name" String "net.transport" IP_TCP + "net.protocol.name" "http" + "net.protocol.version" "1.1" "net.peer.port" { it == null || Number } "$SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH" { it == null || it instanceof Long } "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } @@ -181,12 +186,13 @@ class S3TracingTest extends AgentInstrumentationSpecification { "aws.queue.url" queueUrl "rpc.system" "aws-api" "rpc.service" "AmazonSQS" - "http.flavor" "1.1" "http.method" "POST" "http.status_code" 200 "http.url" String "net.peer.name" String "net.transport" IP_TCP + "net.protocol.name" "http" + "net.protocol.version" "1.1" "net.peer.port" { it == null || Number } "$SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH" { it == null || it instanceof Long } "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } @@ -205,12 +211,13 @@ class S3TracingTest extends AgentInstrumentationSpecification { "rpc.system" "aws-api" "rpc.service" "Amazon S3" "aws.bucket.name" bucketName - "http.flavor" "1.1" "http.method" "PUT" "http.status_code" 200 "http.url" String "net.peer.name" String "net.transport" IP_TCP + "net.protocol.name" "http" + "net.protocol.version" "1.1" "net.peer.port" { it == null || Number } "$SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH" { it == null || it instanceof Long } "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } @@ -227,13 +234,14 @@ class S3TracingTest extends AgentInstrumentationSpecification { "aws.queue.url" queueUrl "rpc.system" "aws-api" "rpc.service" "AmazonSQS" - "http.flavor" "1.1" "http.method" "POST" "http.status_code" 200 "http.url" String "http.user_agent" String "net.peer.name" String "net.transport" IP_TCP + "net.protocol.name" "http" + "net.protocol.version" "1.1" "net.peer.port" { it == null || Number } "$SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH" { it == null || it instanceof Long } "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } @@ -257,12 +265,13 @@ class S3TracingTest extends AgentInstrumentationSpecification { "aws.queue.url" queueUrl "rpc.system" "aws-api" "rpc.service" "AmazonSQS" - "http.flavor" "1.1" "http.method" "POST" "http.status_code" 200 "http.url" String "net.peer.name" String "net.transport" IP_TCP + "net.protocol.name" "http" + "net.protocol.version" "1.1" "net.peer.port" { it == null || Number } "$SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH" { it == null || it instanceof Long } "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } @@ -281,12 +290,13 @@ class S3TracingTest extends AgentInstrumentationSpecification { "rpc.system" "aws-api" "rpc.service" "Amazon S3" "aws.bucket.name" bucketName - "http.flavor" "1.1" "http.method" "GET" "http.status_code" 200 "http.url" String "net.peer.name" String "net.transport" IP_TCP + "net.protocol.name" "http" + "net.protocol.version" "1.1" "net.peer.port" { it == null || Number } "$SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH" { it == null || it instanceof Long } "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } @@ -305,12 +315,13 @@ class S3TracingTest extends AgentInstrumentationSpecification { "rpc.system" "aws-api" "rpc.service" "Amazon S3" "aws.bucket.name" bucketName - "http.flavor" "1.1" "http.method" "DELETE" "http.status_code" 204 "http.url" String "net.peer.name" String "net.transport" IP_TCP + "net.protocol.name" "http" + "net.protocol.version" "1.1" "net.peer.port" { it == null || Number } "$SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH" { it == null || it instanceof Long } "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } @@ -329,12 +340,13 @@ class S3TracingTest extends AgentInstrumentationSpecification { "rpc.system" "aws-api" "rpc.service" "Amazon S3" "aws.bucket.name" bucketName - "http.flavor" "1.1" "http.method" "DELETE" "http.status_code" 204 "http.url" String "net.peer.name" String "net.transport" IP_TCP + "net.protocol.name" "http" + "net.protocol.version" "1.1" "net.peer.port" { it == null || Number } "$SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH" { it == null || it instanceof Long } "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } @@ -353,12 +365,13 @@ class S3TracingTest extends AgentInstrumentationSpecification { "aws.queue.url" queueUrl "rpc.system" "aws-api" "rpc.service" "AmazonSQS" - "http.flavor" "1.1" "http.method" "POST" "http.status_code" 200 "http.url" String "net.peer.name" String "net.transport" IP_TCP + "net.protocol.name" "http" + "net.protocol.version" "1.1" "net.peer.port" { it == null || Number } "$SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH" { it == null || it instanceof Long } "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } @@ -407,12 +420,13 @@ class S3TracingTest extends AgentInstrumentationSpecification { "aws.queue.name" queueName "rpc.system" "aws-api" "rpc.service" "AmazonSQS" - "http.flavor" "1.1" "http.method" "POST" "http.status_code" 200 "http.url" String "net.peer.name" String "net.transport" IP_TCP + "net.protocol.name" "http" + "net.protocol.version" "1.1" "net.peer.port" { it == null || Number } "$SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH" { it == null || it instanceof Long } "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } @@ -431,12 +445,13 @@ class S3TracingTest extends AgentInstrumentationSpecification { "aws.queue.url" queueUrl "rpc.system" "aws-api" "rpc.service" "AmazonSQS" - "http.flavor" "1.1" "http.method" "POST" "http.status_code" 200 "http.url" String "net.peer.name" String "net.transport" IP_TCP + "net.protocol.name" "http" + "net.protocol.version" "1.1" "net.peer.port" { it == null || Number } "$SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH" { it == null || it instanceof Long } "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } @@ -455,12 +470,13 @@ class S3TracingTest extends AgentInstrumentationSpecification { "rpc.system" "aws-api" "rpc.service" "Amazon S3" "aws.bucket.name" bucketName - "http.flavor" "1.1" "http.method" "PUT" "http.status_code" 200 "http.url" String "net.peer.name" String "net.transport" IP_TCP + "net.protocol.name" "http" + "net.protocol.version" "1.1" "net.peer.port" { it == null || Number } "$SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH" { it == null || it instanceof Long } "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } @@ -478,12 +494,13 @@ class S3TracingTest extends AgentInstrumentationSpecification { "rpc.method" "CreateTopic" "rpc.system" "aws-api" "rpc.service" "AmazonSNS" - "http.flavor" "1.1" "http.method" "POST" "http.status_code" 200 "http.url" String "net.peer.name" String "net.transport" IP_TCP + "net.protocol.name" "http" + "net.protocol.version" "1.1" "net.peer.port" { it == null || Number } "$SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH" { it == null || it instanceof Long } "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } @@ -501,12 +518,13 @@ class S3TracingTest extends AgentInstrumentationSpecification { "rpc.method" "Subscribe" "rpc.system" "aws-api" "rpc.service" "AmazonSNS" - "http.flavor" "1.1" "http.method" "POST" "http.status_code" 200 "http.url" String "net.peer.name" String "net.transport" IP_TCP + "net.protocol.name" "http" + "net.protocol.version" "1.1" "net.peer.port" { it == null || Number } "$SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH" { it == null || it instanceof Long } "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } @@ -525,12 +543,13 @@ class S3TracingTest extends AgentInstrumentationSpecification { "aws.queue.url" queueUrl "rpc.system" "aws-api" "rpc.service" "AmazonSQS" - "http.flavor" "1.1" "http.method" "POST" "http.status_code" 200 "http.url" String "net.peer.name" String "net.transport" IP_TCP + "net.protocol.name" "http" + "net.protocol.version" "1.1" "net.peer.port" { it == null || Number } "$SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH" { it == null || it instanceof Long } "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } @@ -548,12 +567,13 @@ class S3TracingTest extends AgentInstrumentationSpecification { "rpc.method" "SetTopicAttributes" "rpc.system" "aws-api" "rpc.service" "AmazonSNS" - "http.flavor" "1.1" "http.method" "POST" "http.status_code" 200 "http.url" String "net.peer.name" String "net.transport" IP_TCP + "net.protocol.name" "http" + "net.protocol.version" "1.1" "net.peer.port" { it == null || Number } "$SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH" { it == null || it instanceof Long } "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } @@ -572,12 +592,13 @@ class S3TracingTest extends AgentInstrumentationSpecification { "rpc.system" "aws-api" "rpc.service" "Amazon S3" "aws.bucket.name" bucketName - "http.flavor" "1.1" "http.method" "PUT" "http.status_code" 200 "http.url" String "net.peer.name" String "net.transport" IP_TCP + "net.protocol.name" "http" + "net.protocol.version" "1.1" "net.peer.port" { it == null || Number } "$SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH" { it == null || it instanceof Long } "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } @@ -597,12 +618,13 @@ class S3TracingTest extends AgentInstrumentationSpecification { "aws.queue.url" queueUrl "rpc.system" "aws-api" "rpc.service" "AmazonSQS" - "http.flavor" "1.1" "http.method" "POST" "http.status_code" 200 "http.url" String "net.peer.name" String "net.transport" IP_TCP + "net.protocol.name" "http" + "net.protocol.version" "1.1" "net.peer.port" { it == null || Number } "$SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH" { it == null || it instanceof Long } "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } @@ -621,12 +643,13 @@ class S3TracingTest extends AgentInstrumentationSpecification { "rpc.system" "aws-api" "rpc.service" "Amazon S3" "aws.bucket.name" bucketName - "http.flavor" "1.1" "http.method" "PUT" "http.status_code" 200 "http.url" String "net.peer.name" String "net.transport" IP_TCP + "net.protocol.name" "http" + "net.protocol.version" "1.1" "net.peer.port" { it == null || Number } "$SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH" { it == null || it instanceof Long } "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } @@ -649,12 +672,13 @@ class S3TracingTest extends AgentInstrumentationSpecification { "aws.queue.url" queueUrl "rpc.system" "aws-api" "rpc.service" "AmazonSQS" - "http.flavor" "1.1" "http.method" "POST" "http.status_code" 200 "http.url" String "net.peer.name" String "net.transport" IP_TCP + "net.protocol.name" "http" + "net.protocol.version" "1.1" "net.peer.port" { it == null || Number } "$SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH" { it == null || it instanceof Long } "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } @@ -673,13 +697,14 @@ class S3TracingTest extends AgentInstrumentationSpecification { "aws.queue.url" queueUrl "rpc.system" "aws-api" "rpc.service" "AmazonSQS" - "http.flavor" "1.1" "http.method" "POST" "http.status_code" 200 "http.url" String "http.user_agent" String "net.peer.name" String "net.transport" IP_TCP + "net.protocol.name" "http" + "net.protocol.version" "1.1" "net.peer.port" { it == null || Number } "$SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH" { it == null || it instanceof Long } "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } @@ -698,12 +723,13 @@ class S3TracingTest extends AgentInstrumentationSpecification { "rpc.system" "aws-api" "rpc.service" "Amazon S3" "aws.bucket.name" bucketName - "http.flavor" "1.1" "http.method" "GET" "http.status_code" 200 "http.url" String "net.peer.name" String "net.transport" IP_TCP + "net.protocol.name" "http" + "net.protocol.version" "1.1" "net.peer.port" { it == null || Number } "$SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH" { it == null || it instanceof Long } "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } @@ -722,12 +748,13 @@ class S3TracingTest extends AgentInstrumentationSpecification { "rpc.system" "aws-api" "rpc.service" "Amazon S3" "aws.bucket.name" bucketName - "http.flavor" "1.1" "http.method" "DELETE" "http.status_code" 204 "http.url" String "net.peer.name" String "net.transport" IP_TCP + "net.protocol.name" "http" + "net.protocol.version" "1.1" "net.peer.port" { it == null || Number } "$SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH" { it == null || it instanceof Long } "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } @@ -746,12 +773,13 @@ class S3TracingTest extends AgentInstrumentationSpecification { "rpc.system" "aws-api" "rpc.service" "Amazon S3" "aws.bucket.name" bucketName - "http.flavor" "1.1" "http.method" "DELETE" "http.status_code" 204 "http.url" String "net.peer.name" String "net.transport" IP_TCP + "net.protocol.name" "http" + "net.protocol.version" "1.1" "net.peer.port" { it == null || Number } "$SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH" { it == null || it instanceof Long } "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } @@ -770,12 +798,13 @@ class S3TracingTest extends AgentInstrumentationSpecification { "aws.queue.url" queueUrl "rpc.system" "aws-api" "rpc.service" "AmazonSQS" - "http.flavor" "1.1" "http.method" "POST" "http.status_code" 200 "http.url" String "net.peer.name" String "net.transport" IP_TCP + "net.protocol.name" "http" + "net.protocol.version" "1.1" "net.peer.port" { it == null || Number } "$SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH" { it == null || it instanceof Long } "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/groovy/SnsTracingTest.groovy b/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/groovy/SnsTracingTest.groovy index f51e6eab3f37..7afb322ba378 100644 --- a/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/groovy/SnsTracingTest.groovy +++ b/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/groovy/SnsTracingTest.groovy @@ -50,12 +50,13 @@ class SnsTracingTest extends AgentInstrumentationSpecification { "aws.queue.name" queueName "rpc.system" "aws-api" "rpc.service" "AmazonSQS" - "http.flavor" "1.1" "http.method" "POST" "http.status_code" 200 "http.url" String "net.peer.name" String "net.transport" IP_TCP + "net.protocol.name" "http" + "net.protocol.version" "1.1" "net.peer.port" { it == null || Number } "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" Long } @@ -74,12 +75,13 @@ class SnsTracingTest extends AgentInstrumentationSpecification { "aws.queue.url" queueUrl "rpc.system" "aws-api" "rpc.service" "AmazonSQS" - "http.flavor" "1.1" "http.method" "POST" "http.status_code" 200 "http.url" String "net.peer.name" String "net.transport" IP_TCP + "net.protocol.name" "http" + "net.protocol.version" "1.1" "net.peer.port" { it == null || Number } "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" Long } @@ -98,12 +100,13 @@ class SnsTracingTest extends AgentInstrumentationSpecification { "aws.queue.url" queueUrl "rpc.system" "aws-api" "rpc.service" "AmazonSQS" - "http.flavor" "1.1" "http.method" "POST" "http.status_code" 200 "http.url" String "net.peer.name" String "net.transport" IP_TCP + "net.protocol.name" "http" + "net.protocol.version" "1.1" "net.peer.port" { it == null || Number } "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" Long } @@ -121,12 +124,13 @@ class SnsTracingTest extends AgentInstrumentationSpecification { "rpc.method" "CreateTopic" "rpc.system" "aws-api" "rpc.service" "AmazonSNS" - "http.flavor" "1.1" "http.method" "POST" "http.status_code" 200 "http.url" String "net.peer.name" String "net.transport" IP_TCP + "net.protocol.name" "http" + "net.protocol.version" "1.1" "net.peer.port" { it == null || Number } "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" Long } @@ -144,12 +148,13 @@ class SnsTracingTest extends AgentInstrumentationSpecification { "rpc.method" "Subscribe" "rpc.system" "aws-api" "rpc.service" "AmazonSNS" - "http.flavor" "1.1" "http.method" "POST" "http.status_code" 200 "http.url" String "net.peer.name" String "net.transport" IP_TCP + "net.protocol.name" "http" + "net.protocol.version" "1.1" "net.peer.port" { it == null || Number } "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" Long } @@ -166,12 +171,13 @@ class SnsTracingTest extends AgentInstrumentationSpecification { "rpc.method" "Publish" "rpc.system" "aws-api" "rpc.service" "AmazonSNS" - "http.flavor" "1.1" "http.method" "POST" "http.status_code" 200 "http.url" String "net.peer.name" String "net.transport" IP_TCP + "net.protocol.name" "http" + "net.protocol.version" "1.1" "net.peer.port" { it == null || Number } "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" Long } @@ -187,13 +193,14 @@ class SnsTracingTest extends AgentInstrumentationSpecification { "rpc.system" "aws-api" "rpc.service" "AmazonSQS" "rpc.method" "ReceiveMessage" - "http.flavor" "1.1" "http.method" "POST" "http.status_code" 200 "http.url" String "http.user_agent" String "net.peer.name" String "net.transport" IP_TCP + "net.protocol.name" "http" + "net.protocol.version" "1.1" "net.peer.port" { it == null || Number } "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" Long } @@ -215,12 +222,13 @@ class SnsTracingTest extends AgentInstrumentationSpecification { "rpc.system" "aws-api" "rpc.service" "AmazonSQS" "rpc.method" "ReceiveMessage" - "http.flavor" "1.1" "http.method" "POST" "http.status_code" 200 "http.url" String "net.peer.name" String "net.transport" IP_TCP + "net.protocol.name" "http" + "net.protocol.version" "1.1" "net.peer.port" { it == null || Number } "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" Long } diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/groovy/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractSqsTracingTest.groovy b/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/groovy/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractSqsTracingTest.groovy index 7a56cead5a23..f37c38358658 100644 --- a/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/groovy/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractSqsTracingTest.groovy +++ b/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/groovy/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractSqsTracingTest.groovy @@ -75,13 +75,14 @@ abstract class AbstractSqsTracingTest extends InstrumentationSpecification { "rpc.system" "aws-api" "rpc.service" "AmazonSQS" "rpc.method" "CreateQueue" - "http.flavor" "1.1" "http.method" "POST" "http.status_code" 200 "http.url" "http://localhost:$sqsPort" "net.peer.name" "localhost" "net.peer.port" sqsPort "net.transport" IP_TCP + "net.protocol.name" "http" + "net.protocol.version" "1.1" "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" Long } } @@ -98,13 +99,14 @@ abstract class AbstractSqsTracingTest extends InstrumentationSpecification { "rpc.system" "aws-api" "rpc.method" "SendMessage" "rpc.service" "AmazonSQS" - "http.flavor" "1.1" "http.method" "POST" "http.status_code" 200 "http.url" "http://localhost:$sqsPort" "net.peer.name" "localhost" "net.peer.port" sqsPort "net.transport" IP_TCP + "net.protocol.name" "http" + "net.protocol.version" "1.1" "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" Long } } @@ -119,7 +121,6 @@ abstract class AbstractSqsTracingTest extends InstrumentationSpecification { "aws.queue.url" "http://localhost:$sqsPort/000000000000/testSdkSqs" "rpc.system" "aws-api" "rpc.service" "AmazonSQS" - "http.flavor" "1.1" "http.method" "POST" "http.status_code" 200 "http.url" "http://localhost:$sqsPort" @@ -127,6 +128,8 @@ abstract class AbstractSqsTracingTest extends InstrumentationSpecification { "net.peer.name" "localhost" "net.peer.port" sqsPort "net.transport" IP_TCP + "net.protocol.name" "http" + "net.protocol.version" "1.1" "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" Long } } @@ -147,13 +150,14 @@ abstract class AbstractSqsTracingTest extends InstrumentationSpecification { "aws.queue.url" "http://localhost:$sqsPort/000000000000/testSdkSqs" "rpc.system" "aws-api" "rpc.service" "AmazonSQS" - "http.flavor" "1.1" "http.method" "POST" "http.status_code" 200 "http.url" "http://localhost:$sqsPort" "net.peer.name" "localhost" "net.peer.port" sqsPort "net.transport" IP_TCP + "net.protocol.name" "http" + "net.protocol.version" "1.1" "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" Long } } diff --git a/instrumentation/aws-sdk/aws-sdk-2.2/testing/src/main/groovy/io/opentelemetry/instrumentation/awssdk/v2_2/AbstractAws2SqsTracingTest.groovy b/instrumentation/aws-sdk/aws-sdk-2.2/testing/src/main/groovy/io/opentelemetry/instrumentation/awssdk/v2_2/AbstractAws2SqsTracingTest.groovy index b4ebaed9bdf0..46de5c6df0a4 100644 --- a/instrumentation/aws-sdk/aws-sdk-2.2/testing/src/main/groovy/io/opentelemetry/instrumentation/awssdk/v2_2/AbstractAws2SqsTracingTest.groovy +++ b/instrumentation/aws-sdk/aws-sdk-2.2/testing/src/main/groovy/io/opentelemetry/instrumentation/awssdk/v2_2/AbstractAws2SqsTracingTest.groovy @@ -97,7 +97,6 @@ abstract class AbstractAws2SqsTracingTest extends InstrumentationSpecification { "rpc.system" "aws-api" "rpc.service" "Sqs" "rpc.method" "CreateQueue" - "http.flavor" "1.1" "http.method" "POST" "http.status_code" 200 "http.url" { it.startsWith("http://localhost:$sqsPort") } @@ -122,7 +121,6 @@ abstract class AbstractAws2SqsTracingTest extends InstrumentationSpecification { "rpc.system" "aws-api" "rpc.method" "SendMessage" "rpc.service" "Sqs" - "http.flavor" "1.1" "http.method" "POST" "http.status_code" 200 "http.url" { it.startsWith("http://localhost:$sqsPort") } @@ -143,7 +141,6 @@ abstract class AbstractAws2SqsTracingTest extends InstrumentationSpecification { "rpc.method" "ReceiveMessage" "rpc.system" "aws-api" "rpc.service" "Sqs" - "http.flavor" "1.1" "http.method" "POST" "http.status_code" 200 "http.url" { it.startsWith("http://localhost:$sqsPort") } @@ -171,7 +168,6 @@ abstract class AbstractAws2SqsTracingTest extends InstrumentationSpecification { "aws.queue.url" "http://localhost:$sqsPort/000000000000/testSdkSqs" "rpc.system" "aws-api" "rpc.service" "Sqs" - "http.flavor" "1.1" "http.method" "POST" "http.status_code" 200 "http.url" { it.startsWith("http://localhost:$sqsPort") } diff --git a/instrumentation/camel-2.20/javaagent/src/test/groovy/io/opentelemetry/javaagent/instrumentation/apachecamel/aws/AwsSpan.groovy b/instrumentation/camel-2.20/javaagent/src/test/groovy/io/opentelemetry/javaagent/instrumentation/apachecamel/aws/AwsSpan.groovy index df7ee080e1d0..38468e896904 100644 --- a/instrumentation/camel-2.20/javaagent/src/test/groovy/io/opentelemetry/javaagent/instrumentation/apachecamel/aws/AwsSpan.groovy +++ b/instrumentation/camel-2.20/javaagent/src/test/groovy/io/opentelemetry/javaagent/instrumentation/apachecamel/aws/AwsSpan.groovy @@ -28,10 +28,11 @@ class AwsSpan { "rpc.method" spanName.substring(3) "rpc.service" "Amazon S3" "aws.bucket.name" bucketName - "http.flavor" "1.1" "http.method" method "http.status_code" 200 "http.url" String + "net.protocol.name" "http" + "net.protocol.version" "1.1" "net.peer.name" String "net.transport" IP_TCP "net.peer.port" { it == null || it instanceof Number } @@ -86,10 +87,11 @@ class AwsSpan { "rpc.system" "aws-api" "rpc.method" spanName.substring(4) "rpc.service" "AmazonSNS" - "http.flavor" "1.1" "http.method" "POST" "http.status_code" 200 "http.url" String + "net.protocol.name" "http" + "net.protocol.version" "1.1" "net.peer.name" String "net.peer.port" { it == null || it instanceof Number } "net.transport" IP_TCP diff --git a/instrumentation/play/play-ws/play-ws-common/testing/src/main/groovy/PlayWsClientTestBaseBase.groovy b/instrumentation/play/play-ws/play-ws-common/testing/src/main/groovy/PlayWsClientTestBaseBase.groovy index 943bdf3219bf..703920379802 100644 --- a/instrumentation/play/play-ws/play-ws-common/testing/src/main/groovy/PlayWsClientTestBaseBase.groovy +++ b/instrumentation/play/play-ws/play-ws-common/testing/src/main/groovy/PlayWsClientTestBaseBase.groovy @@ -21,6 +21,8 @@ import play.shaded.ahc.org.asynchttpclient.DefaultAsyncHttpClientConfig import play.shaded.ahc.org.asynchttpclient.RequestBuilderBase import spock.lang.Shared +import static io.opentelemetry.api.common.AttributeKey.stringKey + abstract class PlayWsClientTestBaseBase extends HttpClientTest implements AgentTestTrait { @Shared ActorSystem system @@ -65,11 +67,9 @@ abstract class PlayWsClientTestBaseBase extends HttpClientTest @Override Set> httpAttributes(URI uri) { - Set> extra = [ - SemanticAttributes.HTTP_SCHEME, - SemanticAttributes.HTTP_TARGET - ] - def attributes = super.httpAttributes(uri) + extra + def attributes = super.httpAttributes(uri) + attributes.remove(stringKey("net.protocol.name")) + attributes.remove(stringKey("net.protocol.version")) if (uri.toString().endsWith("/circular-redirect")) { attributes.remove(SemanticAttributes.NET_PEER_NAME) attributes.remove(SemanticAttributes.NET_PEER_PORT) diff --git a/smoke-tests/src/test/groovy/io/opentelemetry/smoketest/AppServerTest.groovy b/smoke-tests/src/test/groovy/io/opentelemetry/smoketest/AppServerTest.groovy index 0cab70ca3501..ccffc7474dde 100644 --- a/smoke-tests/src/test/groovy/io/opentelemetry/smoketest/AppServerTest.groovy +++ b/smoke-tests/src/test/groovy/io/opentelemetry/smoketest/AppServerTest.groovy @@ -121,7 +121,7 @@ abstract class AppServerTest extends SmokeTest { traces.countFilteredAttributes("http.target", "/app/headers") == 1 and: "Number of spans with http protocol version" - traces.countFilteredAttributes("http.flavor", "1.1") == 3 + traces.countFilteredAttributes("http.flavor", "1.1") == 2 and: "Number of spans tagged with current otel library version" traces.countFilteredResourceAttributes("telemetry.auto.version", currentAgentVersion) == 3 @@ -353,7 +353,7 @@ abstract class AppServerTest extends SmokeTest { traces.countFilteredAttributes("http.target", "/app/headers") == 1 and: "Number of spans with http protocol version" - traces.countFilteredAttributes("http.flavor", "1.1") == 3 + traces.countFilteredAttributes("http.flavor", "1.1") == 2 and: "Number of spans tagged with current otel library version" traces.countFilteredResourceAttributes("telemetry.auto.version", currentAgentVersion) == 3 From 2db9a9a787dbece67cf52c14fc30b4bf74cbca07 Mon Sep 17 00:00:00 2001 From: Mateusz Rzeszutek Date: Mon, 27 Mar 2023 12:22:12 +0200 Subject: [PATCH 06/13] fix tests --- .../src/test/groovy/AsyncHttpClientTest.groovy | 2 -- .../JettyHttpClientNetAttributesGetter.java | 12 ++++++++++-- .../v9_2/AbstractJettyClient9Test.groovy | 12 +----------- .../v1_7/AbstractRatpackHttpClientTest.java | 14 ++++++++++++++ 4 files changed, 25 insertions(+), 15 deletions(-) diff --git a/instrumentation/async-http-client/async-http-client-2.0/javaagent/src/test/groovy/AsyncHttpClientTest.groovy b/instrumentation/async-http-client/async-http-client-2.0/javaagent/src/test/groovy/AsyncHttpClientTest.groovy index ab841e723648..c24fdc215d32 100644 --- a/instrumentation/async-http-client/async-http-client-2.0/javaagent/src/test/groovy/AsyncHttpClientTest.groovy +++ b/instrumentation/async-http-client/async-http-client-2.0/javaagent/src/test/groovy/AsyncHttpClientTest.groovy @@ -3,11 +3,9 @@ * SPDX-License-Identifier: Apache-2.0 */ -import io.opentelemetry.api.common.AttributeKey import io.opentelemetry.instrumentation.test.AgentTestTrait import io.opentelemetry.instrumentation.test.base.HttpClientTest import io.opentelemetry.instrumentation.testing.junit.http.HttpClientResult -import io.opentelemetry.semconv.trace.attributes.SemanticAttributes import org.asynchttpclient.AsyncCompletionHandler import org.asynchttpclient.Dsl import org.asynchttpclient.Request diff --git a/instrumentation/jetty-httpclient/jetty-httpclient-9.2/library/src/main/java/io/opentelemetry/instrumentation/jetty/httpclient/v9_2/internal/JettyHttpClientNetAttributesGetter.java b/instrumentation/jetty-httpclient/jetty-httpclient-9.2/library/src/main/java/io/opentelemetry/instrumentation/jetty/httpclient/v9_2/internal/JettyHttpClientNetAttributesGetter.java index a242fccff602..23994b2f9d7c 100644 --- a/instrumentation/jetty-httpclient/jetty-httpclient-9.2/library/src/main/java/io/opentelemetry/instrumentation/jetty/httpclient/v9_2/internal/JettyHttpClientNetAttributesGetter.java +++ b/instrumentation/jetty-httpclient/jetty-httpclient-9.2/library/src/main/java/io/opentelemetry/instrumentation/jetty/httpclient/v9_2/internal/JettyHttpClientNetAttributesGetter.java @@ -10,6 +10,7 @@ import javax.annotation.Nullable; import org.eclipse.jetty.client.api.Request; import org.eclipse.jetty.client.api.Response; +import org.eclipse.jetty.http.HttpVersion; /** * This class is internal and is hence not for public use. Its APIs are unstable and can change at @@ -32,10 +33,17 @@ public String getProtocolName(Request request, @Nullable Response response) { @Nullable @Override public String getProtocolVersion(Request request, @Nullable Response response) { - if (response == null || response.getVersion() == null) { + HttpVersion httpVersion = null; + if (response != null) { + httpVersion = response.getVersion(); + } + if (httpVersion == null) { + httpVersion = request.getVersion(); + } + if (httpVersion == null) { return null; } - String version = response.getVersion().toString(); + String version = httpVersion.toString(); if (version.startsWith("HTTP/")) { version = version.substring("HTTP/".length()); } diff --git a/instrumentation/jetty-httpclient/jetty-httpclient-9.2/testing/src/main/groovy/io/opentelemetry/instrumentation/jetty/httpclient/v9_2/AbstractJettyClient9Test.groovy b/instrumentation/jetty-httpclient/jetty-httpclient-9.2/testing/src/main/groovy/io/opentelemetry/instrumentation/jetty/httpclient/v9_2/AbstractJettyClient9Test.groovy index 4a5548985564..05848d7d82cc 100644 --- a/instrumentation/jetty-httpclient/jetty-httpclient-9.2/testing/src/main/groovy/io/opentelemetry/instrumentation/jetty/httpclient/v9_2/AbstractJettyClient9Test.groovy +++ b/instrumentation/jetty-httpclient/jetty-httpclient-9.2/testing/src/main/groovy/io/opentelemetry/instrumentation/jetty/httpclient/v9_2/AbstractJettyClient9Test.groovy @@ -5,10 +5,9 @@ package io.opentelemetry.instrumentation.jetty.httpclient.v9_2 -import io.opentelemetry.api.common.AttributeKey + import io.opentelemetry.instrumentation.test.base.HttpClientTest import io.opentelemetry.instrumentation.testing.junit.http.HttpClientResult -import io.opentelemetry.semconv.trace.attributes.SemanticAttributes import org.eclipse.jetty.client.HttpClient import org.eclipse.jetty.client.api.ContentResponse import org.eclipse.jetty.client.api.Request @@ -119,15 +118,6 @@ abstract class AbstractJettyClient9Test extends HttpClientTest { false } - @Override - Set> httpAttributes(URI uri) { - Set> extra = [ - SemanticAttributes.HTTP_SCHEME, - SemanticAttributes.HTTP_TARGET, - ] - super.httpAttributes(uri) + extra - } - @Unroll def "test content of #method request #url"() { when: diff --git a/instrumentation/ratpack/ratpack-1.7/library/src/test/java/io/opentelemetry/instrumentation/ratpack/v1_7/AbstractRatpackHttpClientTest.java b/instrumentation/ratpack/ratpack-1.7/library/src/test/java/io/opentelemetry/instrumentation/ratpack/v1_7/AbstractRatpackHttpClientTest.java index 096956f983cc..53f3bdcedee8 100644 --- a/instrumentation/ratpack/ratpack-1.7/library/src/test/java/io/opentelemetry/instrumentation/ratpack/v1_7/AbstractRatpackHttpClientTest.java +++ b/instrumentation/ratpack/ratpack-1.7/library/src/test/java/io/opentelemetry/instrumentation/ratpack/v1_7/AbstractRatpackHttpClientTest.java @@ -5,15 +5,20 @@ package io.opentelemetry.instrumentation.ratpack.v1_7; +import static io.opentelemetry.api.common.AttributeKey.stringKey; + import com.google.common.collect.ImmutableList; import io.netty.channel.ConnectTimeoutException; +import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.context.Context; import io.opentelemetry.instrumentation.testing.junit.http.AbstractHttpClientTest; import io.opentelemetry.instrumentation.testing.junit.http.HttpClientResult; import io.opentelemetry.instrumentation.testing.junit.http.HttpClientTestOptions; import java.net.URI; import java.time.Duration; +import java.util.HashSet; import java.util.Map; +import java.util.Set; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.condition.OS; @@ -147,5 +152,14 @@ protected void configure(HttpClientTestOptions.Builder optionsBuilder) { optionsBuilder.disableTestRedirects(); optionsBuilder.disableTestReusedRequest(); optionsBuilder.enableTestReadTimeout(); + + optionsBuilder.setHttpAttributes(this::getHttpAttributes); + } + + protected Set> getHttpAttributes(URI uri) { + Set> attributes = new HashSet<>(HttpClientTestOptions.DEFAULT_HTTP_ATTRIBUTES); + attributes.remove(stringKey("net.protocol.name")); + attributes.remove(stringKey("net.protocol.version")); + return attributes; } } From b63a507e948c071303e4f9fbd74bf80f1378e369 Mon Sep 17 00:00:00 2001 From: Mateusz Rzeszutek Date: Mon, 27 Mar 2023 13:28:14 +0200 Subject: [PATCH 07/13] fix tests --- .../instrumentation/awssdk/v1_11/Aws1ClientTest.groovy | 1 - .../javaagent/src/test/groovy/JaxRsClientV1Test.groovy | 10 ++++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/groovy/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/Aws1ClientTest.groovy b/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/groovy/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/Aws1ClientTest.groovy index 5f6226320ab4..3a224b1ed858 100644 --- a/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/groovy/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/Aws1ClientTest.groovy +++ b/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/groovy/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/Aws1ClientTest.groovy @@ -14,7 +14,6 @@ import com.amazonaws.services.s3.AmazonS3Client import com.amazonaws.services.s3.AmazonS3ClientBuilder import io.opentelemetry.api.trace.Span import io.opentelemetry.api.trace.SpanKind -import io.opentelemetry.instrumentation.api.instrumenter.net.internal.NetAttributes import io.opentelemetry.instrumentation.awssdk.v1_11.AbstractAws1ClientTest import io.opentelemetry.instrumentation.test.AgentTestTrait import io.opentelemetry.semconv.trace.attributes.SemanticAttributes diff --git a/instrumentation/jaxrs-client/jaxrs-client-1.1/javaagent/src/test/groovy/JaxRsClientV1Test.groovy b/instrumentation/jaxrs-client/jaxrs-client-1.1/javaagent/src/test/groovy/JaxRsClientV1Test.groovy index 6c69522c6af9..e42c2034ea6d 100644 --- a/instrumentation/jaxrs-client/jaxrs-client-1.1/javaagent/src/test/groovy/JaxRsClientV1Test.groovy +++ b/instrumentation/jaxrs-client/jaxrs-client-1.1/javaagent/src/test/groovy/JaxRsClientV1Test.groovy @@ -8,10 +8,13 @@ import com.sun.jersey.api.client.ClientResponse import com.sun.jersey.api.client.WebResource import com.sun.jersey.api.client.filter.GZIPContentEncodingFilter import com.sun.jersey.api.client.filter.LoggingFilter +import io.opentelemetry.api.common.AttributeKey import io.opentelemetry.instrumentation.test.AgentTestTrait import io.opentelemetry.instrumentation.test.base.HttpClientTest import spock.lang.Shared +import static io.opentelemetry.api.common.AttributeKey.stringKey + class JaxRsClientV1Test extends HttpClientTest implements AgentTestTrait { @Shared @@ -46,4 +49,11 @@ class JaxRsClientV1Test extends HttpClientTest implements A boolean testCallback() { false } + + Set> httpAttributes(URI uri) { + def attributes = super.httpAttributes(uri) + attributes.remove(stringKey("net.protocol.name")) + attributes.remove(stringKey("net.protocol.version")) + return attributes + } } From d676f19a2b8cf4bc86712452708ec3ce8149d4ec Mon Sep 17 00:00:00 2001 From: Mateusz Rzeszutek Date: Mon, 27 Mar 2023 14:24:25 +0200 Subject: [PATCH 08/13] fix tests --- .../AbstractJavaHttpClientTest.java | 19 +++++++++++++++++++ .../src/test/groovy/JaxRsClientV1Test.groovy | 1 + .../LettuceConnectNetAttributesGetter.java | 4 ++-- .../LettuceConnectNetAttributesGetter.java | 4 ++-- 4 files changed, 24 insertions(+), 4 deletions(-) diff --git a/instrumentation/java-http-client/testing/src/main/java/io/opentelemetry/instrumentation/httpclient/AbstractJavaHttpClientTest.java b/instrumentation/java-http-client/testing/src/main/java/io/opentelemetry/instrumentation/httpclient/AbstractJavaHttpClientTest.java index a5a50f4a7dd5..3936af74d1f9 100644 --- a/instrumentation/java-http-client/testing/src/main/java/io/opentelemetry/instrumentation/httpclient/AbstractJavaHttpClientTest.java +++ b/instrumentation/java-http-client/testing/src/main/java/io/opentelemetry/instrumentation/httpclient/AbstractJavaHttpClientTest.java @@ -5,6 +5,9 @@ package io.opentelemetry.instrumentation.httpclient; +import static io.opentelemetry.api.common.AttributeKey.stringKey; + +import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.instrumentation.testing.junit.http.AbstractHttpClientTest; import io.opentelemetry.instrumentation.testing.junit.http.HttpClientResult; import io.opentelemetry.instrumentation.testing.junit.http.HttpClientTestOptions; @@ -13,7 +16,9 @@ import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; +import java.util.HashSet; import java.util.Map; +import java.util.Set; import org.junit.jupiter.api.BeforeAll; public abstract class AbstractJavaHttpClientTest extends AbstractHttpClientTest { @@ -79,5 +84,19 @@ protected void configure(HttpClientTestOptions.Builder optionsBuilder) { // TODO nested client span is not created, but context is still injected // which is not what the test expects optionsBuilder.disableTestWithClientParent(); + + optionsBuilder.setHttpAttributes( + uri -> { + Set> attributes = + new HashSet<>(HttpClientTestOptions.DEFAULT_HTTP_ATTRIBUTES); + // unopened port or non routable address; or timeout + if ("http://localhost:61/".equals(uri.toString()) + || "https://192.0.2.1/".equals(uri.toString()) + || uri.toString().contains("/read-timeout")) { + attributes.remove(stringKey("net.protocol.name")); + attributes.remove(stringKey("net.protocol.version")); + } + return attributes; + }); } } diff --git a/instrumentation/jaxrs-client/jaxrs-client-1.1/javaagent/src/test/groovy/JaxRsClientV1Test.groovy b/instrumentation/jaxrs-client/jaxrs-client-1.1/javaagent/src/test/groovy/JaxRsClientV1Test.groovy index e42c2034ea6d..560a7a86b976 100644 --- a/instrumentation/jaxrs-client/jaxrs-client-1.1/javaagent/src/test/groovy/JaxRsClientV1Test.groovy +++ b/instrumentation/jaxrs-client/jaxrs-client-1.1/javaagent/src/test/groovy/JaxRsClientV1Test.groovy @@ -50,6 +50,7 @@ class JaxRsClientV1Test extends HttpClientTest implements A false } + @Override Set> httpAttributes(URI uri) { def attributes = super.httpAttributes(uri) attributes.remove(stringKey("net.protocol.name")) diff --git a/instrumentation/lettuce/lettuce-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceConnectNetAttributesGetter.java b/instrumentation/lettuce/lettuce-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceConnectNetAttributesGetter.java index 1cf838243e01..e0280d05d1a1 100644 --- a/instrumentation/lettuce/lettuce-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceConnectNetAttributesGetter.java +++ b/instrumentation/lettuce/lettuce-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceConnectNetAttributesGetter.java @@ -19,13 +19,13 @@ public String getTransport(RedisURI redisUri, @Nullable Void unused) { @Nullable @Override - public String getProtocolName(RedisURI redisURI, @Nullable Void unused) { + public String getProtocolName(RedisURI redisUri, @Nullable Void unused) { return null; } @Nullable @Override - public String getProtocolVersion(RedisURI redisURI, @Nullable Void unused) { + public String getProtocolVersion(RedisURI redisUri, @Nullable Void unused) { return null; } diff --git a/instrumentation/lettuce/lettuce-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceConnectNetAttributesGetter.java b/instrumentation/lettuce/lettuce-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceConnectNetAttributesGetter.java index b554a1d61a9e..4847d962f0ab 100644 --- a/instrumentation/lettuce/lettuce-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceConnectNetAttributesGetter.java +++ b/instrumentation/lettuce/lettuce-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceConnectNetAttributesGetter.java @@ -19,13 +19,13 @@ public String getTransport(RedisURI redisUri, @Nullable Void unused) { @Nullable @Override - public String getProtocolName(RedisURI redisURI, @Nullable Void unused) { + public String getProtocolName(RedisURI redisUri, @Nullable Void unused) { return null; } @Nullable @Override - public String getProtocolVersion(RedisURI redisURI, @Nullable Void unused) { + public String getProtocolVersion(RedisURI redisUri, @Nullable Void unused) { return null; } From 340087fde0829ad43fafe76025649cb7b9b2a53d Mon Sep 17 00:00:00 2001 From: Mateusz Rzeszutek Date: Mon, 27 Mar 2023 18:40:36 +0200 Subject: [PATCH 09/13] codenarc --- .../groovy/client/VertxRxCircuitBreakerWebClientTest.groovy | 1 - .../src/version35Test/groovy/client/VertxRxWebClientTest.groovy | 1 - 2 files changed, 2 deletions(-) diff --git a/instrumentation/vertx/vertx-rx-java-3.5/javaagent/src/version35Test/groovy/client/VertxRxCircuitBreakerWebClientTest.groovy b/instrumentation/vertx/vertx-rx-java-3.5/javaagent/src/version35Test/groovy/client/VertxRxCircuitBreakerWebClientTest.groovy index 93e3a44dfb15..991105f427a0 100644 --- a/instrumentation/vertx/vertx-rx-java-3.5/javaagent/src/version35Test/groovy/client/VertxRxCircuitBreakerWebClientTest.groovy +++ b/instrumentation/vertx/vertx-rx-java-3.5/javaagent/src/version35Test/groovy/client/VertxRxCircuitBreakerWebClientTest.groovy @@ -25,7 +25,6 @@ import spock.lang.Shared import java.util.concurrent.CompletableFuture import java.util.function.Consumer -import static io.opentelemetry.api.common.AttributeKey.stringKey import static io.opentelemetry.api.common.AttributeKey.stringKey class VertxRxCircuitBreakerWebClientTest extends HttpClientTest> implements AgentTestTrait { diff --git a/instrumentation/vertx/vertx-rx-java-3.5/javaagent/src/version35Test/groovy/client/VertxRxWebClientTest.groovy b/instrumentation/vertx/vertx-rx-java-3.5/javaagent/src/version35Test/groovy/client/VertxRxWebClientTest.groovy index 23e500c805f8..0639219cb788 100644 --- a/instrumentation/vertx/vertx-rx-java-3.5/javaagent/src/version35Test/groovy/client/VertxRxWebClientTest.groovy +++ b/instrumentation/vertx/vertx-rx-java-3.5/javaagent/src/version35Test/groovy/client/VertxRxWebClientTest.groovy @@ -21,7 +21,6 @@ import io.vertx.reactivex.ext.web.client.HttpResponse import io.vertx.reactivex.ext.web.client.WebClient import spock.lang.Shared -import static io.opentelemetry.api.common.AttributeKey.stringKey import static io.opentelemetry.api.common.AttributeKey.stringKey class VertxRxWebClientTest extends HttpClientTest> implements AgentTestTrait { From 546135ca91c0be763e5e9bf947721911797d655b Mon Sep 17 00:00:00 2001 From: Mateusz Rzeszutek Date: Tue, 28 Mar 2023 08:21:54 +0200 Subject: [PATCH 10/13] fix tests --- .../groovy/client/PlayWsClientTest.groovy | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/instrumentation/play/play-mvc/play-mvc-2.4/javaagent/src/play24Test/groovy/client/PlayWsClientTest.groovy b/instrumentation/play/play-mvc/play-mvc-2.4/javaagent/src/play24Test/groovy/client/PlayWsClientTest.groovy index 65a45193fe3a..44578d9c380f 100644 --- a/instrumentation/play/play-mvc/play-mvc-2.4/javaagent/src/play24Test/groovy/client/PlayWsClientTest.groovy +++ b/instrumentation/play/play-mvc/play-mvc-2.4/javaagent/src/play24Test/groovy/client/PlayWsClientTest.groovy @@ -10,8 +10,6 @@ import io.opentelemetry.instrumentation.test.AgentTestTrait import io.opentelemetry.instrumentation.test.base.HttpClientTest import io.opentelemetry.instrumentation.testing.junit.http.HttpClientResult import io.opentelemetry.instrumentation.testing.junit.http.SingleConnection -import io.opentelemetry.semconv.trace.attributes.SemanticAttributes -import java.util.concurrent.CompletableFuture import play.libs.ws.WS import play.libs.ws.WSRequest import play.libs.ws.WSResponse @@ -19,8 +17,11 @@ import spock.lang.AutoCleanup import spock.lang.Shared import spock.lang.Subject +import java.util.concurrent.CompletableFuture import java.util.concurrent.CompletionStage +import static io.opentelemetry.api.common.AttributeKey.stringKey + class PlayWsClientTest extends HttpClientTest implements AgentTestTrait { @Subject @Shared @@ -51,10 +52,10 @@ class PlayWsClientTest extends HttpClientTest implements AgentTestTra private static CompletionStage internalSendRequest(WSRequest request, String method) { def result = new CompletableFuture() def promise = request.execute(method) - promise.onRedeem({response -> + promise.onRedeem({ response -> result.complete(response) }) - promise.onFailure({throwable -> + promise.onFailure({ throwable -> result.completeExceptionally(throwable) }) return result @@ -73,11 +74,10 @@ class PlayWsClientTest extends HttpClientTest implements AgentTestTra @Override Set> httpAttributes(URI uri) { - Set> extra = [ - SemanticAttributes.HTTP_SCHEME, - SemanticAttributes.HTTP_TARGET - ] - super.httpAttributes(uri) + extra + def attributes = super.httpAttributes(uri) + attributes.remove(stringKey("net.protocol.name")) + attributes.remove(stringKey("net.protocol.version")) + attributes } @Override From 9280672edbfc4fabf3072f5c4e264b7b664de73e Mon Sep 17 00:00:00 2001 From: Mateusz Rzeszutek Date: Wed, 29 Mar 2023 09:55:44 +0200 Subject: [PATCH 11/13] code review comments --- .../v4_3/ApacheHttpClientRequest.java | 3 +- .../v5_0/AbstractApacheHttpClientTest.java | 21 +++++----- .../AsyncHttpClientNetAttributesGetter.java | 38 +++++++++++------- .../v1_11/AwsSdkNetAttributesGetter.java | 39 ++++++++++++------- 4 files changed, 61 insertions(+), 40 deletions(-) diff --git a/instrumentation/apache-httpclient/apache-httpclient-4.3/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v4_3/ApacheHttpClientRequest.java b/instrumentation/apache-httpclient/apache-httpclient-4.3/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v4_3/ApacheHttpClientRequest.java index f08862237a03..119add29d5fd 100644 --- a/instrumentation/apache-httpclient/apache-httpclient-4.3/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v4_3/ApacheHttpClientRequest.java +++ b/instrumentation/apache-httpclient/apache-httpclient-4.3/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v4_3/ApacheHttpClientRequest.java @@ -14,7 +14,6 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; -import java.util.Locale; import java.util.logging.Logger; import javax.annotation.Nullable; import org.apache.http.Header; @@ -77,7 +76,7 @@ String getUrl() { } String getProtocolName() { - return delegate.getProtocolVersion().getProtocol().toLowerCase(Locale.ROOT); + return delegate.getProtocolVersion().getProtocol(); } String getProtocolVersion() { diff --git a/instrumentation/apache-httpclient/apache-httpclient-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v5_0/AbstractApacheHttpClientTest.java b/instrumentation/apache-httpclient/apache-httpclient-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v5_0/AbstractApacheHttpClientTest.java index 8c93f2f7af74..d751868ea17f 100644 --- a/instrumentation/apache-httpclient/apache-httpclient-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v5_0/AbstractApacheHttpClientTest.java +++ b/instrumentation/apache-httpclient/apache-httpclient-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v5_0/AbstractApacheHttpClientTest.java @@ -11,7 +11,6 @@ import io.opentelemetry.instrumentation.testing.junit.http.AbstractHttpClientTest; import io.opentelemetry.instrumentation.testing.junit.http.HttpClientResult; import io.opentelemetry.instrumentation.testing.junit.http.HttpClientTestOptions; -import io.opentelemetry.semconv.trace.attributes.SemanticAttributes; import java.net.URI; import java.time.Duration; import java.util.HashSet; @@ -37,17 +36,17 @@ protected void configure(HttpClientTestOptions.Builder optionsBuilder) { optionsBuilder.setHttpAttributes(this::getHttpAttributes); } - protected Set> getHttpAttributes(URI endpoint) { - Set> attributes = new HashSet<>(); - attributes.add(SemanticAttributes.NET_PEER_NAME); - attributes.add(SemanticAttributes.NET_PEER_PORT); - attributes.add(SemanticAttributes.HTTP_URL); - attributes.add(SemanticAttributes.HTTP_METHOD); - if (endpoint.toString().contains("/success")) { - attributes.add(stringKey("net.protocol.name")); - attributes.add(stringKey("net.protocol.version")); + protected Set> getHttpAttributes(URI uri) { + Set> attributes = new HashSet<>(HttpClientTestOptions.DEFAULT_HTTP_ATTRIBUTES); + // unopened port or non routable address; or timeout + // circular redirects don't report protocol information as well + if ("http://localhost:61/".equals(uri.toString()) + || "https://192.0.2.1/".equals(uri.toString()) + || uri.toString().contains("/read-timeout") + || uri.toString().contains("/circular-redirect")) { + attributes.remove(stringKey("net.protocol.name")); + attributes.remove(stringKey("net.protocol.version")); } - attributes.add(SemanticAttributes.HTTP_USER_AGENT); return attributes; } diff --git a/instrumentation/async-http-client/async-http-client-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/v2_0/AsyncHttpClientNetAttributesGetter.java b/instrumentation/async-http-client/async-http-client-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/v2_0/AsyncHttpClientNetAttributesGetter.java index 4f43c0426c9a..db87b363d8e6 100644 --- a/instrumentation/async-http-client/async-http-client-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/v2_0/AsyncHttpClientNetAttributesGetter.java +++ b/instrumentation/async-http-client/async-http-client-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/v2_0/AsyncHttpClientNetAttributesGetter.java @@ -5,12 +5,11 @@ package io.opentelemetry.javaagent.instrumentation.asynchttpclient.v2_0; -import io.netty.handler.codec.http.HttpMessage; +import io.netty.handler.codec.http.HttpRequest; import io.netty.handler.codec.http.HttpVersion; import io.opentelemetry.instrumentation.api.instrumenter.net.InetSocketAddressNetClientAttributesGetter; import io.opentelemetry.semconv.trace.attributes.SemanticAttributes; import java.net.InetSocketAddress; -import java.util.Optional; import javax.annotation.Nullable; import org.asynchttpclient.Response; import org.asynchttpclient.netty.request.NettyRequest; @@ -26,23 +25,34 @@ public String getTransport(RequestContext request, @Nullable Response response) @Nullable @Override public String getProtocolName(RequestContext request, @Nullable Response response) { - return Optional.of(request) - .map(RequestContext::getNettyRequest) - .map(NettyRequest::getHttpRequest) - .map(HttpMessage::getProtocolVersion) - .map(HttpVersion::protocolName) - .orElse(null); + HttpVersion httpVersion = getHttpVersion(request); + if (httpVersion == null) { + return null; + } + return httpVersion.protocolName(); } @Nullable @Override public String getProtocolVersion(RequestContext request, @Nullable Response response) { - return Optional.of(request) - .map(RequestContext::getNettyRequest) - .map(NettyRequest::getHttpRequest) - .map(HttpMessage::getProtocolVersion) - .map(p -> p.majorVersion() + "." + p.minorVersion()) - .orElse(null); + HttpVersion httpVersion = getHttpVersion(request); + if (httpVersion == null) { + return null; + } + return httpVersion.majorVersion() + "." + httpVersion.minorVersion(); + } + + @Nullable + private HttpVersion getHttpVersion(RequestContext request) { + NettyRequest nettyRequest = request.getNettyRequest(); + if (nettyRequest == null) { + return null; + } + HttpRequest httpRequest = nettyRequest.getHttpRequest(); + if (httpRequest == null) { + return null; + } + return httpRequest.getProtocolVersion(); } @Nullable diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AwsSdkNetAttributesGetter.java b/instrumentation/aws-sdk/aws-sdk-1.11/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AwsSdkNetAttributesGetter.java index 10fede432bff..5dc1c88282c1 100644 --- a/instrumentation/aws-sdk/aws-sdk-1.11/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AwsSdkNetAttributesGetter.java +++ b/instrumentation/aws-sdk/aws-sdk-1.11/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AwsSdkNetAttributesGetter.java @@ -10,7 +10,6 @@ import com.amazonaws.http.HttpResponse; import io.opentelemetry.instrumentation.api.instrumenter.net.NetClientAttributesGetter; import io.opentelemetry.semconv.trace.attributes.SemanticAttributes; -import java.util.Optional; import javax.annotation.Nullable; import org.apache.http.ProtocolVersion; import org.apache.http.client.methods.HttpRequestBase; @@ -25,23 +24,37 @@ public String getTransport(Request request, @Nullable Response response) { @Nullable @Override public String getProtocolName(Request request, @Nullable Response response) { - return Optional.ofNullable(response) - .map(Response::getHttpResponse) - .map(HttpResponse::getHttpRequest) - .map(HttpRequestBase::getProtocolVersion) - .map(ProtocolVersion::getProtocol) - .orElse(null); + ProtocolVersion protocolVersion = getProtocolVersion(response); + if (protocolVersion == null) { + return null; + } + return protocolVersion.getProtocol(); } @Nullable @Override public String getProtocolVersion(Request request, @Nullable Response response) { - return Optional.ofNullable(response) - .map(Response::getHttpResponse) - .map(HttpResponse::getHttpRequest) - .map(HttpRequestBase::getProtocolVersion) - .map(p -> p.getMajor() + "." + p.getMinor()) - .orElse(null); + ProtocolVersion protocolVersion = getProtocolVersion(response); + if (protocolVersion == null) { + return null; + } + return protocolVersion.getMajor() + "." + protocolVersion.getMinor(); + } + + @Nullable + private ProtocolVersion getProtocolVersion(@Nullable Response response) { + if (response == null) { + return null; + } + HttpResponse httpResponse = response.getHttpResponse(); + if (httpResponse == null) { + return null; + } + HttpRequestBase httpRequest = httpResponse.getHttpRequest(); + if (httpRequest == null) { + return null; + } + return httpRequest.getProtocolVersion(); } @Override From 9ef8b0ae20637f5557008e6147ee13317a0160f6 Mon Sep 17 00:00:00 2001 From: Mateusz Rzeszutek Date: Wed, 29 Mar 2023 10:19:31 +0200 Subject: [PATCH 12/13] errorprone --- .../v2_0/AsyncHttpClientNetAttributesGetter.java | 2 +- .../instrumentation/awssdk/v1_11/AwsSdkNetAttributesGetter.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/instrumentation/async-http-client/async-http-client-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/v2_0/AsyncHttpClientNetAttributesGetter.java b/instrumentation/async-http-client/async-http-client-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/v2_0/AsyncHttpClientNetAttributesGetter.java index db87b363d8e6..77788cabba0e 100644 --- a/instrumentation/async-http-client/async-http-client-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/v2_0/AsyncHttpClientNetAttributesGetter.java +++ b/instrumentation/async-http-client/async-http-client-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/v2_0/AsyncHttpClientNetAttributesGetter.java @@ -43,7 +43,7 @@ public String getProtocolVersion(RequestContext request, @Nullable Response resp } @Nullable - private HttpVersion getHttpVersion(RequestContext request) { + private static HttpVersion getHttpVersion(RequestContext request) { NettyRequest nettyRequest = request.getNettyRequest(); if (nettyRequest == null) { return null; diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AwsSdkNetAttributesGetter.java b/instrumentation/aws-sdk/aws-sdk-1.11/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AwsSdkNetAttributesGetter.java index 5dc1c88282c1..62bca1503f7e 100644 --- a/instrumentation/aws-sdk/aws-sdk-1.11/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AwsSdkNetAttributesGetter.java +++ b/instrumentation/aws-sdk/aws-sdk-1.11/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AwsSdkNetAttributesGetter.java @@ -42,7 +42,7 @@ public String getProtocolVersion(Request request, @Nullable Response respo } @Nullable - private ProtocolVersion getProtocolVersion(@Nullable Response response) { + private static ProtocolVersion getProtocolVersion(@Nullable Response response) { if (response == null) { return null; } From d63d44ef90612f4e6a47a68c7c9aa1e5e82b1ead Mon Sep 17 00:00:00 2001 From: Mateusz Rzeszutek Date: Tue, 4 Apr 2023 16:38:07 +0200 Subject: [PATCH 13/13] Add defaults back to getProtocol*() --- .../net/NetClientAttributesGetter.java | 8 ++++++-- ...ocketAddressNetClientAttributesGetterTest.java | 15 --------------- .../internal/DubboNetClientAttributesGetter.java | 12 ------------ .../awssdk/v2_2/AwsSdkNetAttributesGetter.java | 13 ------------- .../v3_0/CassandraNetAttributesGetter.java | 13 ------------- .../v4_0/CassandraNetAttributesGetter.java | 13 ------------- .../v4_4/CassandraNetAttributesGetter.java | 14 -------------- .../v2_0/CouchbaseNetAttributesGetter.java | 13 ------------- ...sticsearchRestNetResponseAttributesGetter.java | 12 ------------ ...lasticsearch6TransportNetAttributesGetter.java | 14 -------------- ...asticTransportNetResponseAttributesGetter.java | 14 -------------- .../GoogleHttpClientNetAttributesGetter.java | 12 ------------ .../internal/GrpcNetClientAttributesGetter.java | 12 ------------ .../v1_1/JaxRsClientNetAttributesGetter.java | 12 ------------ .../jdbc/internal/JdbcNetAttributesGetter.java | 12 ------------ .../jedis/v1_4/JedisNetAttributesGetter.java | 12 ------------ .../jedis/v3_0/JedisNetAttributesGetter.java | 12 ------------ .../jedis/v4_0/JedisNetAttributesGetter.java | 12 ------------ .../KubernetesNetAttributesGetter.java | 12 ------------ .../v4_0/LettuceConnectNetAttributesGetter.java | 12 ------------ .../v5_0/LettuceConnectNetAttributesGetter.java | 12 ------------ .../lettuce/v5_1/LettuceNetAttributesGetter.java | 12 ------------ .../mongo/v3_1/MongoNetAttributesGetter.java | 12 ------------ .../client/NettyConnectNetAttributesGetter.java | 12 ------------ .../client/NettyConnectNetAttributesGetter.java | 12 ------------ .../client/NettySslNetAttributesGetter.java | 12 ------------ ...OpenSearchRestNetResponseAttributesGetter.java | 12 ------------ .../playws/PlayWsClientNetAttributesGetter.java | 12 ------------ .../v1_0/internal/R2dbcNetAttributesGetter.java | 12 ------------ .../RabbitChannelNetAttributesGetter.java | 12 ------------ .../RabbitReceiveNetAttributesGetter.java | 12 ------------ .../RatpackNetClientAttributesGetter.java | 12 ------------ .../redisson/RedissonNetAttributesGetter.java | 12 ------------ .../web/v3_1/SpringWebNetAttributesGetter.java | 12 ------------ .../internal/WebClientNetAttributesGetter.java | 12 ------------ .../v3_0/client/Vertx3NetAttributesGetter.java | 13 ------------- 36 files changed, 6 insertions(+), 436 deletions(-) diff --git a/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/net/NetClientAttributesGetter.java b/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/net/NetClientAttributesGetter.java index 1e2e866f7cfb..d52643c51f01 100644 --- a/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/net/NetClientAttributesGetter.java +++ b/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/net/NetClientAttributesGetter.java @@ -26,7 +26,9 @@ public interface NetClientAttributesGetter { *

Examples: `amqp`, `http`, `mqtt`. */ @Nullable - String getProtocolName(REQUEST request, @Nullable RESPONSE response); + default String getProtocolName(REQUEST request, @Nullable RESPONSE response) { + return null; + } /** * Returns the version of the application protocol used. @@ -34,7 +36,9 @@ public interface NetClientAttributesGetter { *

Examples: `3.1.1`. */ @Nullable - String getProtocolVersion(REQUEST request, @Nullable RESPONSE response); + default String getProtocolVersion(REQUEST request, @Nullable RESPONSE response) { + return null; + } @Nullable String getPeerName(REQUEST request); diff --git a/instrumentation-api-semconv/src/test/java/io/opentelemetry/instrumentation/api/instrumenter/net/InetSocketAddressNetClientAttributesGetterTest.java b/instrumentation-api-semconv/src/test/java/io/opentelemetry/instrumentation/api/instrumenter/net/InetSocketAddressNetClientAttributesGetterTest.java index eb13698b417b..fc33b6d5e969 100644 --- a/instrumentation-api-semconv/src/test/java/io/opentelemetry/instrumentation/api/instrumenter/net/InetSocketAddressNetClientAttributesGetterTest.java +++ b/instrumentation-api-semconv/src/test/java/io/opentelemetry/instrumentation/api/instrumenter/net/InetSocketAddressNetClientAttributesGetterTest.java @@ -15,7 +15,6 @@ import io.opentelemetry.semconv.trace.attributes.SemanticAttributes; import java.net.Inet4Address; import java.net.InetSocketAddress; -import javax.annotation.Nullable; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.junit.jupiter.MockitoExtension; @@ -31,20 +30,6 @@ public String getTransport(InetSocketAddress request, InetSocketAddress response return SemanticAttributes.NetTransportValues.IP_TCP; } - @Nullable - @Override - public String getProtocolName( - InetSocketAddress address, @Nullable InetSocketAddress response) { - return null; - } - - @Nullable - @Override - public String getProtocolVersion( - InetSocketAddress address, @Nullable InetSocketAddress response) { - return null; - } - @Override public String getPeerName(InetSocketAddress request) { // net.peer.name and net.peer.port are tested in NetClientAttributesExtractorTest diff --git a/instrumentation/apache-dubbo-2.7/library-autoconfigure/src/main/java/io/opentelemetry/instrumentation/apachedubbo/v2_7/internal/DubboNetClientAttributesGetter.java b/instrumentation/apache-dubbo-2.7/library-autoconfigure/src/main/java/io/opentelemetry/instrumentation/apachedubbo/v2_7/internal/DubboNetClientAttributesGetter.java index ac1c6a935cb0..f82e1ea43d92 100644 --- a/instrumentation/apache-dubbo-2.7/library-autoconfigure/src/main/java/io/opentelemetry/instrumentation/apachedubbo/v2_7/internal/DubboNetClientAttributesGetter.java +++ b/instrumentation/apache-dubbo-2.7/library-autoconfigure/src/main/java/io/opentelemetry/instrumentation/apachedubbo/v2_7/internal/DubboNetClientAttributesGetter.java @@ -24,18 +24,6 @@ public String getTransport(DubboRequest request, @Nullable Result response) { return null; } - @Nullable - @Override - public String getProtocolName(DubboRequest request, @Nullable Result result) { - return null; - } - - @Nullable - @Override - public String getProtocolVersion(DubboRequest request, @Nullable Result result) { - return null; - } - @Nullable @Override public String getPeerName(DubboRequest request) { diff --git a/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/AwsSdkNetAttributesGetter.java b/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/AwsSdkNetAttributesGetter.java index 135ab629a5a7..23d6e732eaad 100644 --- a/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/AwsSdkNetAttributesGetter.java +++ b/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/AwsSdkNetAttributesGetter.java @@ -20,19 +20,6 @@ public String getTransport(ExecutionAttributes request, @Nullable SdkHttpRespons return SemanticAttributes.NetTransportValues.IP_TCP; } - @Nullable - @Override - public String getProtocolName(ExecutionAttributes request, @Nullable SdkHttpResponse response) { - return null; - } - - @Nullable - @Override - public String getProtocolVersion( - ExecutionAttributes request, @Nullable SdkHttpResponse response) { - return null; - } - @Override @Nullable public String getPeerName(ExecutionAttributes request) { diff --git a/instrumentation/cassandra/cassandra-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/cassandra/v3_0/CassandraNetAttributesGetter.java b/instrumentation/cassandra/cassandra-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/cassandra/v3_0/CassandraNetAttributesGetter.java index 128ba1f10d2a..6d95455e64af 100644 --- a/instrumentation/cassandra/cassandra-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/cassandra/v3_0/CassandraNetAttributesGetter.java +++ b/instrumentation/cassandra/cassandra-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/cassandra/v3_0/CassandraNetAttributesGetter.java @@ -19,19 +19,6 @@ public String getTransport(CassandraRequest request, @Nullable ExecutionInfo exe return null; } - @Nullable - @Override - public String getProtocolName(CassandraRequest request, @Nullable ExecutionInfo executionInfo) { - return null; - } - - @Nullable - @Override - public String getProtocolVersion( - CassandraRequest request, @Nullable ExecutionInfo executionInfo) { - return null; - } - @Nullable @Override public String getPeerName(CassandraRequest request) { diff --git a/instrumentation/cassandra/cassandra-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/cassandra/v4_0/CassandraNetAttributesGetter.java b/instrumentation/cassandra/cassandra-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/cassandra/v4_0/CassandraNetAttributesGetter.java index a19b7510be85..5d3dd467e680 100644 --- a/instrumentation/cassandra/cassandra-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/cassandra/v4_0/CassandraNetAttributesGetter.java +++ b/instrumentation/cassandra/cassandra-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/cassandra/v4_0/CassandraNetAttributesGetter.java @@ -21,19 +21,6 @@ public String getTransport(CassandraRequest request, @Nullable ExecutionInfo exe return null; } - @Nullable - @Override - public String getProtocolName(CassandraRequest request, @Nullable ExecutionInfo executionInfo) { - return null; - } - - @Nullable - @Override - public String getProtocolVersion( - CassandraRequest request, @Nullable ExecutionInfo executionInfo) { - return null; - } - @Nullable @Override public String getPeerName(CassandraRequest request) { diff --git a/instrumentation/cassandra/cassandra-4.4/library/src/main/java/io/opentelemetry/instrumentation/cassandra/v4_4/CassandraNetAttributesGetter.java b/instrumentation/cassandra/cassandra-4.4/library/src/main/java/io/opentelemetry/instrumentation/cassandra/v4_4/CassandraNetAttributesGetter.java index 5a6afbde946c..27e64d5e302a 100644 --- a/instrumentation/cassandra/cassandra-4.4/library/src/main/java/io/opentelemetry/instrumentation/cassandra/v4_4/CassandraNetAttributesGetter.java +++ b/instrumentation/cassandra/cassandra-4.4/library/src/main/java/io/opentelemetry/instrumentation/cassandra/v4_4/CassandraNetAttributesGetter.java @@ -21,20 +21,6 @@ public String getTransport(CassandraRequest request, @Nullable ExecutionInfo exe return null; } - @Nullable - @Override - public String getProtocolName( - CassandraRequest cassandraRequest, @Nullable ExecutionInfo executionInfo) { - return null; - } - - @Nullable - @Override - public String getProtocolVersion( - CassandraRequest cassandraRequest, @Nullable ExecutionInfo executionInfo) { - return null; - } - @Nullable @Override public String getPeerName(CassandraRequest request) { diff --git a/instrumentation/couchbase/couchbase-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/couchbase/v2_0/CouchbaseNetAttributesGetter.java b/instrumentation/couchbase/couchbase-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/couchbase/v2_0/CouchbaseNetAttributesGetter.java index 03cfac321c53..ff971d4f19ab 100644 --- a/instrumentation/couchbase/couchbase-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/couchbase/v2_0/CouchbaseNetAttributesGetter.java +++ b/instrumentation/couchbase/couchbase-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/couchbase/v2_0/CouchbaseNetAttributesGetter.java @@ -21,19 +21,6 @@ public String getTransport(CouchbaseRequestInfo couchbaseRequest, @Nullable Void : null; } - @Nullable - @Override - public String getProtocolName(CouchbaseRequestInfo couchbaseRequestInfo, @Nullable Void unused) { - return null; - } - - @Nullable - @Override - public String getProtocolVersion( - CouchbaseRequestInfo couchbaseRequestInfo, @Nullable Void unused) { - return null; - } - @Nullable @Override public String getPeerName(CouchbaseRequestInfo couchbaseRequest) { diff --git a/instrumentation/elasticsearch/elasticsearch-rest-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/ElasticsearchRestNetResponseAttributesGetter.java b/instrumentation/elasticsearch/elasticsearch-rest-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/ElasticsearchRestNetResponseAttributesGetter.java index 8ea8139ed3b1..71779c0ba3bf 100644 --- a/instrumentation/elasticsearch/elasticsearch-rest-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/ElasticsearchRestNetResponseAttributesGetter.java +++ b/instrumentation/elasticsearch/elasticsearch-rest-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/rest/ElasticsearchRestNetResponseAttributesGetter.java @@ -19,18 +19,6 @@ public String getTransport(ElasticsearchRestRequest request, Response response) return SemanticAttributes.NetTransportValues.IP_TCP; } - @Nullable - @Override - public String getProtocolName(ElasticsearchRestRequest request, @Nullable Response response) { - return null; - } - - @Nullable - @Override - public String getProtocolVersion(ElasticsearchRestRequest request, @Nullable Response response) { - return null; - } - @Override @Nullable public String getPeerName(ElasticsearchRestRequest request) { diff --git a/instrumentation/elasticsearch/elasticsearch-transport-6.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/transport/v6_0/Elasticsearch6TransportNetAttributesGetter.java b/instrumentation/elasticsearch/elasticsearch-transport-6.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/transport/v6_0/Elasticsearch6TransportNetAttributesGetter.java index df60a4ae1992..c2d82509f096 100644 --- a/instrumentation/elasticsearch/elasticsearch-transport-6.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/transport/v6_0/Elasticsearch6TransportNetAttributesGetter.java +++ b/instrumentation/elasticsearch/elasticsearch-transport-6.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/transport/v6_0/Elasticsearch6TransportNetAttributesGetter.java @@ -19,20 +19,6 @@ public String getTransport(ElasticTransportRequest request, @Nullable ActionResp return null; } - @Nullable - @Override - public String getProtocolName( - ElasticTransportRequest request, @Nullable ActionResponse actionResponse) { - return null; - } - - @Nullable - @Override - public String getProtocolVersion( - ElasticTransportRequest request, @Nullable ActionResponse actionResponse) { - return null; - } - @Nullable @Override public String getPeerName(ElasticTransportRequest request) { diff --git a/instrumentation/elasticsearch/elasticsearch-transport-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/transport/ElasticTransportNetResponseAttributesGetter.java b/instrumentation/elasticsearch/elasticsearch-transport-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/transport/ElasticTransportNetResponseAttributesGetter.java index 3374564d496b..39cc4993a3ce 100644 --- a/instrumentation/elasticsearch/elasticsearch-transport-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/transport/ElasticTransportNetResponseAttributesGetter.java +++ b/instrumentation/elasticsearch/elasticsearch-transport-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/transport/ElasticTransportNetResponseAttributesGetter.java @@ -18,20 +18,6 @@ public String getTransport(ElasticTransportRequest request, @Nullable ActionResp return null; } - @Nullable - @Override - public String getProtocolName( - ElasticTransportRequest request, @Nullable ActionResponse actionResponse) { - return null; - } - - @Nullable - @Override - public String getProtocolVersion( - ElasticTransportRequest request, @Nullable ActionResponse actionResponse) { - return null; - } - @Override @Nullable public String getPeerName(ElasticTransportRequest request) { diff --git a/instrumentation/google-http-client-1.19/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/googlehttpclient/GoogleHttpClientNetAttributesGetter.java b/instrumentation/google-http-client-1.19/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/googlehttpclient/GoogleHttpClientNetAttributesGetter.java index fd6ee142ae93..b1f24d861a77 100644 --- a/instrumentation/google-http-client-1.19/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/googlehttpclient/GoogleHttpClientNetAttributesGetter.java +++ b/instrumentation/google-http-client-1.19/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/googlehttpclient/GoogleHttpClientNetAttributesGetter.java @@ -19,18 +19,6 @@ public String getTransport(HttpRequest request, @Nullable HttpResponse response) return SemanticAttributes.NetTransportValues.IP_TCP; } - @Nullable - @Override - public String getProtocolName(HttpRequest request, @Nullable HttpResponse response) { - return null; - } - - @Nullable - @Override - public String getProtocolVersion(HttpRequest request, @Nullable HttpResponse response) { - return null; - } - @Override @Nullable public String getPeerName(HttpRequest request) { diff --git a/instrumentation/grpc-1.6/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/internal/GrpcNetClientAttributesGetter.java b/instrumentation/grpc-1.6/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/internal/GrpcNetClientAttributesGetter.java index 8bbd18ecda7d..0fdb82fb3612 100644 --- a/instrumentation/grpc-1.6/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/internal/GrpcNetClientAttributesGetter.java +++ b/instrumentation/grpc-1.6/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/internal/GrpcNetClientAttributesGetter.java @@ -25,18 +25,6 @@ public String getTransport(GrpcRequest request, @Nullable Status response) { return SemanticAttributes.NetTransportValues.IP_TCP; } - @Nullable - @Override - public String getProtocolName(GrpcRequest grpcRequest, @Nullable Status status) { - return null; - } - - @Nullable - @Override - public String getProtocolVersion(GrpcRequest grpcRequest, @Nullable Status status) { - return null; - } - @Nullable @Override public String getPeerName(GrpcRequest grpcRequest) { diff --git a/instrumentation/jaxrs-client/jaxrs-client-1.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrsclient/v1_1/JaxRsClientNetAttributesGetter.java b/instrumentation/jaxrs-client/jaxrs-client-1.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrsclient/v1_1/JaxRsClientNetAttributesGetter.java index 6537bbe7d148..6c29adaead1a 100644 --- a/instrumentation/jaxrs-client/jaxrs-client-1.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrsclient/v1_1/JaxRsClientNetAttributesGetter.java +++ b/instrumentation/jaxrs-client/jaxrs-client-1.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrsclient/v1_1/JaxRsClientNetAttributesGetter.java @@ -19,18 +19,6 @@ public String getTransport(ClientRequest request, @Nullable ClientResponse respo return SemanticAttributes.NetTransportValues.IP_TCP; } - @Nullable - @Override - public String getProtocolName(ClientRequest request, @Nullable ClientResponse response) { - return null; - } - - @Nullable - @Override - public String getProtocolVersion(ClientRequest request, @Nullable ClientResponse response) { - return null; - } - @Override @Nullable public String getPeerName(ClientRequest request) { diff --git a/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcNetAttributesGetter.java b/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcNetAttributesGetter.java index 5071924450f3..5261fd450bfe 100644 --- a/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcNetAttributesGetter.java +++ b/instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcNetAttributesGetter.java @@ -20,18 +20,6 @@ public String getTransport(DbRequest request, @Nullable Void unused) { return null; } - @Nullable - @Override - public String getProtocolName(DbRequest dbRequest, @Nullable Void unused) { - return null; - } - - @Nullable - @Override - public String getProtocolVersion(DbRequest dbRequest, @Nullable Void unused) { - return null; - } - @Nullable @Override public String getPeerName(DbRequest request) { diff --git a/instrumentation/jedis/jedis-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jedis/v1_4/JedisNetAttributesGetter.java b/instrumentation/jedis/jedis-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jedis/v1_4/JedisNetAttributesGetter.java index 0d7970cc6152..aa2c478d2e95 100644 --- a/instrumentation/jedis/jedis-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jedis/v1_4/JedisNetAttributesGetter.java +++ b/instrumentation/jedis/jedis-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jedis/v1_4/JedisNetAttributesGetter.java @@ -16,18 +16,6 @@ public String getTransport(JedisRequest request, @Nullable Void unused) { return null; } - @Nullable - @Override - public String getProtocolName(JedisRequest jedisRequest, @Nullable Void unused) { - return null; - } - - @Nullable - @Override - public String getProtocolVersion(JedisRequest jedisRequest, @Nullable Void unused) { - return null; - } - @Override public String getPeerName(JedisRequest request) { return request.getConnection().getHost(); diff --git a/instrumentation/jedis/jedis-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jedis/v3_0/JedisNetAttributesGetter.java b/instrumentation/jedis/jedis-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jedis/v3_0/JedisNetAttributesGetter.java index bc676f0b5054..7ecf8007106c 100644 --- a/instrumentation/jedis/jedis-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jedis/v3_0/JedisNetAttributesGetter.java +++ b/instrumentation/jedis/jedis-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jedis/v3_0/JedisNetAttributesGetter.java @@ -19,18 +19,6 @@ public String getTransport(JedisRequest jedisRequest, @Nullable Void unused) { return SemanticAttributes.NetTransportValues.IP_TCP; } - @Nullable - @Override - public String getProtocolName(JedisRequest jedisRequest, @Nullable Void unused) { - return null; - } - - @Nullable - @Override - public String getProtocolVersion(JedisRequest jedisRequest, @Nullable Void unused) { - return null; - } - @Nullable @Override public String getPeerName(JedisRequest jedisRequest) { diff --git a/instrumentation/jedis/jedis-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jedis/v4_0/JedisNetAttributesGetter.java b/instrumentation/jedis/jedis-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jedis/v4_0/JedisNetAttributesGetter.java index b805e461373a..fbe9b2216a4f 100644 --- a/instrumentation/jedis/jedis-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jedis/v4_0/JedisNetAttributesGetter.java +++ b/instrumentation/jedis/jedis-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jedis/v4_0/JedisNetAttributesGetter.java @@ -19,18 +19,6 @@ public String getTransport(JedisRequest jedisRequest, @Nullable Void unused) { return SemanticAttributes.NetTransportValues.IP_TCP; } - @Nullable - @Override - public String getProtocolName(JedisRequest jedisRequest, @Nullable Void unused) { - return null; - } - - @Nullable - @Override - public String getProtocolVersion(JedisRequest jedisRequest, @Nullable Void unused) { - return null; - } - @Nullable @Override public String getPeerName(JedisRequest jedisRequest) { diff --git a/instrumentation/kubernetes-client-7.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/kubernetesclient/KubernetesNetAttributesGetter.java b/instrumentation/kubernetes-client-7.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/kubernetesclient/KubernetesNetAttributesGetter.java index 8c881290e6fd..6deb533b4a8e 100644 --- a/instrumentation/kubernetes-client-7.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/kubernetesclient/KubernetesNetAttributesGetter.java +++ b/instrumentation/kubernetes-client-7.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/kubernetesclient/KubernetesNetAttributesGetter.java @@ -18,18 +18,6 @@ public String getTransport(Request request, @Nullable ApiResponse response) { return SemanticAttributes.NetTransportValues.IP_TCP; } - @Nullable - @Override - public String getProtocolName(Request request, @Nullable ApiResponse response) { - return null; - } - - @Nullable - @Override - public String getProtocolVersion(Request request, @Nullable ApiResponse response) { - return null; - } - @Override public String getPeerName(Request request) { return request.url().host(); diff --git a/instrumentation/lettuce/lettuce-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceConnectNetAttributesGetter.java b/instrumentation/lettuce/lettuce-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceConnectNetAttributesGetter.java index e0280d05d1a1..35bcc05eb448 100644 --- a/instrumentation/lettuce/lettuce-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceConnectNetAttributesGetter.java +++ b/instrumentation/lettuce/lettuce-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceConnectNetAttributesGetter.java @@ -17,18 +17,6 @@ public String getTransport(RedisURI redisUri, @Nullable Void unused) { return null; } - @Nullable - @Override - public String getProtocolName(RedisURI redisUri, @Nullable Void unused) { - return null; - } - - @Nullable - @Override - public String getProtocolVersion(RedisURI redisUri, @Nullable Void unused) { - return null; - } - @Override public String getPeerName(RedisURI redisUri) { return redisUri.getHost(); diff --git a/instrumentation/lettuce/lettuce-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceConnectNetAttributesGetter.java b/instrumentation/lettuce/lettuce-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceConnectNetAttributesGetter.java index 4847d962f0ab..db5dcba5a164 100644 --- a/instrumentation/lettuce/lettuce-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceConnectNetAttributesGetter.java +++ b/instrumentation/lettuce/lettuce-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceConnectNetAttributesGetter.java @@ -17,18 +17,6 @@ public String getTransport(RedisURI redisUri, @Nullable Void unused) { return null; } - @Nullable - @Override - public String getProtocolName(RedisURI redisUri, @Nullable Void unused) { - return null; - } - - @Nullable - @Override - public String getProtocolVersion(RedisURI redisUri, @Nullable Void unused) { - return null; - } - @Override public String getPeerName(RedisURI redisUri) { return redisUri.getHost(); diff --git a/instrumentation/lettuce/lettuce-5.1/library/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/LettuceNetAttributesGetter.java b/instrumentation/lettuce/lettuce-5.1/library/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/LettuceNetAttributesGetter.java index 82fdac7066e0..e1f91bfeec2f 100644 --- a/instrumentation/lettuce/lettuce-5.1/library/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/LettuceNetAttributesGetter.java +++ b/instrumentation/lettuce/lettuce-5.1/library/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/LettuceNetAttributesGetter.java @@ -20,18 +20,6 @@ public String getTransport(OpenTelemetryEndpoint endpoint, @Nullable Void unused return IP_TCP; } - @Nullable - @Override - public String getProtocolName(OpenTelemetryEndpoint endpoint, @Nullable Void unused) { - return null; - } - - @Nullable - @Override - public String getProtocolVersion(OpenTelemetryEndpoint endpoint, @Nullable Void unused) { - return null; - } - @Nullable @Override public String getPeerName(OpenTelemetryEndpoint openTelemetryEndpoint) { diff --git a/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoNetAttributesGetter.java b/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoNetAttributesGetter.java index 296f28b89d12..3801fd2679b1 100644 --- a/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoNetAttributesGetter.java +++ b/instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoNetAttributesGetter.java @@ -17,18 +17,6 @@ public String getTransport(CommandStartedEvent event, @Nullable Void unused) { return null; } - @Nullable - @Override - public String getProtocolName(CommandStartedEvent event, @Nullable Void unused) { - return null; - } - - @Nullable - @Override - public String getProtocolVersion(CommandStartedEvent event, @Nullable Void unused) { - return null; - } - @Nullable @Override public String getPeerName(CommandStartedEvent event) { diff --git a/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/client/NettyConnectNetAttributesGetter.java b/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/client/NettyConnectNetAttributesGetter.java index c03cbfb8d17f..ac114e24d4a1 100644 --- a/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/client/NettyConnectNetAttributesGetter.java +++ b/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/client/NettyConnectNetAttributesGetter.java @@ -24,18 +24,6 @@ public String getTransport(NettyConnectionRequest request, @Nullable Channel cha return channel instanceof DatagramChannel ? IP_UDP : IP_TCP; } - @Nullable - @Override - public String getProtocolName(NettyConnectionRequest request, @Nullable Channel channel) { - return null; - } - - @Nullable - @Override - public String getProtocolVersion(NettyConnectionRequest request, @Nullable Channel channel) { - return null; - } - @Nullable @Override public String getPeerName(NettyConnectionRequest request) { diff --git a/instrumentation/netty/netty-4-common/library/src/main/java/io/opentelemetry/instrumentation/netty/v4/common/internal/client/NettyConnectNetAttributesGetter.java b/instrumentation/netty/netty-4-common/library/src/main/java/io/opentelemetry/instrumentation/netty/v4/common/internal/client/NettyConnectNetAttributesGetter.java index 5c0d472f39b1..320d278ed65c 100644 --- a/instrumentation/netty/netty-4-common/library/src/main/java/io/opentelemetry/instrumentation/netty/v4/common/internal/client/NettyConnectNetAttributesGetter.java +++ b/instrumentation/netty/netty-4-common/library/src/main/java/io/opentelemetry/instrumentation/netty/v4/common/internal/client/NettyConnectNetAttributesGetter.java @@ -24,18 +24,6 @@ public String getTransport(NettyConnectionRequest request, @Nullable Channel cha return channel instanceof DatagramChannel ? IP_UDP : IP_TCP; } - @Nullable - @Override - public String getProtocolName(NettyConnectionRequest request, @Nullable Channel channel) { - return null; - } - - @Nullable - @Override - public String getProtocolVersion(NettyConnectionRequest request, @Nullable Channel channel) { - return null; - } - @Nullable @Override public String getPeerName(NettyConnectionRequest request) { diff --git a/instrumentation/netty/netty-4-common/library/src/main/java/io/opentelemetry/instrumentation/netty/v4/common/internal/client/NettySslNetAttributesGetter.java b/instrumentation/netty/netty-4-common/library/src/main/java/io/opentelemetry/instrumentation/netty/v4/common/internal/client/NettySslNetAttributesGetter.java index 6f45b8be015e..84d22b71cdc3 100644 --- a/instrumentation/netty/netty-4-common/library/src/main/java/io/opentelemetry/instrumentation/netty/v4/common/internal/client/NettySslNetAttributesGetter.java +++ b/instrumentation/netty/netty-4-common/library/src/main/java/io/opentelemetry/instrumentation/netty/v4/common/internal/client/NettySslNetAttributesGetter.java @@ -21,18 +21,6 @@ public String getTransport(NettySslRequest request, @Nullable Void unused) { return request.channel() instanceof DatagramChannel ? IP_UDP : IP_TCP; } - @Nullable - @Override - public String getProtocolName(NettySslRequest request, @Nullable Void unused) { - return null; - } - - @Nullable - @Override - public String getProtocolVersion(NettySslRequest request, @Nullable Void unused) { - return null; - } - @Nullable @Override public String getPeerName(NettySslRequest nettySslRequest) { diff --git a/instrumentation/opensearch/opensearch-rest-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/OpenSearchRestNetResponseAttributesGetter.java b/instrumentation/opensearch/opensearch-rest-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/OpenSearchRestNetResponseAttributesGetter.java index a71ebd77ebb3..02695fe3854c 100644 --- a/instrumentation/opensearch/opensearch-rest-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/OpenSearchRestNetResponseAttributesGetter.java +++ b/instrumentation/opensearch/opensearch-rest-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/OpenSearchRestNetResponseAttributesGetter.java @@ -19,18 +19,6 @@ public String getTransport(OpenSearchRestRequest request, Response response) { return SemanticAttributes.NetTransportValues.IP_TCP; } - @Nullable - @Override - public String getProtocolName(OpenSearchRestRequest request, @Nullable Response response) { - return null; - } - - @Nullable - @Override - public String getProtocolVersion(OpenSearchRestRequest request, @Nullable Response response) { - return null; - } - @Override @Nullable public String getPeerName(OpenSearchRestRequest request) { diff --git a/instrumentation/play/play-ws/play-ws-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/playws/PlayWsClientNetAttributesGetter.java b/instrumentation/play/play-ws/play-ws-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/playws/PlayWsClientNetAttributesGetter.java index 1b721f6af1d0..eff748c09b94 100644 --- a/instrumentation/play/play-ws/play-ws-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/playws/PlayWsClientNetAttributesGetter.java +++ b/instrumentation/play/play-ws/play-ws-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/playws/PlayWsClientNetAttributesGetter.java @@ -20,18 +20,6 @@ public String getTransport(Request request, @Nullable Response response) { return SemanticAttributes.NetTransportValues.IP_TCP; } - @Nullable - @Override - public String getProtocolName(Request request, @Nullable Response response) { - return null; - } - - @Nullable - @Override - public String getProtocolVersion(Request request, @Nullable Response response) { - return null; - } - @Nullable @Override public String getPeerName(Request request) { diff --git a/instrumentation/r2dbc-1.0/library/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/internal/R2dbcNetAttributesGetter.java b/instrumentation/r2dbc-1.0/library/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/internal/R2dbcNetAttributesGetter.java index 751a512ee0c7..9b8cfe2e6f6b 100644 --- a/instrumentation/r2dbc-1.0/library/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/internal/R2dbcNetAttributesGetter.java +++ b/instrumentation/r2dbc-1.0/library/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/internal/R2dbcNetAttributesGetter.java @@ -21,18 +21,6 @@ public String getTransport(DbExecution request, @Nullable Void unused) { return null; } - @Nullable - @Override - public String getProtocolName(DbExecution dbExecution, @Nullable Void unused) { - return null; - } - - @Nullable - @Override - public String getProtocolVersion(DbExecution dbExecution, @Nullable Void unused) { - return null; - } - @Nullable @Override public String getPeerName(DbExecution request) { diff --git a/instrumentation/rabbitmq-2.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rabbitmq/RabbitChannelNetAttributesGetter.java b/instrumentation/rabbitmq-2.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rabbitmq/RabbitChannelNetAttributesGetter.java index 6cf02f0d3a10..ee1f9cf1cac6 100644 --- a/instrumentation/rabbitmq-2.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rabbitmq/RabbitChannelNetAttributesGetter.java +++ b/instrumentation/rabbitmq-2.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rabbitmq/RabbitChannelNetAttributesGetter.java @@ -18,18 +18,6 @@ public String getTransport(ChannelAndMethod channelAndMethod, @Nullable Void unu return null; } - @Nullable - @Override - public String getProtocolName(ChannelAndMethod channelAndMethod, @Nullable Void unused) { - return null; - } - - @Nullable - @Override - public String getProtocolVersion(ChannelAndMethod channelAndMethod, @Nullable Void unused) { - return null; - } - @Nullable @Override public String getPeerName(ChannelAndMethod channelAndMethod) { diff --git a/instrumentation/rabbitmq-2.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rabbitmq/RabbitReceiveNetAttributesGetter.java b/instrumentation/rabbitmq-2.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rabbitmq/RabbitReceiveNetAttributesGetter.java index 619e36697c2b..057674cc1d18 100644 --- a/instrumentation/rabbitmq-2.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rabbitmq/RabbitReceiveNetAttributesGetter.java +++ b/instrumentation/rabbitmq-2.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rabbitmq/RabbitReceiveNetAttributesGetter.java @@ -19,18 +19,6 @@ public String getTransport(ReceiveRequest request, @Nullable GetResponse respons return null; } - @Nullable - @Override - public String getProtocolName(ReceiveRequest request, @Nullable GetResponse response) { - return null; - } - - @Nullable - @Override - public String getProtocolVersion(ReceiveRequest request, @Nullable GetResponse response) { - return null; - } - @Nullable @Override public String getPeerName(ReceiveRequest request) { diff --git a/instrumentation/ratpack/ratpack-1.7/library/src/main/java/io/opentelemetry/instrumentation/ratpack/v1_7/internal/RatpackNetClientAttributesGetter.java b/instrumentation/ratpack/ratpack-1.7/library/src/main/java/io/opentelemetry/instrumentation/ratpack/v1_7/internal/RatpackNetClientAttributesGetter.java index 0116f213a4f4..c9c7e854a33c 100644 --- a/instrumentation/ratpack/ratpack-1.7/library/src/main/java/io/opentelemetry/instrumentation/ratpack/v1_7/internal/RatpackNetClientAttributesGetter.java +++ b/instrumentation/ratpack/ratpack-1.7/library/src/main/java/io/opentelemetry/instrumentation/ratpack/v1_7/internal/RatpackNetClientAttributesGetter.java @@ -23,18 +23,6 @@ public String getTransport(RequestSpec request, @Nullable HttpResponse response) return SemanticAttributes.NetTransportValues.IP_TCP; } - @Nullable - @Override - public String getProtocolName(RequestSpec request, @Nullable HttpResponse response) { - return null; - } - - @Nullable - @Override - public String getProtocolVersion(RequestSpec request, @Nullable HttpResponse response) { - return null; - } - @Override @Nullable public String getPeerName(RequestSpec request) { diff --git a/instrumentation/redisson/redisson-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/redisson/RedissonNetAttributesGetter.java b/instrumentation/redisson/redisson-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/redisson/RedissonNetAttributesGetter.java index 5643746eda98..dbf8a4d96fb1 100644 --- a/instrumentation/redisson/redisson-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/redisson/RedissonNetAttributesGetter.java +++ b/instrumentation/redisson/redisson-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/redisson/RedissonNetAttributesGetter.java @@ -18,18 +18,6 @@ public String getTransport(RedissonRequest request, @Nullable Void unused) { return null; } - @Nullable - @Override - public String getProtocolName(RedissonRequest redissonRequest, @Nullable Void unused) { - return null; - } - - @Nullable - @Override - public String getProtocolVersion(RedissonRequest redissonRequest, @Nullable Void unused) { - return null; - } - @Nullable @Override public String getPeerName(RedissonRequest redissonRequest) { diff --git a/instrumentation/spring/spring-web/spring-web-3.1/library/src/main/java/io/opentelemetry/instrumentation/spring/web/v3_1/SpringWebNetAttributesGetter.java b/instrumentation/spring/spring-web/spring-web-3.1/library/src/main/java/io/opentelemetry/instrumentation/spring/web/v3_1/SpringWebNetAttributesGetter.java index 95442550ece9..4a47d826ee7a 100644 --- a/instrumentation/spring/spring-web/spring-web-3.1/library/src/main/java/io/opentelemetry/instrumentation/spring/web/v3_1/SpringWebNetAttributesGetter.java +++ b/instrumentation/spring/spring-web/spring-web-3.1/library/src/main/java/io/opentelemetry/instrumentation/spring/web/v3_1/SpringWebNetAttributesGetter.java @@ -19,18 +19,6 @@ public String getTransport(HttpRequest httpRequest, @Nullable ClientHttpResponse return SemanticAttributes.NetTransportValues.IP_TCP; } - @Nullable - @Override - public String getProtocolName(HttpRequest httpRequest, @Nullable ClientHttpResponse response) { - return null; - } - - @Nullable - @Override - public String getProtocolVersion(HttpRequest httpRequest, @Nullable ClientHttpResponse response) { - return null; - } - @Override @Nullable public String getPeerName(HttpRequest httpRequest) { diff --git a/instrumentation/spring/spring-webflux/spring-webflux-5.3/library/src/main/java/io/opentelemetry/instrumentation/spring/webflux/v5_3/internal/WebClientNetAttributesGetter.java b/instrumentation/spring/spring-webflux/spring-webflux-5.3/library/src/main/java/io/opentelemetry/instrumentation/spring/webflux/v5_3/internal/WebClientNetAttributesGetter.java index a4b01902b908..b58942939481 100644 --- a/instrumentation/spring/spring-webflux/spring-webflux-5.3/library/src/main/java/io/opentelemetry/instrumentation/spring/webflux/v5_3/internal/WebClientNetAttributesGetter.java +++ b/instrumentation/spring/spring-webflux/spring-webflux-5.3/library/src/main/java/io/opentelemetry/instrumentation/spring/webflux/v5_3/internal/WebClientNetAttributesGetter.java @@ -23,18 +23,6 @@ public String getTransport(ClientRequest request, @Nullable ClientResponse respo return SemanticAttributes.NetTransportValues.IP_TCP; } - @Nullable - @Override - public String getProtocolName(ClientRequest request, @Nullable ClientResponse response) { - return null; - } - - @Nullable - @Override - public String getProtocolVersion(ClientRequest request, @Nullable ClientResponse response) { - return null; - } - @Nullable @Override public String getPeerName(ClientRequest request) { diff --git a/instrumentation/vertx/vertx-http-client/vertx-http-client-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/v3_0/client/Vertx3NetAttributesGetter.java b/instrumentation/vertx/vertx-http-client/vertx-http-client-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/v3_0/client/Vertx3NetAttributesGetter.java index 0f957f61b40c..8f38a06c0351 100644 --- a/instrumentation/vertx/vertx-http-client/vertx-http-client-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/v3_0/client/Vertx3NetAttributesGetter.java +++ b/instrumentation/vertx/vertx-http-client/vertx-http-client-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/v3_0/client/Vertx3NetAttributesGetter.java @@ -21,19 +21,6 @@ public String getTransport(HttpClientRequest request, @Nullable HttpClientRespon return SemanticAttributes.NetTransportValues.IP_TCP; } - @Nullable - @Override - public String getProtocolName(HttpClientRequest request, @Nullable HttpClientResponse response) { - return null; - } - - @Nullable - @Override - public String getProtocolVersion( - HttpClientRequest request, @Nullable HttpClientResponse response) { - return null; - } - @Nullable @Override public String getPeerName(HttpClientRequest request) {