Browse Source

Remove old HTTP semconv code (#9968)

Mateusz Rzeszutek 1 year ago
parent
commit
7cd705b555
84 changed files with 216 additions and 2230 deletions
  1. 9 31
      instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/CapturedHttpHeadersUtil.java
  2. 2 47
      instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpClientAttributesExtractor.java
  3. 5 30
      instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpClientAttributesExtractorBuilder.java
  4. 1 6
      instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpClientAttributesGetter.java
  5. 10 33
      instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpClientMetrics.java
  6. 0 6
      instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpClientPeerServiceAttributesExtractor.java
  7. 35 98
      instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpCommonAttributesExtractor.java
  8. 5 8
      instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpExperimentalAttributesExtractor.java
  9. 2 15
      instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpMessageBodySizeUtil.java
  10. 11 67
      instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpMetricsAdvice.java
  11. 0 35
      instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpMetricsUtil.java
  12. 0 16
      instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpRouteBiGetter.java
  13. 0 16
      instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpRouteGetter.java
  14. 0 96
      instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpRouteHolder.java
  15. 0 50
      instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpRouteSource.java
  16. 1 39
      instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpServerAttributesExtractor.java
  17. 7 37
      instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpServerAttributesExtractorBuilder.java
  18. 1 37
      instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpServerAttributesGetter.java
  19. 10 33
      instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpServerMetrics.java
  20. 0 82
      instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/net/NetClientAttributesExtractor.java
  21. 0 78
      instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/net/NetClientAttributesGetter.java
  22. 0 91
      instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/net/NetServerAttributesExtractor.java
  23. 0 103
      instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/net/NetServerAttributesGetter.java
  24. 3 11
      instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/net/PeerServiceAttributesExtractor.java
  25. 0 57
      instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/net/internal/InternalNetClientAttributesExtractor.java
  26. 0 75
      instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/net/internal/InternalNetServerAttributesExtractor.java
  27. 3 6
      instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/network/ClientAttributesExtractor.java
  28. 1 59
      instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/network/ClientAttributesGetter.java
  29. 1 8
      instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/network/NetworkAttributesExtractor.java
  30. 1 1
      instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/network/NetworkAttributesGetter.java
  31. 4 25
      instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/network/ServerAttributesExtractor.java
  32. 1 80
      instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/network/ServerAttributesGetter.java
  33. 2 2
      instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/network/internal/ClientAddressAndPortExtractor.java
  34. 1 25
      instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/network/internal/InetSocketAddressUtil.java
  35. 4 17
      instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/network/internal/InternalClientAttributesExtractor.java
  36. 9 60
      instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/network/internal/InternalNetworkAttributesExtractor.java
  37. 3 44
      instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/network/internal/InternalServerAttributesExtractor.java
  38. 2 2
      instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/network/internal/ServerAddressAndPortExtractor.java
  39. 23 46
      instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/rpc/RpcMetricsAdvice.java
  40. 1 4
      instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/url/UrlAttributesExtractor.java
  41. 4 27
      instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/url/internal/InternalUrlAttributesExtractor.java
  42. 1 1
      instrumentation-api-semconv/src/test/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpClientMetricsTest.java
  43. 1 1
      instrumentation-api-semconv/src/test/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpServerMetricsTest.java
  44. 0 132
      instrumentation-api-semconv/src/test/java/io/opentelemetry/instrumentation/api/instrumenter/net/NetClientAttributesExtractorTest.java
  45. 0 148
      instrumentation-api-semconv/src/test/java/io/opentelemetry/instrumentation/api/instrumenter/net/NetServerAttributesExtractorTest.java
  46. 1 39
      instrumentation-api-semconv/src/test/java/io/opentelemetry/instrumentation/api/instrumenter/net/PeerServiceAttributesExtractorTest.java
  47. 1 2
      instrumentation-api-semconv/src/test/java/io/opentelemetry/instrumentation/api/instrumenter/network/ClientAttributesExtractorTest.java
  48. 1 2
      instrumentation-api-semconv/src/test/java/io/opentelemetry/instrumentation/api/instrumenter/network/ServerAttributesExtractorTest.java
  49. 0 8
      instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/internal/SemconvStability.java
  50. 1 15
      instrumentation/apache-dubbo-2.7/library-autoconfigure/src/main/java/io/opentelemetry/instrumentation/apachedubbo/v2_7/DubboNetworkServerAttributesGetter.java
  51. 0 3
      instrumentation/apache-dubbo-2.7/library-autoconfigure/src/main/java/io/opentelemetry/instrumentation/apachedubbo/v2_7/DubboTelemetryBuilder.java
  52. 1 2
      instrumentation/apache-dubbo-2.7/library-autoconfigure/src/main/java/io/opentelemetry/instrumentation/apachedubbo/v2_7/internal/DubboClientNetworkAttributesGetter.java
  53. 0 14
      instrumentation/grizzly-2.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/grizzly/GrizzlyHttpAttributesGetter.java
  54. 1 2
      instrumentation/grpc-1.6/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/GrpcNetworkServerAttributesGetter.java
  55. 1 2
      instrumentation/grpc-1.6/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/GrpcTelemetryBuilder.java
  56. 1 2
      instrumentation/grpc-1.6/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/internal/GrpcClientNetworkAttributesGetter.java
  57. 1 1
      instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcNetworkAttributesGetter.java
  58. 1 1
      instrumentation/jedis/jedis-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jedis/v1_4/JedisNetworkAttributesGetter.java
  59. 1 2
      instrumentation/jedis/jedis-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jedis/v3_0/JedisNetworkAttributesGetter.java
  60. 2 2
      instrumentation/ktor/ktor-2.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v2_0/client/KtorHttpClientAttributesGetter.kt
  61. 1 2
      instrumentation/lettuce/lettuce-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceConnectNetworkAttributesGetter.java
  62. 1 2
      instrumentation/lettuce/lettuce-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceConnectNetworkAttributesGetter.java
  63. 1 1
      instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoNetworkAttributesGetter.java
  64. 0 9
      instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/client/NettyConnectHttpAttributesGetter.java
  65. 0 9
      instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/client/NettyHttpClientAttributesGetter.java
  66. 0 9
      instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/server/NettyHttpServerAttributesGetter.java
  67. 5 11
      instrumentation/netty/netty-4-common/library/src/main/java/io/opentelemetry/instrumentation/netty/v4/common/internal/client/NettyClientInstrumenterFactory.java
  68. 0 9
      instrumentation/netty/netty-4-common/library/src/main/java/io/opentelemetry/instrumentation/netty/v4/common/internal/client/NettyConnectHttpAttributesGetter.java
  69. 0 9
      instrumentation/netty/netty-4-common/library/src/main/java/io/opentelemetry/instrumentation/netty/v4/common/internal/client/NettyHttpClientAttributesGetter.java
  70. 2 25
      instrumentation/netty/netty-4-common/library/src/main/java/io/opentelemetry/instrumentation/netty/v4/common/internal/client/NettySslNetAttributesGetter.java
  71. 0 9
      instrumentation/netty/netty-4-common/library/src/main/java/io/opentelemetry/instrumentation/netty/v4/common/internal/server/NettyHttpServerAttributesGetter.java
  72. 2 9
      instrumentation/opensearch/opensearch-rest-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/OpenSearchRestInstrumenterFactory.java
  73. 2 25
      instrumentation/opensearch/opensearch-rest-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/OpenSearchRestNetResponseAttributesGetter.java
  74. 1 1
      instrumentation/pulsar/pulsar-2.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/pulsar/v2_8/telemetry/PulsarNetClientAttributesGetter.java
  75. 1 1
      instrumentation/r2dbc-1.0/library/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/internal/R2dbcNetAttributesGetter.java
  76. 2 24
      instrumentation/rabbitmq-2.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rabbitmq/RabbitChannelNetAttributesGetter.java
  77. 2 24
      instrumentation/rabbitmq-2.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rabbitmq/RabbitReceiveNetAttributesGetter.java
  78. 3 7
      instrumentation/rabbitmq-2.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rabbitmq/RabbitSingletons.java
  79. 7 28
      instrumentation/servlet/servlet-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/ServletRequestParametersExtractor.java
  80. 1 1
      instrumentation/vertx/vertx-sql-client-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/v4_0/sql/VertxSqlClientNetAttributesGetter.java
  81. 1 3
      testing-common/src/main/groovy/io/opentelemetry/instrumentation/test/base/HttpClientTest.groovy
  82. 0 2
      testing-common/src/main/groovy/io/opentelemetry/instrumentation/test/base/HttpServerTest.groovy
  83. 4 14
      testing-common/src/main/java/io/opentelemetry/instrumentation/testing/junit/http/AbstractHttpClientTest.java
  84. 3 14
      testing-common/src/main/java/io/opentelemetry/instrumentation/testing/junit/http/AbstractHttpServerTest.java

+ 9 - 31
instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/CapturedHttpHeadersUtil.java

@@ -19,47 +19,25 @@ final class CapturedHttpHeadersUtil {
   // these are naturally bounded because they only store keys listed in
   // otel.instrumentation.http.server.capture-request-headers and
   // otel.instrumentation.http.server.capture-response-headers
-  private static final ConcurrentMap<String, AttributeKey<List<String>>>
-      oldSemconvRequestKeysCache = new ConcurrentHashMap<>();
-  private static final ConcurrentMap<String, AttributeKey<List<String>>>
-      stableSemconvRequestKeysCache = new ConcurrentHashMap<>();
-  private static final ConcurrentMap<String, AttributeKey<List<String>>>
-      oldSemconvResponseKeysCache = new ConcurrentHashMap<>();
-  private static final ConcurrentMap<String, AttributeKey<List<String>>>
-      stableSemconvResponseKeysCache = new ConcurrentHashMap<>();
+  private static final ConcurrentMap<String, AttributeKey<List<String>>> requestKeysCache =
+      new ConcurrentHashMap<>();
+  private static final ConcurrentMap<String, AttributeKey<List<String>>> responseKeysCache =
+      new ConcurrentHashMap<>();
 
   static List<String> lowercase(List<String> names) {
     return unmodifiableList(
         names.stream().map(s -> s.toLowerCase(Locale.ROOT)).collect(Collectors.toList()));
   }
 
-  static AttributeKey<List<String>> oldSemconvRequestAttributeKey(String headerName) {
-    return oldSemconvRequestKeysCache.computeIfAbsent(
-        headerName, n -> createOldSemconvKey("request", n));
+  static AttributeKey<List<String>> requestAttributeKey(String headerName) {
+    return requestKeysCache.computeIfAbsent(headerName, n -> createKey("request", n));
   }
 
-  static AttributeKey<List<String>> stableSemconvRequestAttributeKey(String headerName) {
-    return stableSemconvRequestKeysCache.computeIfAbsent(
-        headerName, n -> createStableSemconvKey("request", n));
+  static AttributeKey<List<String>> responseAttributeKey(String headerName) {
+    return responseKeysCache.computeIfAbsent(headerName, n -> createKey("response", n));
   }
 
-  static AttributeKey<List<String>> oldSemconvResponseAttributeKey(String headerName) {
-    return oldSemconvResponseKeysCache.computeIfAbsent(
-        headerName, n -> createOldSemconvKey("response", n));
-  }
-
-  static AttributeKey<List<String>> stableSemconvResponseAttributeKey(String headerName) {
-    return stableSemconvResponseKeysCache.computeIfAbsent(
-        headerName, n -> createStableSemconvKey("response", n));
-  }
-
-  private static AttributeKey<List<String>> createOldSemconvKey(String type, String headerName) {
-    // headerName is always lowercase, see CapturedHttpHeadersUtil#lowercase
-    String key = "http." + type + ".header." + headerName.replace('-', '_');
-    return AttributeKey.stringArrayKey(key);
-  }
-
-  private static AttributeKey<List<String>> createStableSemconvKey(String type, String headerName) {
+  private static AttributeKey<List<String>> createKey(String type, String headerName) {
     // headerName is always lowercase, see CapturedHttpHeadersUtil#lowercase
     String key = "http." + type + ".header." + headerName;
     return AttributeKey.stringArrayKey(key);

+ 2 - 47
instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpClientAttributesExtractor.java

@@ -12,10 +12,8 @@ import io.opentelemetry.context.Context;
 import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor;
 import io.opentelemetry.instrumentation.api.instrumenter.InstrumenterBuilder;
 import io.opentelemetry.instrumentation.api.instrumenter.http.internal.HttpAttributes;
-import io.opentelemetry.instrumentation.api.instrumenter.net.internal.InternalNetClientAttributesExtractor;
 import io.opentelemetry.instrumentation.api.instrumenter.network.internal.InternalNetworkAttributesExtractor;
 import io.opentelemetry.instrumentation.api.instrumenter.network.internal.InternalServerAttributesExtractor;
-import io.opentelemetry.instrumentation.api.internal.SemconvStability;
 import io.opentelemetry.instrumentation.api.internal.SpanKey;
 import io.opentelemetry.instrumentation.api.internal.SpanKeyProvider;
 import io.opentelemetry.semconv.SemanticAttributes;
@@ -42,49 +40,15 @@ public final class HttpClientAttributesExtractor<REQUEST, RESPONSE>
     return builder(httpAttributesGetter).build();
   }
 
-  /**
-   * Creates the HTTP client attributes extractor with default configuration.
-   *
-   * @deprecated Make sure that your {@linkplain HttpClientAttributesGetter getter} implements all
-   *     the network-related methods and use {@link #create(HttpClientAttributesGetter)} instead.
-   *     This method will be removed in the 2.0 release.
-   */
-  @Deprecated
-  public static <REQUEST, RESPONSE> AttributesExtractor<REQUEST, RESPONSE> create(
-      HttpClientAttributesGetter<REQUEST, RESPONSE> httpAttributesGetter,
-      io.opentelemetry.instrumentation.api.instrumenter.net.NetClientAttributesGetter<
-              REQUEST, RESPONSE>
-          netAttributesGetter) {
-    return builder(httpAttributesGetter, netAttributesGetter).build();
-  }
-
   /**
    * Returns a new {@link HttpClientAttributesExtractorBuilder} that can be used to configure the
    * HTTP client attributes extractor.
    */
   public static <REQUEST, RESPONSE> HttpClientAttributesExtractorBuilder<REQUEST, RESPONSE> builder(
       HttpClientAttributesGetter<REQUEST, RESPONSE> httpAttributesGetter) {
-    return new HttpClientAttributesExtractorBuilder<>(httpAttributesGetter, httpAttributesGetter);
+    return new HttpClientAttributesExtractorBuilder<>(httpAttributesGetter);
   }
 
-  /**
-   * Returns a new {@link HttpClientAttributesExtractorBuilder} that can be used to configure the
-   * HTTP client attributes extractor.
-   *
-   * @deprecated Make sure that your {@linkplain HttpClientAttributesGetter getter} implements all
-   *     the network-related methods and use {@link #builder(HttpClientAttributesGetter)} instead.
-   *     This method will be removed in the 2.0 release.
-   */
-  @Deprecated
-  public static <REQUEST, RESPONSE> HttpClientAttributesExtractorBuilder<REQUEST, RESPONSE> builder(
-      HttpClientAttributesGetter<REQUEST, RESPONSE> httpAttributesGetter,
-      io.opentelemetry.instrumentation.api.instrumenter.net.NetClientAttributesGetter<
-              REQUEST, RESPONSE>
-          netAttributesGetter) {
-    return new HttpClientAttributesExtractorBuilder<>(httpAttributesGetter, netAttributesGetter);
-  }
-
-  private final InternalNetClientAttributesExtractor<REQUEST, RESPONSE> internalNetExtractor;
   private final InternalNetworkAttributesExtractor<REQUEST, RESPONSE> internalNetworkExtractor;
   private final InternalServerAttributesExtractor<REQUEST> internalServerExtractor;
   private final ToIntFunction<Context> resendCountIncrementer;
@@ -92,31 +56,23 @@ public final class HttpClientAttributesExtractor<REQUEST, RESPONSE>
   HttpClientAttributesExtractor(HttpClientAttributesExtractorBuilder<REQUEST, RESPONSE> builder) {
     super(
         builder.httpAttributesGetter,
-        builder.netAttributesGetter,
         HttpStatusCodeConverter.CLIENT,
         builder.capturedRequestHeaders,
         builder.capturedResponseHeaders,
         builder.knownMethods);
-    internalNetExtractor = builder.buildNetExtractor();
     internalNetworkExtractor = builder.buildNetworkExtractor();
     internalServerExtractor = builder.buildServerExtractor();
     resendCountIncrementer = builder.resendCountIncrementer;
   }
 
   @Override
-  @SuppressWarnings("deprecation") // until old http semconv are dropped in 2.0
   public void onStart(AttributesBuilder attributes, Context parentContext, REQUEST request) {
     super.onStart(attributes, parentContext, request);
 
     internalServerExtractor.onStart(attributes, request);
 
     String fullUrl = stripSensitiveData(getter.getUrlFull(request));
-    if (SemconvStability.emitStableHttpSemconv()) {
-      internalSet(attributes, SemanticAttributes.URL_FULL, fullUrl);
-    }
-    if (SemconvStability.emitOldHttpSemconv()) {
-      internalSet(attributes, SemanticAttributes.HTTP_URL, fullUrl);
-    }
+    internalSet(attributes, SemanticAttributes.URL_FULL, fullUrl);
 
     int resendCount = resendCountIncrementer.applyAsInt(parentContext);
     if (resendCount > 0) {
@@ -133,7 +89,6 @@ public final class HttpClientAttributesExtractor<REQUEST, RESPONSE>
       @Nullable Throwable error) {
     super.onEnd(attributes, context, request, response, error);
 
-    internalNetExtractor.onEnd(attributes, request, response);
     internalNetworkExtractor.onEnd(attributes, request, response);
   }
 

+ 5 - 30
instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpClientAttributesExtractorBuilder.java

@@ -11,13 +11,11 @@ import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import io.opentelemetry.context.Context;
 import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor;
 import io.opentelemetry.instrumentation.api.instrumenter.InstrumenterBuilder;
-import io.opentelemetry.instrumentation.api.instrumenter.net.internal.InternalNetClientAttributesExtractor;
 import io.opentelemetry.instrumentation.api.instrumenter.network.internal.AddressAndPortExtractor;
 import io.opentelemetry.instrumentation.api.instrumenter.network.internal.InternalNetworkAttributesExtractor;
 import io.opentelemetry.instrumentation.api.instrumenter.network.internal.InternalServerAttributesExtractor;
 import io.opentelemetry.instrumentation.api.instrumenter.network.internal.ServerAddressAndPortExtractor;
 import io.opentelemetry.instrumentation.api.internal.HttpConstants;
-import io.opentelemetry.instrumentation.api.internal.SemconvStability;
 import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.List;
@@ -29,11 +27,6 @@ public final class HttpClientAttributesExtractorBuilder<REQUEST, RESPONSE> {
 
   final HttpClientAttributesGetter<REQUEST, RESPONSE> httpAttributesGetter;
 
-  @SuppressWarnings("deprecation") // using the net extractor for the old->stable semconv story
-  final io.opentelemetry.instrumentation.api.instrumenter.net.NetClientAttributesGetter<
-          REQUEST, RESPONSE>
-      netAttributesGetter;
-
   final AddressAndPortExtractor<REQUEST> serverAddressAndPortExtractor;
   List<String> capturedRequestHeaders = emptyList();
   List<String> capturedResponseHeaders = emptyList();
@@ -41,16 +34,11 @@ public final class HttpClientAttributesExtractorBuilder<REQUEST, RESPONSE> {
   ToIntFunction<Context> resendCountIncrementer = HttpClientRequestResendCount::getAndIncrement;
 
   HttpClientAttributesExtractorBuilder(
-      HttpClientAttributesGetter<REQUEST, RESPONSE> httpAttributesGetter,
-      @SuppressWarnings("deprecation") // using the net extractor for the old->stable semconv story
-          io.opentelemetry.instrumentation.api.instrumenter.net.NetClientAttributesGetter<
-                  REQUEST, RESPONSE>
-              netAttributesGetter) {
+      HttpClientAttributesGetter<REQUEST, RESPONSE> httpAttributesGetter) {
     this.httpAttributesGetter = httpAttributesGetter;
-    this.netAttributesGetter = netAttributesGetter;
     serverAddressAndPortExtractor =
         new ServerAddressAndPortExtractor<>(
-            netAttributesGetter, new HostAddressAndPortExtractor<>(httpAttributesGetter));
+            httpAttributesGetter, new HostAddressAndPortExtractor<>(httpAttributesGetter));
   }
 
   /**
@@ -129,28 +117,15 @@ public final class HttpClientAttributesExtractorBuilder<REQUEST, RESPONSE> {
     return new HttpClientAttributesExtractor<>(this);
   }
 
-  InternalNetClientAttributesExtractor<REQUEST, RESPONSE> buildNetExtractor() {
-    return new InternalNetClientAttributesExtractor<>(
-        netAttributesGetter, serverAddressAndPortExtractor, SemconvStability.emitOldHttpSemconv());
-  }
-
   InternalNetworkAttributesExtractor<REQUEST, RESPONSE> buildNetworkExtractor() {
     return new InternalNetworkAttributesExtractor<>(
-        netAttributesGetter,
-        serverAddressAndPortExtractor,
+        httpAttributesGetter,
         // network.{transport,type} are opt-in, network.protocol.* have HTTP-specific logic
         /* captureProtocolAttributes= */ false,
-        /* captureLocalSocketAttributes= */ false,
-        /* captureOldPeerDomainAttribute= */ true,
-        SemconvStability.emitStableHttpSemconv(),
-        SemconvStability.emitOldHttpSemconv());
+        /* captureLocalSocketAttributes= */ false);
   }
 
   InternalServerAttributesExtractor<REQUEST> buildServerExtractor() {
-    return new InternalServerAttributesExtractor<>(
-        serverAddressAndPortExtractor,
-        SemconvStability.emitStableHttpSemconv(),
-        SemconvStability.emitOldHttpSemconv(),
-        InternalServerAttributesExtractor.Mode.PEER);
+    return new InternalServerAttributesExtractor<>(serverAddressAndPortExtractor);
   }
 }

+ 1 - 6
instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpClientAttributesGetter.java

@@ -16,15 +16,10 @@ import javax.annotation.Nullable;
  * library/framework. It will be used by the {@link HttpClientAttributesExtractor} to obtain the
  * various HTTP client attributes in a type-generic way.
  */
-@SuppressWarnings(
-    "deprecation") // implementing the NetClientAttributesGetter for the old->stable semconv story;
-// will be removed in 2.0
 public interface HttpClientAttributesGetter<REQUEST, RESPONSE>
     extends HttpCommonAttributesGetter<REQUEST, RESPONSE>,
-        io.opentelemetry.instrumentation.api.instrumenter.net.NetClientAttributesGetter<
-            REQUEST, RESPONSE>,
         NetworkAttributesGetter<REQUEST, RESPONSE>,
-        ServerAttributesGetter<REQUEST, RESPONSE> {
+        ServerAttributesGetter<REQUEST> {
 
   /**
    * Returns the absolute URL describing a network resource according to <a

+ 10 - 33
instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpClientMetrics.java

@@ -5,7 +5,6 @@
 
 package io.opentelemetry.instrumentation.api.instrumenter.http;
 
-import static io.opentelemetry.instrumentation.api.instrumenter.http.HttpMetricsUtil.createStableDurationHistogramBuilder;
 import static java.util.logging.Level.FINE;
 
 import com.google.auto.value.AutoValue;
@@ -18,10 +17,8 @@ import io.opentelemetry.context.ContextKey;
 import io.opentelemetry.instrumentation.api.instrumenter.InstrumenterBuilder;
 import io.opentelemetry.instrumentation.api.instrumenter.OperationListener;
 import io.opentelemetry.instrumentation.api.instrumenter.OperationMetrics;
-import io.opentelemetry.instrumentation.api.internal.SemconvStability;
 import java.util.concurrent.TimeUnit;
 import java.util.logging.Logger;
-import javax.annotation.Nullable;
 
 /**
  * {@link OperationListener} which keeps track of <a
@@ -30,7 +27,6 @@ import javax.annotation.Nullable;
  */
 public final class HttpClientMetrics implements OperationListener {
 
-  private static final double NANOS_PER_MS = TimeUnit.MILLISECONDS.toNanos(1);
   private static final double NANOS_PER_S = TimeUnit.SECONDS.toNanos(1);
 
   private static final ContextKey<State> HTTP_CLIENT_REQUEST_METRICS_STATE =
@@ -48,30 +44,17 @@ public final class HttpClientMetrics implements OperationListener {
     return HttpClientMetrics::new;
   }
 
-  @Nullable private final DoubleHistogram stableDuration;
-  @Nullable private final DoubleHistogram oldDuration;
+  private final DoubleHistogram duration;
 
   private HttpClientMetrics(Meter meter) {
-    if (SemconvStability.emitStableHttpSemconv()) {
-      DoubleHistogramBuilder stableDurationBuilder =
-          createStableDurationHistogramBuilder(
-              meter, "http.client.request.duration", "Duration of HTTP client requests.");
-      HttpMetricsAdvice.applyStableClientDurationAdvice(stableDurationBuilder);
-      stableDuration = stableDurationBuilder.build();
-    } else {
-      stableDuration = null;
-    }
-    if (SemconvStability.emitOldHttpSemconv()) {
-      DoubleHistogramBuilder oldDurationBuilder =
-          meter
-              .histogramBuilder("http.client.duration")
-              .setUnit("ms")
-              .setDescription("The duration of the outbound HTTP request");
-      HttpMetricsAdvice.applyOldClientDurationAdvice(oldDurationBuilder);
-      oldDuration = oldDurationBuilder.build();
-    } else {
-      oldDuration = null;
-    }
+    DoubleHistogramBuilder stableDurationBuilder =
+        meter
+            .histogramBuilder("http.client.request.duration")
+            .setUnit("s")
+            .setDescription("Duration of HTTP client requests.")
+            .setExplicitBucketBoundariesAdvice(HttpMetricsAdvice.DURATION_SECONDS_BUCKETS);
+    HttpMetricsAdvice.applyClientDurationAdvice(stableDurationBuilder);
+    duration = stableDurationBuilder.build();
   }
 
   @Override
@@ -94,13 +77,7 @@ public final class HttpClientMetrics implements OperationListener {
 
     Attributes attributes = state.startAttributes().toBuilder().putAll(endAttributes).build();
 
-    if (stableDuration != null) {
-      stableDuration.record((endNanos - state.startTimeNanos()) / NANOS_PER_S, attributes, context);
-    }
-
-    if (oldDuration != null) {
-      oldDuration.record((endNanos - state.startTimeNanos()) / NANOS_PER_MS, attributes, context);
-    }
+    duration.record((endNanos - state.startTimeNanos()) / NANOS_PER_S, attributes, context);
   }
 
   @AutoValue

+ 0 - 6
instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpClientPeerServiceAttributesExtractor.java

@@ -10,7 +10,6 @@ import io.opentelemetry.context.Context;
 import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor;
 import io.opentelemetry.instrumentation.api.instrumenter.net.PeerServiceResolver;
 import io.opentelemetry.instrumentation.api.instrumenter.net.internal.UrlParser;
-import io.opentelemetry.instrumentation.api.internal.SemconvStability;
 import io.opentelemetry.semconv.SemanticAttributes;
 import java.util.function.Supplier;
 import javax.annotation.Nullable;
@@ -66,11 +65,6 @@ public final class HttpClientPeerServiceAttributesExtractor<REQUEST, RESPONSE>
     Integer serverPort = attributesGetter.getServerPort(request);
     Supplier<String> pathSupplier = () -> getUrlPath(attributesGetter, request);
     String peerService = mapToPeerService(serverAddress, serverPort, pathSupplier);
-    if (peerService == null && SemconvStability.emitOldHttpSemconv()) {
-      String serverSocketDomain = attributesGetter.getServerSocketDomain(request, response);
-      Integer serverSocketPort = attributesGetter.getServerSocketPort(request, response);
-      peerService = mapToPeerService(serverSocketDomain, serverSocketPort, null);
-    }
     if (peerService != null) {
       attributes.put(SemanticAttributes.PEER_SERVICE, peerService);
     }

+ 35 - 98
instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpCommonAttributesExtractor.java

@@ -6,10 +6,8 @@
 package io.opentelemetry.instrumentation.api.instrumenter.http;
 
 import static io.opentelemetry.instrumentation.api.instrumenter.http.CapturedHttpHeadersUtil.lowercase;
-import static io.opentelemetry.instrumentation.api.instrumenter.http.CapturedHttpHeadersUtil.oldSemconvRequestAttributeKey;
-import static io.opentelemetry.instrumentation.api.instrumenter.http.CapturedHttpHeadersUtil.oldSemconvResponseAttributeKey;
-import static io.opentelemetry.instrumentation.api.instrumenter.http.CapturedHttpHeadersUtil.stableSemconvRequestAttributeKey;
-import static io.opentelemetry.instrumentation.api.instrumenter.http.CapturedHttpHeadersUtil.stableSemconvResponseAttributeKey;
+import static io.opentelemetry.instrumentation.api.instrumenter.http.CapturedHttpHeadersUtil.requestAttributeKey;
+import static io.opentelemetry.instrumentation.api.instrumenter.http.CapturedHttpHeadersUtil.responseAttributeKey;
 import static io.opentelemetry.instrumentation.api.internal.AttributesExtractorUtil.internalSet;
 import static io.opentelemetry.instrumentation.api.internal.HttpConstants._OTHER;
 
@@ -18,7 +16,6 @@ import io.opentelemetry.context.Context;
 import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor;
 import io.opentelemetry.instrumentation.api.instrumenter.http.internal.HttpAttributes;
 import io.opentelemetry.instrumentation.api.instrumenter.network.NetworkAttributesGetter;
-import io.opentelemetry.instrumentation.api.internal.SemconvStability;
 import io.opentelemetry.semconv.SemanticAttributes;
 import java.util.HashSet;
 import java.util.List;
@@ -32,11 +29,14 @@ import javax.annotation.Nullable;
  * attributes</a> that are common to client and server instrumentations.
  */
 abstract class HttpCommonAttributesExtractor<
-        REQUEST, RESPONSE, GETTER extends HttpCommonAttributesGetter<REQUEST, RESPONSE>>
+        REQUEST,
+        RESPONSE,
+        GETTER extends
+            HttpCommonAttributesGetter<REQUEST, RESPONSE>
+                & NetworkAttributesGetter<REQUEST, RESPONSE>>
     implements AttributesExtractor<REQUEST, RESPONSE> {
 
   final GETTER getter;
-  final NetworkAttributesGetter<REQUEST, RESPONSE> networkGetter;
   private final HttpStatusCodeConverter statusCodeConverter;
   private final List<String> capturedRequestHeaders;
   private final List<String> capturedResponseHeaders;
@@ -44,13 +44,11 @@ abstract class HttpCommonAttributesExtractor<
 
   HttpCommonAttributesExtractor(
       GETTER getter,
-      NetworkAttributesGetter<REQUEST, RESPONSE> networkGetter,
       HttpStatusCodeConverter statusCodeConverter,
       List<String> capturedRequestHeaders,
       List<String> capturedResponseHeaders,
       Set<String> knownMethods) {
     this.getter = getter;
-    this.networkGetter = networkGetter;
     this.statusCodeConverter = statusCodeConverter;
     this.capturedRequestHeaders = lowercase(capturedRequestHeaders);
     this.capturedResponseHeaders = lowercase(capturedResponseHeaders);
@@ -58,36 +56,24 @@ abstract class HttpCommonAttributesExtractor<
   }
 
   @Override
-  @SuppressWarnings("deprecation") // until old http semconv are dropped in 2.0
   public void onStart(AttributesBuilder attributes, Context parentContext, REQUEST request) {
     String method = getter.getHttpRequestMethod(request);
-    if (SemconvStability.emitStableHttpSemconv()) {
-      if (method == null || knownMethods.contains(method)) {
-        internalSet(attributes, SemanticAttributes.HTTP_REQUEST_METHOD, method);
-      } else {
-        internalSet(attributes, SemanticAttributes.HTTP_REQUEST_METHOD, _OTHER);
-        internalSet(attributes, SemanticAttributes.HTTP_REQUEST_METHOD_ORIGINAL, method);
-      }
-    }
-    if (SemconvStability.emitOldHttpSemconv()) {
-      internalSet(attributes, SemanticAttributes.HTTP_METHOD, method);
+    if (method == null || knownMethods.contains(method)) {
+      internalSet(attributes, SemanticAttributes.HTTP_REQUEST_METHOD, method);
+    } else {
+      internalSet(attributes, SemanticAttributes.HTTP_REQUEST_METHOD, _OTHER);
+      internalSet(attributes, SemanticAttributes.HTTP_REQUEST_METHOD_ORIGINAL, method);
     }
 
     for (String name : capturedRequestHeaders) {
       List<String> values = getter.getHttpRequestHeader(request, name);
       if (!values.isEmpty()) {
-        if (SemconvStability.emitOldHttpSemconv()) {
-          internalSet(attributes, oldSemconvRequestAttributeKey(name), values);
-        }
-        if (SemconvStability.emitStableHttpSemconv()) {
-          internalSet(attributes, stableSemconvRequestAttributeKey(name), values);
-        }
+        internalSet(attributes, requestAttributeKey(name), values);
       }
     }
   }
 
   @Override
-  @SuppressWarnings("deprecation") // until old http semconv are dropped in 2.0
   public void onEnd(
       AttributesBuilder attributes,
       Context context,
@@ -95,103 +81,54 @@ abstract class HttpCommonAttributesExtractor<
       @Nullable RESPONSE response,
       @Nullable Throwable error) {
 
-    Long requestBodySize = requestBodySize(request);
-    if (SemconvStability.emitOldHttpSemconv()) {
-      internalSet(attributes, SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH, requestBodySize);
-    }
-
     Integer statusCode = null;
     if (response != null) {
       statusCode = getter.getHttpResponseStatusCode(request, response, error);
       if (statusCode != null && statusCode > 0) {
-        if (SemconvStability.emitStableHttpSemconv()) {
-          internalSet(attributes, SemanticAttributes.HTTP_RESPONSE_STATUS_CODE, (long) statusCode);
-        }
-        if (SemconvStability.emitOldHttpSemconv()) {
-          internalSet(attributes, SemanticAttributes.HTTP_STATUS_CODE, (long) statusCode);
-        }
-      }
-
-      Long responseBodySize = responseBodySize(request, response);
-      if (SemconvStability.emitOldHttpSemconv()) {
-        internalSet(attributes, SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH, responseBodySize);
+        internalSet(attributes, SemanticAttributes.HTTP_RESPONSE_STATUS_CODE, (long) statusCode);
       }
 
       for (String name : capturedResponseHeaders) {
         List<String> values = getter.getHttpResponseHeader(request, response, name);
         if (!values.isEmpty()) {
-          if (SemconvStability.emitOldHttpSemconv()) {
-            internalSet(attributes, oldSemconvResponseAttributeKey(name), values);
-          }
-          if (SemconvStability.emitStableHttpSemconv()) {
-            internalSet(attributes, stableSemconvResponseAttributeKey(name), values);
-          }
+          internalSet(attributes, responseAttributeKey(name), values);
         }
       }
     }
 
-    if (SemconvStability.emitStableHttpSemconv()) {
-      String errorType = null;
-      if (statusCode != null && statusCode > 0) {
-        if (statusCodeConverter.isError(statusCode)) {
-          errorType = statusCode.toString();
-        }
-      } else {
-        errorType = getter.getErrorType(request, response, error);
-        // fall back to exception class name & _OTHER
-        if (errorType == null && error != null) {
-          errorType = error.getClass().getName();
-        }
-        if (errorType == null) {
-          errorType = _OTHER;
-        }
+    String errorType = null;
+    if (statusCode != null && statusCode > 0) {
+      if (statusCodeConverter.isError(statusCode)) {
+        errorType = statusCode.toString();
+      }
+    } else {
+      errorType = getter.getErrorType(request, response, error);
+      // fall back to exception class name & _OTHER
+      if (errorType == null && error != null) {
+        errorType = error.getClass().getName();
+      }
+      if (errorType == null) {
+        errorType = _OTHER;
       }
-      internalSet(attributes, HttpAttributes.ERROR_TYPE, errorType);
     }
+    internalSet(attributes, HttpAttributes.ERROR_TYPE, errorType);
 
-    if (SemconvStability.emitStableHttpSemconv()) {
-      String protocolName = lowercaseStr(networkGetter.getNetworkProtocolName(request, response));
-      String protocolVersion =
-          lowercaseStr(networkGetter.getNetworkProtocolVersion(request, response));
+    String protocolName = lowercaseStr(getter.getNetworkProtocolName(request, response));
+    String protocolVersion = lowercaseStr(getter.getNetworkProtocolVersion(request, response));
 
-      if (protocolVersion != null) {
-        if (!"http".equals(protocolName)) {
-          internalSet(attributes, SemanticAttributes.NETWORK_PROTOCOL_NAME, protocolName);
-        }
-        internalSet(attributes, SemanticAttributes.NETWORK_PROTOCOL_VERSION, protocolVersion);
+    if (protocolVersion != null) {
+      if (!"http".equals(protocolName)) {
+        internalSet(attributes, SemanticAttributes.NETWORK_PROTOCOL_NAME, protocolName);
       }
+      internalSet(attributes, SemanticAttributes.NETWORK_PROTOCOL_VERSION, protocolVersion);
     }
   }
 
-  @Nullable
-  private Long requestBodySize(REQUEST request) {
-    return parseNumber(firstHeaderValue(getter.getHttpRequestHeader(request, "content-length")));
-  }
-
-  @Nullable
-  private Long responseBodySize(REQUEST request, RESPONSE response) {
-    return parseNumber(
-        firstHeaderValue(getter.getHttpResponseHeader(request, response, "content-length")));
-  }
-
   @Nullable
   static String firstHeaderValue(List<String> values) {
     return values.isEmpty() ? null : values.get(0);
   }
 
-  @Nullable
-  private static Long parseNumber(@Nullable String number) {
-    if (number == null) {
-      return null;
-    }
-    try {
-      return Long.parseLong(number);
-    } catch (NumberFormatException e) {
-      // not a number
-      return null;
-    }
-  }
-
   @Nullable
   private static String lowercaseStr(@Nullable String str) {
     return str == null ? null : str.toLowerCase(Locale.ROOT);

+ 5 - 8
instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpExperimentalAttributesExtractor.java

@@ -11,7 +11,6 @@ import static io.opentelemetry.instrumentation.api.internal.AttributesExtractorU
 import io.opentelemetry.api.common.AttributesBuilder;
 import io.opentelemetry.context.Context;
 import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor;
-import io.opentelemetry.instrumentation.api.internal.SemconvStability;
 import io.opentelemetry.semconv.SemanticAttributes;
 import javax.annotation.Nullable;
 
@@ -46,14 +45,12 @@ public final class HttpExperimentalAttributesExtractor<REQUEST, RESPONSE>
       @Nullable RESPONSE response,
       @Nullable Throwable error) {
 
-    if (SemconvStability.emitStableHttpSemconv()) {
-      Long requestBodySize = requestBodySize(request);
-      internalSet(attributes, SemanticAttributes.HTTP_REQUEST_BODY_SIZE, requestBodySize);
+    Long requestBodySize = requestBodySize(request);
+    internalSet(attributes, SemanticAttributes.HTTP_REQUEST_BODY_SIZE, requestBodySize);
 
-      if (response != null) {
-        Long responseBodySize = responseBodySize(request, response);
-        internalSet(attributes, SemanticAttributes.HTTP_RESPONSE_BODY_SIZE, responseBodySize);
-      }
+    if (response != null) {
+      Long responseBodySize = responseBodySize(request, response);
+      internalSet(attributes, SemanticAttributes.HTTP_RESPONSE_BODY_SIZE, responseBodySize);
     }
   }
 

+ 2 - 15
instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpMessageBodySizeUtil.java

@@ -7,32 +7,19 @@ package io.opentelemetry.instrumentation.api.instrumenter.http;
 
 import io.opentelemetry.api.common.AttributeKey;
 import io.opentelemetry.api.common.Attributes;
-import io.opentelemetry.instrumentation.api.internal.SemconvStability;
 import io.opentelemetry.semconv.SemanticAttributes;
 import javax.annotation.Nullable;
 
 final class HttpMessageBodySizeUtil {
 
-  @SuppressWarnings("deprecation") // until old http semconv are dropped in 2.0
-  private static final AttributeKey<Long> HTTP_REQUEST_BODY_SIZE =
-      SemconvStability.emitOldHttpSemconv()
-          ? SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH
-          : SemanticAttributes.HTTP_REQUEST_BODY_SIZE;
-
-  @SuppressWarnings("deprecation") // until old http semconv are dropped in 2.0
-  private static final AttributeKey<Long> HTTP_RESPONSE_BODY_SIZE =
-      SemconvStability.emitOldHttpSemconv()
-          ? SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH
-          : SemanticAttributes.HTTP_RESPONSE_BODY_SIZE;
-
   @Nullable
   static Long getHttpRequestBodySize(Attributes... attributesList) {
-    return getAttribute(HTTP_REQUEST_BODY_SIZE, attributesList);
+    return getAttribute(SemanticAttributes.HTTP_REQUEST_BODY_SIZE, attributesList);
   }
 
   @Nullable
   static Long getHttpResponseBodySize(Attributes... attributesList) {
-    return getAttribute(HTTP_RESPONSE_BODY_SIZE, attributesList);
+    return getAttribute(SemanticAttributes.HTTP_RESPONSE_BODY_SIZE, attributesList);
   }
 
   @Nullable

+ 11 - 67
instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpMetricsAdvice.java

@@ -6,6 +6,7 @@
 package io.opentelemetry.instrumentation.api.instrumenter.http;
 
 import static java.util.Arrays.asList;
+import static java.util.Collections.unmodifiableList;
 
 import io.opentelemetry.api.metrics.DoubleHistogramBuilder;
 import io.opentelemetry.api.metrics.LongHistogramBuilder;
@@ -15,10 +16,15 @@ import io.opentelemetry.extension.incubator.metrics.ExtendedLongHistogramBuilder
 import io.opentelemetry.extension.incubator.metrics.ExtendedLongUpDownCounterBuilder;
 import io.opentelemetry.instrumentation.api.instrumenter.http.internal.HttpAttributes;
 import io.opentelemetry.semconv.SemanticAttributes;
+import java.util.List;
 
 final class HttpMetricsAdvice {
 
-  static void applyStableClientDurationAdvice(DoubleHistogramBuilder builder) {
+  static final List<Double> DURATION_SECONDS_BUCKETS =
+      unmodifiableList(
+          asList(0.005, 0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1.0, 2.5, 5.0, 7.5, 10.0));
+
+  static void applyClientDurationAdvice(DoubleHistogramBuilder builder) {
     if (!(builder instanceof ExtendedDoubleHistogramBuilder)) {
       return;
     }
@@ -34,24 +40,6 @@ final class HttpMetricsAdvice {
                 SemanticAttributes.SERVER_PORT));
   }
 
-  @SuppressWarnings("deprecation") // until old http semconv are dropped in 2.0
-  static void applyOldClientDurationAdvice(DoubleHistogramBuilder builder) {
-    if (!(builder instanceof ExtendedDoubleHistogramBuilder)) {
-      return;
-    }
-    ((ExtendedDoubleHistogramBuilder) builder)
-        .setAttributesAdvice(
-            asList(
-                SemanticAttributes.HTTP_METHOD,
-                SemanticAttributes.HTTP_STATUS_CODE,
-                SemanticAttributes.NET_PEER_NAME,
-                SemanticAttributes.NET_PEER_PORT,
-                SemanticAttributes.NET_PROTOCOL_NAME,
-                SemanticAttributes.NET_PROTOCOL_VERSION,
-                SemanticAttributes.NET_SOCK_PEER_ADDR));
-  }
-
-  @SuppressWarnings("deprecation") // until old http semconv are dropped in 2.0
   static void applyClientRequestSizeAdvice(LongHistogramBuilder builder) {
     if (!(builder instanceof ExtendedLongHistogramBuilder)) {
       return;
@@ -59,25 +47,16 @@ final class HttpMetricsAdvice {
     ((ExtendedLongHistogramBuilder) builder)
         .setAttributesAdvice(
             asList(
-                // stable attributes
                 SemanticAttributes.HTTP_REQUEST_METHOD,
                 SemanticAttributes.HTTP_RESPONSE_STATUS_CODE,
                 HttpAttributes.ERROR_TYPE,
                 SemanticAttributes.NETWORK_PROTOCOL_NAME,
                 SemanticAttributes.NETWORK_PROTOCOL_VERSION,
                 SemanticAttributes.SERVER_ADDRESS,
-                SemanticAttributes.SERVER_PORT,
-                // old attributes
-                SemanticAttributes.HTTP_METHOD,
-                SemanticAttributes.HTTP_STATUS_CODE,
-                SemanticAttributes.NET_PEER_NAME,
-                SemanticAttributes.NET_PEER_PORT,
-                SemanticAttributes.NET_PROTOCOL_NAME,
-                SemanticAttributes.NET_PROTOCOL_VERSION,
-                SemanticAttributes.NET_SOCK_PEER_ADDR));
+                SemanticAttributes.SERVER_PORT));
   }
 
-  static void applyStableServerDurationAdvice(DoubleHistogramBuilder builder) {
+  static void applyServerDurationAdvice(DoubleHistogramBuilder builder) {
     if (!(builder instanceof ExtendedDoubleHistogramBuilder)) {
       return;
     }
@@ -93,25 +72,6 @@ final class HttpMetricsAdvice {
                 SemanticAttributes.URL_SCHEME));
   }
 
-  @SuppressWarnings("deprecation") // until old http semconv are dropped in 2.0
-  static void applyOldServerDurationAdvice(DoubleHistogramBuilder builder) {
-    if (!(builder instanceof ExtendedDoubleHistogramBuilder)) {
-      return;
-    }
-    ((ExtendedDoubleHistogramBuilder) builder)
-        .setAttributesAdvice(
-            asList(
-                SemanticAttributes.HTTP_SCHEME,
-                SemanticAttributes.HTTP_ROUTE,
-                SemanticAttributes.HTTP_METHOD,
-                SemanticAttributes.HTTP_STATUS_CODE,
-                SemanticAttributes.NET_HOST_NAME,
-                SemanticAttributes.NET_HOST_PORT,
-                SemanticAttributes.NET_PROTOCOL_NAME,
-                SemanticAttributes.NET_PROTOCOL_VERSION));
-  }
-
-  @SuppressWarnings("deprecation") // until old http semconv are dropped in 2.0
   static void applyServerRequestSizeAdvice(LongHistogramBuilder builder) {
     if (!(builder instanceof ExtendedLongHistogramBuilder)) {
       return;
@@ -126,19 +86,9 @@ final class HttpMetricsAdvice {
                 HttpAttributes.ERROR_TYPE,
                 SemanticAttributes.NETWORK_PROTOCOL_NAME,
                 SemanticAttributes.NETWORK_PROTOCOL_VERSION,
-                SemanticAttributes.URL_SCHEME,
-                // old attributes
-                SemanticAttributes.HTTP_SCHEME,
-                SemanticAttributes.HTTP_ROUTE,
-                SemanticAttributes.HTTP_METHOD,
-                SemanticAttributes.HTTP_STATUS_CODE,
-                SemanticAttributes.NET_HOST_NAME,
-                SemanticAttributes.NET_HOST_PORT,
-                SemanticAttributes.NET_PROTOCOL_NAME,
-                SemanticAttributes.NET_PROTOCOL_VERSION));
+                SemanticAttributes.URL_SCHEME));
   }
 
-  @SuppressWarnings("deprecation") // until old http semconv are dropped in 2.0
   static void applyServerActiveRequestsAdvice(LongUpDownCounterBuilder builder) {
     if (!(builder instanceof ExtendedLongUpDownCounterBuilder)) {
       return;
@@ -146,14 +96,8 @@ final class HttpMetricsAdvice {
     ((ExtendedLongUpDownCounterBuilder) builder)
         .setAttributesAdvice(
             asList(
-                // https://github.com/open-telemetry/opentelemetry-specification/blob/v1.20.0/specification/metrics/semantic_conventions/http-metrics.md#metric-httpserveractive_requests
-                SemanticAttributes.HTTP_METHOD,
-                SemanticAttributes.HTTP_SCHEME,
-                SemanticAttributes.NET_HOST_NAME,
-                SemanticAttributes.NET_HOST_PORT,
                 // https://github.com/open-telemetry/semantic-conventions/blob/v1.23.0/docs/http/http-metrics.md#metric-httpserveractive_requests
-                SemanticAttributes.HTTP_REQUEST_METHOD,
-                SemanticAttributes.URL_SCHEME));
+                SemanticAttributes.HTTP_REQUEST_METHOD, SemanticAttributes.URL_SCHEME));
   }
 
   private HttpMetricsAdvice() {}

+ 0 - 35
instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpMetricsUtil.java

@@ -1,35 +0,0 @@
-/*
- * Copyright The OpenTelemetry Authors
- * SPDX-License-Identifier: Apache-2.0
- */
-
-package io.opentelemetry.instrumentation.api.instrumenter.http;
-
-import static java.util.Arrays.asList;
-import static java.util.Collections.unmodifiableList;
-
-import io.opentelemetry.api.metrics.DoubleHistogramBuilder;
-import io.opentelemetry.api.metrics.Meter;
-import io.opentelemetry.extension.incubator.metrics.ExtendedDoubleHistogramBuilder;
-import java.util.List;
-
-final class HttpMetricsUtil {
-
-  static final List<Double> DURATION_SECONDS_BUCKETS =
-      unmodifiableList(
-          asList(0.005, 0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1.0, 2.5, 5.0, 7.5, 10.0));
-
-  static DoubleHistogramBuilder createStableDurationHistogramBuilder(
-      Meter meter, String name, String description) {
-    DoubleHistogramBuilder durationBuilder =
-        meter.histogramBuilder(name).setUnit("s").setDescription(description);
-    // don't set custom buckets if milliseconds are still used
-    if (durationBuilder instanceof ExtendedDoubleHistogramBuilder) {
-      ((ExtendedDoubleHistogramBuilder) durationBuilder)
-          .setExplicitBucketBoundariesAdvice(DURATION_SECONDS_BUCKETS);
-    }
-    return durationBuilder;
-  }
-
-  private HttpMetricsUtil() {}
-}

+ 0 - 16
instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpRouteBiGetter.java

@@ -1,16 +0,0 @@
-/*
- * Copyright The OpenTelemetry Authors
- * SPDX-License-Identifier: Apache-2.0
- */
-
-package io.opentelemetry.instrumentation.api.instrumenter.http;
-
-/**
- * An interface for getting the {@code http.route} attribute.
- *
- * @deprecated This class is deprecated and will be removed in the 2.0 release. Use {@link
- *     HttpServerRouteBiGetter} instead.
- */
-@Deprecated
-@FunctionalInterface
-public interface HttpRouteBiGetter<T, U> extends HttpServerRouteBiGetter<T, U> {}

+ 0 - 16
instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpRouteGetter.java

@@ -1,16 +0,0 @@
-/*
- * Copyright The OpenTelemetry Authors
- * SPDX-License-Identifier: Apache-2.0
- */
-
-package io.opentelemetry.instrumentation.api.instrumenter.http;
-
-/**
- * An interface for getting the {@code http.route} attribute.
- *
- * @deprecated This class is deprecated and will be removed in the 2.0 release. Use {@link
- *     HttpServerRouteGetter} instead.
- */
-@Deprecated
-@FunctionalInterface
-public interface HttpRouteGetter<T> extends HttpServerRouteGetter<T> {}

+ 0 - 96
instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpRouteHolder.java

@@ -1,96 +0,0 @@
-/*
- * Copyright The OpenTelemetry Authors
- * SPDX-License-Identifier: Apache-2.0
- */
-
-package io.opentelemetry.instrumentation.api.instrumenter.http;
-
-import io.opentelemetry.context.Context;
-import io.opentelemetry.instrumentation.api.instrumenter.ContextCustomizer;
-import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter;
-import javax.annotation.Nullable;
-
-/**
- * A helper class that keeps track of the {@code http.route} attribute value during HTTP server
- * request processing.
- *
- * <p>Usually the route is not accessible when the request processing starts; and needs to be set
- * later, after the instrumented operation starts. This class provides several static methods that
- * allow the instrumentation author to provide the matching HTTP route to the instrumentation when
- * it is discovered.
- *
- * @deprecated This class is deprecated and will be removed in the 2.0 release. Use {@link
- *     HttpServerRoute} instead.
- */
-@Deprecated
-public final class HttpRouteHolder {
-
-  /**
-   * Returns a {@link ContextCustomizer} that initializes a {@link HttpRouteHolder} in the {@link
-   * Context} returned from {@link Instrumenter#start(Context, Object)}.
-   */
-  public static <REQUEST> ContextCustomizer<REQUEST> create(
-      HttpServerAttributesGetter<REQUEST, ?> getter) {
-    return HttpServerRoute.create(getter);
-  }
-
-  private HttpRouteHolder() {}
-
-  /**
-   * Updates the {@code http.route} attribute in the received {@code context}.
-   *
-   * <p>If there is a server span in the context, and the context has been customized with a {@link
-   * HttpRouteHolder}, then this method will update the route using the provided {@code httpRoute}
-   * if and only if the last {@link HttpRouteSource} to update the route using this method has
-   * strictly lower priority than the provided {@link HttpRouteSource}, and the passed value is
-   * non-null.
-   *
-   * <p>If there is a server span in the context, and the context has NOT been customized with a
-   * {@link HttpRouteHolder}, then this method will update the route using the provided value if it
-   * is non-null.
-   */
-  public static void updateHttpRoute(
-      Context context, HttpRouteSource source, @Nullable String httpRoute) {
-    HttpServerRoute.update(context, source.toHttpServerRouteSource(), httpRoute);
-  }
-
-  /**
-   * Updates the {@code http.route} attribute in the received {@code context}.
-   *
-   * <p>If there is a server span in the context, and the context has been customized with a {@link
-   * HttpRouteHolder}, then this method will update the route using the provided {@link
-   * HttpRouteGetter} if and only if the last {@link HttpRouteSource} to update the route using this
-   * method has strictly lower priority than the provided {@link HttpRouteSource}, and the value
-   * returned from the {@link HttpRouteGetter} is non-null.
-   *
-   * <p>If there is a server span in the context, and the context has NOT been customized with a
-   * {@link HttpRouteHolder}, then this method will update the route using the provided {@link
-   * HttpRouteGetter} if the value returned from it is non-null.
-   */
-  public static <T> void updateHttpRoute(
-      Context context, HttpRouteSource source, HttpRouteGetter<T> httpRouteGetter, T arg1) {
-    HttpServerRoute.update(context, source.toHttpServerRouteSource(), httpRouteGetter, arg1);
-  }
-
-  /**
-   * Updates the {@code http.route} attribute in the received {@code context}.
-   *
-   * <p>If there is a server span in the context, and the context has been customized with a {@link
-   * HttpRouteHolder}, then this method will update the route using the provided {@link
-   * HttpRouteBiGetter} if and only if the last {@link HttpRouteSource} to update the route using
-   * this method has strictly lower priority than the provided {@link HttpRouteSource}, and the
-   * value returned from the {@link HttpRouteBiGetter} is non-null.
-   *
-   * <p>If there is a server span in the context, and the context has NOT been customized with a
-   * {@code ServerSpanName}, then this method will update the route using the provided {@link
-   * HttpRouteBiGetter} if the value returned from it is non-null.
-   */
-  public static <T, U> void updateHttpRoute(
-      Context context,
-      HttpRouteSource source,
-      HttpRouteBiGetter<T, U> httpRouteGetter,
-      T arg1,
-      U arg2) {
-    HttpServerRoute.update(context, source.toHttpServerRouteSource(), httpRouteGetter, arg1, arg2);
-  }
-}

+ 0 - 50
instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpRouteSource.java

@@ -1,50 +0,0 @@
-/*
- * Copyright The OpenTelemetry Authors
- * SPDX-License-Identifier: Apache-2.0
- */
-
-package io.opentelemetry.instrumentation.api.instrumenter.http;
-
-/**
- * Represents the source that provided the {@code http.route} attribute.
- *
- * @deprecated This class is deprecated and will be removed in the 2.0 release. Use {@link
- *     HttpServerRouteSource} instead.
- */
-@Deprecated
-public enum HttpRouteSource {
-  // for servlet filters we try to find the best name which isn't necessarily from the first
-  // filter that is called
-  FILTER(1, /* useFirst= */ false),
-  SERVLET(2),
-  CONTROLLER(3),
-  // Some frameworks, e.g. JaxRS, allow for nested controller/paths and we want to select the
-  // longest one
-  NESTED_CONTROLLER(4, false);
-
-  final int order;
-  final boolean useFirst;
-
-  HttpRouteSource(int order) {
-    this(order, /* useFirst= */ true);
-  }
-
-  HttpRouteSource(int order, boolean useFirst) {
-    this.order = order;
-    this.useFirst = useFirst;
-  }
-
-  HttpServerRouteSource toHttpServerRouteSource() {
-    switch (this) {
-      case FILTER:
-        return HttpServerRouteSource.SERVER_FILTER;
-      case SERVLET:
-        return HttpServerRouteSource.SERVER;
-      case CONTROLLER:
-        return HttpServerRouteSource.CONTROLLER;
-      case NESTED_CONTROLLER:
-        return HttpServerRouteSource.NESTED_CONTROLLER;
-    }
-    throw new IllegalStateException("Unsupported value " + this);
-  }
-}

+ 1 - 39
instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpServerAttributesExtractor.java

@@ -11,7 +11,6 @@ import io.opentelemetry.api.common.AttributesBuilder;
 import io.opentelemetry.context.Context;
 import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor;
 import io.opentelemetry.instrumentation.api.instrumenter.InstrumenterBuilder;
-import io.opentelemetry.instrumentation.api.instrumenter.net.internal.InternalNetServerAttributesExtractor;
 import io.opentelemetry.instrumentation.api.instrumenter.network.internal.InternalClientAttributesExtractor;
 import io.opentelemetry.instrumentation.api.instrumenter.network.internal.InternalNetworkAttributesExtractor;
 import io.opentelemetry.instrumentation.api.instrumenter.network.internal.InternalServerAttributesExtractor;
@@ -42,50 +41,16 @@ public final class HttpServerAttributesExtractor<REQUEST, RESPONSE>
     return builder(httpAttributesGetter).build();
   }
 
-  /**
-   * Creates the HTTP server attributes extractor with default configuration.
-   *
-   * @deprecated Make sure that your {@linkplain HttpServerAttributesGetter getter} implements all
-   *     the network-related methods and use {@link #create(HttpServerAttributesGetter)} instead.
-   *     This method will be removed in the 2.0 release.
-   */
-  @Deprecated
-  public static <REQUEST, RESPONSE> AttributesExtractor<REQUEST, RESPONSE> create(
-      HttpServerAttributesGetter<REQUEST, RESPONSE> httpAttributesGetter,
-      io.opentelemetry.instrumentation.api.instrumenter.net.NetServerAttributesGetter<
-              REQUEST, RESPONSE>
-          netAttributesGetter) {
-    return builder(httpAttributesGetter, netAttributesGetter).build();
-  }
-
   /**
    * Returns a new {@link HttpServerAttributesExtractorBuilder} that can be used to configure the
    * HTTP client attributes extractor.
    */
   public static <REQUEST, RESPONSE> HttpServerAttributesExtractorBuilder<REQUEST, RESPONSE> builder(
       HttpServerAttributesGetter<REQUEST, RESPONSE> httpAttributesGetter) {
-    return new HttpServerAttributesExtractorBuilder<>(httpAttributesGetter, httpAttributesGetter);
-  }
-
-  /**
-   * Returns a new {@link HttpServerAttributesExtractorBuilder} that can be used to configure the
-   * HTTP client attributes extractor.
-   *
-   * @deprecated Make sure that your {@linkplain HttpServerAttributesGetter getter} implements all
-   *     the network-related methods and use {@link #builder(HttpServerAttributesGetter)} instead.
-   *     This method will be removed in the 2.0 release.
-   */
-  @Deprecated
-  public static <REQUEST, RESPONSE> HttpServerAttributesExtractorBuilder<REQUEST, RESPONSE> builder(
-      HttpServerAttributesGetter<REQUEST, RESPONSE> httpAttributesGetter,
-      io.opentelemetry.instrumentation.api.instrumenter.net.NetServerAttributesGetter<
-              REQUEST, RESPONSE>
-          netAttributesGetter) {
-    return new HttpServerAttributesExtractorBuilder<>(httpAttributesGetter, netAttributesGetter);
+    return new HttpServerAttributesExtractorBuilder<>(httpAttributesGetter);
   }
 
   private final InternalUrlAttributesExtractor<REQUEST> internalUrlExtractor;
-  private final InternalNetServerAttributesExtractor<REQUEST, RESPONSE> internalNetExtractor;
   private final InternalNetworkAttributesExtractor<REQUEST, RESPONSE> internalNetworkExtractor;
   private final InternalServerAttributesExtractor<REQUEST> internalServerExtractor;
   private final InternalClientAttributesExtractor<REQUEST> internalClientExtractor;
@@ -94,13 +59,11 @@ public final class HttpServerAttributesExtractor<REQUEST, RESPONSE>
   HttpServerAttributesExtractor(HttpServerAttributesExtractorBuilder<REQUEST, RESPONSE> builder) {
     super(
         builder.httpAttributesGetter,
-        builder.netAttributesGetter,
         HttpStatusCodeConverter.SERVER,
         builder.capturedRequestHeaders,
         builder.capturedResponseHeaders,
         builder.knownMethods);
     internalUrlExtractor = builder.buildUrlExtractor();
-    internalNetExtractor = builder.buildNetExtractor();
     internalNetworkExtractor = builder.buildNetworkExtractor();
     internalServerExtractor = builder.buildServerExtractor();
     internalClientExtractor = builder.buildClientExtractor();
@@ -112,7 +75,6 @@ public final class HttpServerAttributesExtractor<REQUEST, RESPONSE>
     super.onStart(attributes, parentContext, request);
 
     internalUrlExtractor.onStart(attributes, request);
-    internalNetExtractor.onStart(attributes, request);
     internalServerExtractor.onStart(attributes, request);
     internalClientExtractor.onStart(attributes, request);
 

+ 7 - 37
instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpServerAttributesExtractorBuilder.java

@@ -11,7 +11,6 @@ import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import io.opentelemetry.context.Context;
 import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor;
 import io.opentelemetry.instrumentation.api.instrumenter.InstrumenterBuilder;
-import io.opentelemetry.instrumentation.api.instrumenter.net.internal.InternalNetServerAttributesExtractor;
 import io.opentelemetry.instrumentation.api.instrumenter.network.internal.AddressAndPortExtractor;
 import io.opentelemetry.instrumentation.api.instrumenter.network.internal.ClientAddressAndPortExtractor;
 import io.opentelemetry.instrumentation.api.instrumenter.network.internal.InternalClientAttributesExtractor;
@@ -19,7 +18,6 @@ import io.opentelemetry.instrumentation.api.instrumenter.network.internal.Intern
 import io.opentelemetry.instrumentation.api.instrumenter.network.internal.InternalServerAttributesExtractor;
 import io.opentelemetry.instrumentation.api.instrumenter.url.internal.InternalUrlAttributesExtractor;
 import io.opentelemetry.instrumentation.api.internal.HttpConstants;
-import io.opentelemetry.instrumentation.api.internal.SemconvStability;
 import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.List;
@@ -31,11 +29,6 @@ public final class HttpServerAttributesExtractorBuilder<REQUEST, RESPONSE> {
 
   final HttpServerAttributesGetter<REQUEST, RESPONSE> httpAttributesGetter;
 
-  @SuppressWarnings("deprecation") // using the net extractor for the old->stable semconv story
-  final io.opentelemetry.instrumentation.api.instrumenter.net.NetServerAttributesGetter<
-          REQUEST, RESPONSE>
-      netAttributesGetter;
-
   final AddressAndPortExtractor<REQUEST> clientAddressPortExtractor;
   final AddressAndPortExtractor<REQUEST> serverAddressPortExtractor;
   List<String> capturedRequestHeaders = emptyList();
@@ -44,17 +37,12 @@ public final class HttpServerAttributesExtractorBuilder<REQUEST, RESPONSE> {
   Function<Context, String> httpRouteGetter = HttpServerRoute::get;
 
   HttpServerAttributesExtractorBuilder(
-      HttpServerAttributesGetter<REQUEST, RESPONSE> httpAttributesGetter,
-      @SuppressWarnings("deprecation") // using the net extractor for the old->stable semconv story
-          io.opentelemetry.instrumentation.api.instrumenter.net.NetServerAttributesGetter<
-                  REQUEST, RESPONSE>
-              netAttributesGetter) {
+      HttpServerAttributesGetter<REQUEST, RESPONSE> httpAttributesGetter) {
     this.httpAttributesGetter = httpAttributesGetter;
-    this.netAttributesGetter = netAttributesGetter;
 
     clientAddressPortExtractor =
         new ClientAddressAndPortExtractor<>(
-            netAttributesGetter, new ForwardedForAddressAndPortExtractor<>(httpAttributesGetter));
+            httpAttributesGetter, new ForwardedForAddressAndPortExtractor<>(httpAttributesGetter));
     serverAddressPortExtractor = new ForwardedHostAddressAndPortExtractor<>(httpAttributesGetter);
   }
 
@@ -137,44 +125,26 @@ public final class HttpServerAttributesExtractorBuilder<REQUEST, RESPONSE> {
 
   InternalUrlAttributesExtractor<REQUEST> buildUrlExtractor() {
     return new InternalUrlAttributesExtractor<>(
-        httpAttributesGetter,
-        new ForwardedUrlSchemeProvider<>(httpAttributesGetter),
-        SemconvStability.emitStableHttpSemconv(),
-        SemconvStability.emitOldHttpSemconv());
-  }
-
-  InternalNetServerAttributesExtractor<REQUEST, RESPONSE> buildNetExtractor() {
-    return new InternalNetServerAttributesExtractor<>(
-        netAttributesGetter, serverAddressPortExtractor, SemconvStability.emitOldHttpSemconv());
+        httpAttributesGetter, new ForwardedUrlSchemeProvider<>(httpAttributesGetter));
   }
 
   InternalNetworkAttributesExtractor<REQUEST, RESPONSE> buildNetworkExtractor() {
     return new InternalNetworkAttributesExtractor<>(
-        netAttributesGetter,
-        clientAddressPortExtractor,
+        httpAttributesGetter,
         // network.{transport,type} are opt-in, network.protocol.* have HTTP-specific logic
         /* captureProtocolAttributes= */ false,
         // network.local.* are opt-in
-        /* captureLocalSocketAttributes= */ false,
-        /* captureOldPeerDomainAttribute= */ false,
-        SemconvStability.emitStableHttpSemconv(),
-        SemconvStability.emitOldHttpSemconv());
+        /* captureLocalSocketAttributes= */ false);
   }
 
   InternalServerAttributesExtractor<REQUEST> buildServerExtractor() {
-    return new InternalServerAttributesExtractor<>(
-        serverAddressPortExtractor,
-        SemconvStability.emitStableHttpSemconv(),
-        SemconvStability.emitOldHttpSemconv(),
-        InternalServerAttributesExtractor.Mode.HOST);
+    return new InternalServerAttributesExtractor<>(serverAddressPortExtractor);
   }
 
   InternalClientAttributesExtractor<REQUEST> buildClientExtractor() {
     return new InternalClientAttributesExtractor<>(
         clientAddressPortExtractor,
         // client.port is opt-in
-        /* capturePort= */ false,
-        SemconvStability.emitStableHttpSemconv(),
-        SemconvStability.emitOldHttpSemconv());
+        /* capturePort= */ false);
   }
 }

+ 1 - 37
instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpServerAttributesGetter.java

@@ -7,7 +7,6 @@ package io.opentelemetry.instrumentation.api.instrumenter.http;
 
 import io.opentelemetry.instrumentation.api.instrumenter.network.ClientAttributesGetter;
 import io.opentelemetry.instrumentation.api.instrumenter.network.NetworkAttributesGetter;
-import io.opentelemetry.instrumentation.api.instrumenter.network.ServerAttributesGetter;
 import io.opentelemetry.instrumentation.api.instrumenter.url.UrlAttributesGetter;
 import javax.annotation.Nullable;
 
@@ -18,18 +17,11 @@ import javax.annotation.Nullable;
  * library/framework. It will be used by the {@link HttpServerAttributesExtractor} to obtain the
  * various HTTP server attributes in a type-generic way.
  */
-@SuppressWarnings(
-    "deprecation") // implementing the NetServerAttributesGetter for the old->stable semconv story;
-// will be removed in 2.0
 public interface HttpServerAttributesGetter<REQUEST, RESPONSE>
     extends HttpCommonAttributesGetter<REQUEST, RESPONSE>,
         UrlAttributesGetter<REQUEST>,
-        io.opentelemetry.instrumentation.api.instrumenter.net.NetServerAttributesGetter<
-            REQUEST, RESPONSE>,
         NetworkAttributesGetter<REQUEST, RESPONSE>,
-        // TODO remove ServerAttributesGetter from here
-        ServerAttributesGetter<REQUEST, RESPONSE>,
-        ClientAttributesGetter<REQUEST, RESPONSE> {
+        ClientAttributesGetter<REQUEST> {
 
   /** {@inheritDoc} */
   @Nullable
@@ -56,32 +48,4 @@ public interface HttpServerAttributesGetter<REQUEST, RESPONSE>
   default String getHttpRoute(REQUEST request) {
     return null;
   }
-
-  /**
-   * Returns the name of the local HTTP server that received the request.
-   *
-   * @deprecated This method is deprecated and will be removed without replacement. The {@link
-   *     HttpServerAttributesExtractor} now extracts the server address and port from the received
-   *     HTTP request's headers.
-   */
-  @Deprecated
-  @Nullable
-  @Override
-  default String getServerAddress(REQUEST request) {
-    return null;
-  }
-
-  /**
-   * Returns the port of the local HTTP server that received the request.
-   *
-   * @deprecated This method is deprecated and will be removed without replacement. The {@link
-   *     HttpServerAttributesExtractor} now extracts the server address and port from the received
-   *     HTTP request's headers.
-   */
-  @Deprecated
-  @Nullable
-  @Override
-  default Integer getServerPort(REQUEST request) {
-    return null;
-  }
 }

+ 10 - 33
instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpServerMetrics.java

@@ -5,7 +5,6 @@
 
 package io.opentelemetry.instrumentation.api.instrumenter.http;
 
-import static io.opentelemetry.instrumentation.api.instrumenter.http.HttpMetricsUtil.createStableDurationHistogramBuilder;
 import static java.util.logging.Level.FINE;
 
 import com.google.auto.value.AutoValue;
@@ -18,10 +17,8 @@ import io.opentelemetry.context.ContextKey;
 import io.opentelemetry.instrumentation.api.instrumenter.InstrumenterBuilder;
 import io.opentelemetry.instrumentation.api.instrumenter.OperationListener;
 import io.opentelemetry.instrumentation.api.instrumenter.OperationMetrics;
-import io.opentelemetry.instrumentation.api.internal.SemconvStability;
 import java.util.concurrent.TimeUnit;
 import java.util.logging.Logger;
-import javax.annotation.Nullable;
 
 /**
  * {@link OperationListener} which keeps track of <a
@@ -30,7 +27,6 @@ import javax.annotation.Nullable;
  */
 public final class HttpServerMetrics implements OperationListener {
 
-  private static final double NANOS_PER_MS = TimeUnit.MILLISECONDS.toNanos(1);
   private static final double NANOS_PER_S = TimeUnit.SECONDS.toNanos(1);
 
   private static final ContextKey<State> HTTP_SERVER_METRICS_STATE =
@@ -48,30 +44,17 @@ public final class HttpServerMetrics implements OperationListener {
     return HttpServerMetrics::new;
   }
 
-  @Nullable private final DoubleHistogram stableDuration;
-  @Nullable private final DoubleHistogram oldDuration;
+  private final DoubleHistogram duration;
 
   private HttpServerMetrics(Meter meter) {
-    if (SemconvStability.emitStableHttpSemconv()) {
-      DoubleHistogramBuilder stableDurationBuilder =
-          createStableDurationHistogramBuilder(
-              meter, "http.server.request.duration", "Duration of HTTP server requests.");
-      HttpMetricsAdvice.applyStableServerDurationAdvice(stableDurationBuilder);
-      stableDuration = stableDurationBuilder.build();
-    } else {
-      stableDuration = null;
-    }
-    if (SemconvStability.emitOldHttpSemconv()) {
-      DoubleHistogramBuilder oldDurationBuilder =
-          meter
-              .histogramBuilder("http.server.duration")
-              .setUnit("ms")
-              .setDescription("The duration of the inbound HTTP request");
-      HttpMetricsAdvice.applyOldServerDurationAdvice(oldDurationBuilder);
-      oldDuration = oldDurationBuilder.build();
-    } else {
-      oldDuration = null;
-    }
+    DoubleHistogramBuilder stableDurationBuilder =
+        meter
+            .histogramBuilder("http.server.request.duration")
+            .setUnit("s")
+            .setDescription("Duration of HTTP server requests.")
+            .setExplicitBucketBoundariesAdvice(HttpMetricsAdvice.DURATION_SECONDS_BUCKETS);
+    HttpMetricsAdvice.applyServerDurationAdvice(stableDurationBuilder);
+    duration = stableDurationBuilder.build();
   }
 
   @Override
@@ -94,13 +77,7 @@ public final class HttpServerMetrics implements OperationListener {
 
     Attributes attributes = state.startAttributes().toBuilder().putAll(endAttributes).build();
 
-    if (stableDuration != null) {
-      stableDuration.record((endNanos - state.startTimeNanos()) / NANOS_PER_S, attributes, context);
-    }
-
-    if (oldDuration != null) {
-      oldDuration.record((endNanos - state.startTimeNanos()) / NANOS_PER_MS, attributes, context);
-    }
+    duration.record((endNanos - state.startTimeNanos()) / NANOS_PER_S, attributes, context);
   }
 
   @AutoValue

+ 0 - 82
instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/net/NetClientAttributesExtractor.java

@@ -1,82 +0,0 @@
-/*
- * Copyright The OpenTelemetry Authors
- * SPDX-License-Identifier: Apache-2.0
- */
-
-package io.opentelemetry.instrumentation.api.instrumenter.net;
-
-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.InternalNetClientAttributesExtractor;
-import io.opentelemetry.instrumentation.api.instrumenter.network.internal.AddressAndPortExtractor;
-import io.opentelemetry.instrumentation.api.instrumenter.network.internal.InternalNetworkAttributesExtractor;
-import io.opentelemetry.instrumentation.api.instrumenter.network.internal.InternalServerAttributesExtractor;
-import io.opentelemetry.instrumentation.api.instrumenter.network.internal.ServerAddressAndPortExtractor;
-import io.opentelemetry.instrumentation.api.internal.SemconvStability;
-import javax.annotation.Nullable;
-
-/**
- * Extractor of <a
- * href="https://github.com/open-telemetry/semantic-conventions/blob/main/docs/general/attributes.md#server-client-and-shared-network-attributes">Network
- * attributes</a>.
- *
- * <p>This class delegates to a type-specific {@link NetClientAttributesGetter} for individual
- * attribute extraction from request/response objects.
- *
- * @deprecated Make sure that your instrumentation uses the extractors from the {@code ...network}
- *     package instead. This class will be removed in the 2.0 release.
- */
-@Deprecated
-public final class NetClientAttributesExtractor<REQUEST, RESPONSE>
-    implements AttributesExtractor<REQUEST, RESPONSE> {
-
-  private final InternalNetClientAttributesExtractor<REQUEST, RESPONSE> internalExtractor;
-  private final InternalNetworkAttributesExtractor<REQUEST, RESPONSE> internalNetworkExtractor;
-  private final InternalServerAttributesExtractor<REQUEST> internalServerExtractor;
-
-  public static <REQUEST, RESPONSE> AttributesExtractor<REQUEST, RESPONSE> create(
-      NetClientAttributesGetter<REQUEST, RESPONSE> getter) {
-    return new NetClientAttributesExtractor<>(getter);
-  }
-
-  private NetClientAttributesExtractor(NetClientAttributesGetter<REQUEST, RESPONSE> getter) {
-    ServerAddressAndPortExtractor<REQUEST> serverAddressAndPortExtractor =
-        new ServerAddressAndPortExtractor<>(getter, AddressAndPortExtractor.noop());
-
-    internalExtractor =
-        new InternalNetClientAttributesExtractor<>(
-            getter, AddressAndPortExtractor.noop(), SemconvStability.emitOldHttpSemconv());
-    internalNetworkExtractor =
-        new InternalNetworkAttributesExtractor<>(
-            getter,
-            serverAddressAndPortExtractor,
-            /* captureProtocolAttributes= */ true,
-            /* captureLocalSocketAttributes= */ false,
-            /* captureOldPeerDomainAttribute= */ true,
-            SemconvStability.emitStableHttpSemconv(),
-            SemconvStability.emitOldHttpSemconv());
-    internalServerExtractor =
-        new InternalServerAttributesExtractor<>(
-            serverAddressAndPortExtractor,
-            SemconvStability.emitStableHttpSemconv(),
-            SemconvStability.emitOldHttpSemconv(),
-            InternalServerAttributesExtractor.Mode.PEER);
-  }
-
-  @Override
-  public void onStart(AttributesBuilder attributes, Context parentContext, REQUEST request) {
-    internalServerExtractor.onStart(attributes, request);
-  }
-
-  @Override
-  public void onEnd(
-      AttributesBuilder attributes,
-      Context context,
-      REQUEST request,
-      @Nullable RESPONSE response,
-      @Nullable Throwable error) {
-    internalExtractor.onEnd(attributes, request, response);
-    internalNetworkExtractor.onEnd(attributes, request, response);
-  }
-}

+ 0 - 78
instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/net/NetClientAttributesGetter.java

@@ -1,78 +0,0 @@
-/*
- * Copyright The OpenTelemetry Authors
- * SPDX-License-Identifier: Apache-2.0
- */
-
-package io.opentelemetry.instrumentation.api.instrumenter.net;
-
-import io.opentelemetry.instrumentation.api.instrumenter.net.internal.InetSocketAddressUtil;
-import io.opentelemetry.instrumentation.api.instrumenter.network.NetworkAttributesGetter;
-import io.opentelemetry.instrumentation.api.instrumenter.network.ServerAttributesGetter;
-import java.net.InetSocketAddress;
-import javax.annotation.Nullable;
-
-/**
- * An interface for getting client-based network attributes. It adapts from a type-specific request
- * and response into the 4 common network attribute values.
- *
- * <p>Instrumentation authors will create implementations of this interface for their specific
- * library/framework. It will be used by the NetClientAttributesExtractor to obtain the various
- * network attributes in a type-generic way.
- *
- * @deprecated Make sure that your instrumentation implements the getters from the {@code
- *     ...network} package instead. This class will be removed in the 2.0 release.
- */
-@Deprecated
-public interface NetClientAttributesGetter<REQUEST, RESPONSE>
-    extends NetworkAttributesGetter<REQUEST, RESPONSE>, ServerAttributesGetter<REQUEST, RESPONSE> {
-
-  @Nullable
-  default String getTransport(REQUEST request, @Nullable RESPONSE response) {
-    return null;
-  }
-
-  /**
-   * Returns the protocol <a
-   * href="https://man7.org/linux/man-pages/man7/address_families.7.html">address family</a> which
-   * is used for communication.
-   *
-   * <p>Examples: {@code inet}, {@code inet6}
-   *
-   * <p>By default, this method attempts to retrieve the address family using the {@link
-   * #getServerInetSocketAddress(Object, Object)} method. If it is not implemented, it will simply
-   * return {@code null}. If the instrumented library does not expose {@link InetSocketAddress} in
-   * its API, you might want to implement this method instead of {@link
-   * #getServerSocketAddress(Object, Object)}.
-   */
-  @Nullable
-  default String getSockFamily(REQUEST request, @Nullable RESPONSE response) {
-    return InetSocketAddressUtil.getSockFamily(getServerInetSocketAddress(request, response), null);
-  }
-
-  /** {@inheritDoc} */
-  @Nullable
-  @Override
-  default String getNetworkType(REQUEST request, @Nullable RESPONSE response) {
-    return InetSocketAddressUtil.getNetworkType(
-        getServerInetSocketAddress(request, response), null);
-  }
-
-  @Nullable
-  @Override
-  default InetSocketAddress getServerInetSocketAddress(
-      REQUEST request, @Nullable RESPONSE response) {
-    return getNetworkPeerInetSocketAddress(request, response);
-  }
-
-  @Nullable
-  @Override
-  default String getServerSocketAddress(REQUEST request, @Nullable RESPONSE response) {
-    return getNetworkPeerAddress(request, response);
-  }
-
-  @Nullable
-  @Override
-  default Integer getServerSocketPort(REQUEST request, @Nullable RESPONSE response) {
-    return getNetworkPeerPort(request, response);
-  }
-}

+ 0 - 91
instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/net/NetServerAttributesExtractor.java

@@ -1,91 +0,0 @@
-/*
- * Copyright The OpenTelemetry Authors
- * SPDX-License-Identifier: Apache-2.0
- */
-
-package io.opentelemetry.instrumentation.api.instrumenter.net;
-
-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.InternalNetServerAttributesExtractor;
-import io.opentelemetry.instrumentation.api.instrumenter.network.internal.AddressAndPortExtractor;
-import io.opentelemetry.instrumentation.api.instrumenter.network.internal.ClientAddressAndPortExtractor;
-import io.opentelemetry.instrumentation.api.instrumenter.network.internal.InternalClientAttributesExtractor;
-import io.opentelemetry.instrumentation.api.instrumenter.network.internal.InternalNetworkAttributesExtractor;
-import io.opentelemetry.instrumentation.api.instrumenter.network.internal.InternalServerAttributesExtractor;
-import io.opentelemetry.instrumentation.api.instrumenter.network.internal.ServerAddressAndPortExtractor;
-import io.opentelemetry.instrumentation.api.internal.SemconvStability;
-import javax.annotation.Nullable;
-
-/**
- * Extractor of <a
- * href="https://github.com/open-telemetry/semantic-conventions/blob/main/docs/general/attributes.md#server-client-and-shared-network-attributes">Network
- * attributes</a>.
- *
- * @deprecated Make sure that your instrumentation uses the extractors from the {@code ...network}
- *     package instead. This class will be removed in the 2.0 release.
- */
-@Deprecated
-public final class NetServerAttributesExtractor<REQUEST, RESPONSE>
-    implements AttributesExtractor<REQUEST, RESPONSE> {
-
-  public static <REQUEST, RESPONSE> AttributesExtractor<REQUEST, RESPONSE> create(
-      NetServerAttributesGetter<REQUEST, RESPONSE> getter) {
-    return new NetServerAttributesExtractor<>(getter);
-  }
-
-  private final InternalNetServerAttributesExtractor<REQUEST, RESPONSE> internalExtractor;
-  private final InternalNetworkAttributesExtractor<REQUEST, RESPONSE> internalNetworkExtractor;
-  private final InternalServerAttributesExtractor<REQUEST> internalServerExtractor;
-  private final InternalClientAttributesExtractor<REQUEST> internalClientExtractor;
-
-  private NetServerAttributesExtractor(NetServerAttributesGetter<REQUEST, RESPONSE> getter) {
-    ServerAddressAndPortExtractor<REQUEST> serverAddressAndPortExtractor =
-        new ServerAddressAndPortExtractor<>(getter, AddressAndPortExtractor.noop());
-    ClientAddressAndPortExtractor<REQUEST> clientAddressAndPortExtractor =
-        new ClientAddressAndPortExtractor<>(getter, AddressAndPortExtractor.noop());
-
-    internalExtractor =
-        new InternalNetServerAttributesExtractor<>(
-            getter, AddressAndPortExtractor.noop(), SemconvStability.emitOldHttpSemconv());
-    internalNetworkExtractor =
-        new InternalNetworkAttributesExtractor<>(
-            getter,
-            clientAddressAndPortExtractor,
-            /* captureProtocolAttributes= */ true,
-            /* captureLocalSocketAttributes= */ true,
-            /* captureOldPeerDomainAttribute= */ false,
-            SemconvStability.emitStableHttpSemconv(),
-            SemconvStability.emitOldHttpSemconv());
-    internalServerExtractor =
-        new InternalServerAttributesExtractor<>(
-            serverAddressAndPortExtractor,
-            SemconvStability.emitStableHttpSemconv(),
-            SemconvStability.emitOldHttpSemconv(),
-            InternalServerAttributesExtractor.Mode.HOST);
-    internalClientExtractor =
-        new InternalClientAttributesExtractor<>(
-            clientAddressAndPortExtractor,
-            /* capturePort= */ true,
-            SemconvStability.emitStableHttpSemconv(),
-            SemconvStability.emitOldHttpSemconv());
-  }
-
-  @Override
-  public void onStart(AttributesBuilder attributes, Context parentContext, REQUEST request) {
-    internalExtractor.onStart(attributes, request);
-    internalServerExtractor.onStart(attributes, request);
-    internalClientExtractor.onStart(attributes, request);
-  }
-
-  @Override
-  public void onEnd(
-      AttributesBuilder attributes,
-      Context context,
-      REQUEST request,
-      @Nullable RESPONSE response,
-      @Nullable Throwable error) {
-    internalNetworkExtractor.onEnd(attributes, request, response);
-  }
-}

+ 0 - 103
instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/net/NetServerAttributesGetter.java

@@ -1,103 +0,0 @@
-/*
- * Copyright The OpenTelemetry Authors
- * SPDX-License-Identifier: Apache-2.0
- */
-
-package io.opentelemetry.instrumentation.api.instrumenter.net;
-
-import io.opentelemetry.instrumentation.api.instrumenter.net.internal.InetSocketAddressUtil;
-import io.opentelemetry.instrumentation.api.instrumenter.network.ClientAttributesGetter;
-import io.opentelemetry.instrumentation.api.instrumenter.network.NetworkAttributesGetter;
-import io.opentelemetry.instrumentation.api.instrumenter.network.ServerAttributesGetter;
-import java.net.InetSocketAddress;
-import javax.annotation.Nullable;
-
-/**
- * An interface for getting server-based network attributes. It adapts an instrumentation-specific
- * request type into the 3 common attributes (transport, sockPeerPort, sockPeerAddr).
- *
- * <p>Instrumentation authors will create implementations of this interface for their specific
- * server library/framework. It will be used by the {@link NetServerAttributesExtractor} to obtain
- * the various network attributes in a type-generic way.
- *
- * @deprecated Make sure that your instrumentation implements the getters from the {@code
- *     ...network} package instead. This class will be removed in the 2.0 release.
- */
-@Deprecated
-public interface NetServerAttributesGetter<REQUEST, RESPONSE>
-    extends NetworkAttributesGetter<REQUEST, RESPONSE>,
-        ServerAttributesGetter<REQUEST, RESPONSE>,
-        ClientAttributesGetter<REQUEST, RESPONSE> {
-
-  @Nullable
-  default String getTransport(REQUEST request) {
-    return null;
-  }
-
-  /**
-   * Returns the protocol <a
-   * href="https://man7.org/linux/man-pages/man7/address_families.7.html">address family</a> which
-   * is used for communication.
-   *
-   * <p>Examples: `inet`, `inet6`.
-   *
-   * <p>By default, this method attempts to retrieve the address family using one of the {@link
-   * #getClientInetSocketAddress(Object, Object)} and {@link #getServerInetSocketAddress(Object,
-   * Object)} methods. If neither of these methods is implemented, it will simply return {@code
-   * null}. If the instrumented library does not expose {@link InetSocketAddress} in its API, you
-   * might want to implement this method instead of {@link #getClientInetSocketAddress(Object,
-   * Object)} and {@link #getServerInetSocketAddress(Object, Object)}.
-   */
-  @Nullable
-  default String getSockFamily(REQUEST request) {
-    return InetSocketAddressUtil.getSockFamily(
-        getClientInetSocketAddress(request, null), getServerInetSocketAddress(request, null));
-  }
-
-  /** {@inheritDoc} */
-  @Nullable
-  @Override
-  default String getNetworkType(REQUEST request, @Nullable RESPONSE response) {
-    return InetSocketAddressUtil.getNetworkType(
-        getClientInetSocketAddress(request, response),
-        getServerInetSocketAddress(request, response));
-  }
-
-  @Nullable
-  @Override
-  default InetSocketAddress getServerInetSocketAddress(
-      REQUEST request, @Nullable RESPONSE response) {
-    return getNetworkLocalInetSocketAddress(request, response);
-  }
-
-  @Nullable
-  @Override
-  default String getServerSocketAddress(REQUEST request, @Nullable RESPONSE response) {
-    return getNetworkLocalAddress(request, response);
-  }
-
-  @Nullable
-  @Override
-  default Integer getServerSocketPort(REQUEST request, @Nullable RESPONSE response) {
-    return getNetworkLocalPort(request, response);
-  }
-
-  @Nullable
-  @Override
-  default InetSocketAddress getClientInetSocketAddress(
-      REQUEST request, @Nullable RESPONSE response) {
-    return getNetworkPeerInetSocketAddress(request, response);
-  }
-
-  @Nullable
-  @Override
-  default String getClientSocketAddress(REQUEST request, @Nullable RESPONSE response) {
-    return getNetworkPeerAddress(request, response);
-  }
-
-  @Nullable
-  @Override
-  default Integer getClientSocketPort(REQUEST request, @Nullable RESPONSE response) {
-    return getNetworkPeerPort(request, response);
-  }
-}

+ 3 - 11
instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/net/PeerServiceAttributesExtractor.java

@@ -9,7 +9,6 @@ import io.opentelemetry.api.common.AttributesBuilder;
 import io.opentelemetry.context.Context;
 import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor;
 import io.opentelemetry.instrumentation.api.instrumenter.network.ServerAttributesGetter;
-import io.opentelemetry.instrumentation.api.internal.SemconvStability;
 import io.opentelemetry.semconv.SemanticAttributes;
 import javax.annotation.Nullable;
 
@@ -21,13 +20,12 @@ import javax.annotation.Nullable;
 public final class PeerServiceAttributesExtractor<REQUEST, RESPONSE>
     implements AttributesExtractor<REQUEST, RESPONSE> {
 
-  private final ServerAttributesGetter<REQUEST, RESPONSE> attributesGetter;
+  private final ServerAttributesGetter<REQUEST> attributesGetter;
   private final PeerServiceResolver peerServiceResolver;
 
   // visible for tests
   PeerServiceAttributesExtractor(
-      ServerAttributesGetter<REQUEST, RESPONSE> attributesGetter,
-      PeerServiceResolver peerServiceResolver) {
+      ServerAttributesGetter<REQUEST> attributesGetter, PeerServiceResolver peerServiceResolver) {
     this.attributesGetter = attributesGetter;
     this.peerServiceResolver = peerServiceResolver;
   }
@@ -37,8 +35,7 @@ public final class PeerServiceAttributesExtractor<REQUEST, RESPONSE>
    * attributesGetter} instance to determine the value of the {@code peer.service} attribute.
    */
   public static <REQUEST, RESPONSE> AttributesExtractor<REQUEST, RESPONSE> create(
-      ServerAttributesGetter<REQUEST, RESPONSE> attributesGetter,
-      PeerServiceResolver peerServiceResolver) {
+      ServerAttributesGetter<REQUEST> attributesGetter, PeerServiceResolver peerServiceResolver) {
     return new PeerServiceAttributesExtractor<>(attributesGetter, peerServiceResolver);
   }
 
@@ -62,11 +59,6 @@ public final class PeerServiceAttributesExtractor<REQUEST, RESPONSE>
     String serverAddress = attributesGetter.getServerAddress(request);
     Integer serverPort = attributesGetter.getServerPort(request);
     String peerService = mapToPeerService(serverAddress, serverPort);
-    if (peerService == null && SemconvStability.emitOldHttpSemconv()) {
-      String serverSocketDomain = attributesGetter.getServerSocketDomain(request, response);
-      Integer serverSocketPort = attributesGetter.getServerSocketPort(request, response);
-      peerService = mapToPeerService(serverSocketDomain, serverSocketPort);
-    }
     if (peerService != null) {
       attributes.put(SemanticAttributes.PEER_SERVICE, peerService);
     }

+ 0 - 57
instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/net/internal/InternalNetClientAttributesExtractor.java

@@ -1,57 +0,0 @@
-/*
- * Copyright The OpenTelemetry Authors
- * SPDX-License-Identifier: Apache-2.0
- */
-
-package io.opentelemetry.instrumentation.api.instrumenter.net.internal;
-
-import static io.opentelemetry.instrumentation.api.internal.AttributesExtractorUtil.internalSet;
-
-import io.opentelemetry.api.common.AttributesBuilder;
-import io.opentelemetry.instrumentation.api.instrumenter.network.internal.AddressAndPortExtractor;
-import io.opentelemetry.instrumentation.api.instrumenter.network.internal.ServerAddressAndPortExtractor;
-import io.opentelemetry.semconv.SemanticAttributes;
-import javax.annotation.Nullable;
-
-/**
- * This class is internal and is hence not for public use. Its APIs are unstable and can change at
- * any time.
- */
-@SuppressWarnings("deprecation") // this class will be removed in the 2.0 version
-public final class InternalNetClientAttributesExtractor<REQUEST, RESPONSE> {
-
-  private final io.opentelemetry.instrumentation.api.instrumenter.net.NetClientAttributesGetter<
-          REQUEST, RESPONSE>
-      getter;
-  private final AddressAndPortExtractor<REQUEST> logicalAddressAndPortExtractor;
-  private final boolean emitOldHttpAttributes;
-
-  public InternalNetClientAttributesExtractor(
-      io.opentelemetry.instrumentation.api.instrumenter.net.NetClientAttributesGetter<
-              REQUEST, RESPONSE>
-          getter,
-      AddressAndPortExtractor<REQUEST> fallbackAddressAndPortExtractor,
-      boolean emitOldHttpAttributes) {
-    this.getter = getter;
-    this.logicalAddressAndPortExtractor =
-        new ServerAddressAndPortExtractor<>(getter, fallbackAddressAndPortExtractor);
-    this.emitOldHttpAttributes = emitOldHttpAttributes;
-  }
-
-  public void onEnd(AttributesBuilder attributes, REQUEST request, @Nullable RESPONSE response) {
-
-    if (emitOldHttpAttributes) {
-      internalSet(
-          attributes, SemanticAttributes.NET_TRANSPORT, getter.getTransport(request, response));
-
-      String peerName = logicalAddressAndPortExtractor.extract(request).getAddress();
-      String sockPeerAddr = getter.getServerSocketAddress(request, response);
-      if (sockPeerAddr != null && !sockPeerAddr.equals(peerName)) {
-        String sockFamily = getter.getSockFamily(request, response);
-        if (sockFamily != null && !SemanticAttributes.NetSockFamilyValues.INET.equals(sockFamily)) {
-          internalSet(attributes, SemanticAttributes.NET_SOCK_FAMILY, sockFamily);
-        }
-      }
-    }
-  }
-}

+ 0 - 75
instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/net/internal/InternalNetServerAttributesExtractor.java

@@ -1,75 +0,0 @@
-/*
- * Copyright The OpenTelemetry Authors
- * SPDX-License-Identifier: Apache-2.0
- */
-
-package io.opentelemetry.instrumentation.api.instrumenter.net.internal;
-
-import static io.opentelemetry.instrumentation.api.internal.AttributesExtractorUtil.internalSet;
-
-import io.opentelemetry.api.common.AttributesBuilder;
-import io.opentelemetry.instrumentation.api.instrumenter.network.internal.AddressAndPort;
-import io.opentelemetry.instrumentation.api.instrumenter.network.internal.AddressAndPortExtractor;
-import io.opentelemetry.semconv.SemanticAttributes;
-
-/**
- * This class is internal and is hence not for public use. Its APIs are unstable and can change at
- * any time.
- */
-@SuppressWarnings("deprecation") // this class will be removed in the 2.0 version
-public final class InternalNetServerAttributesExtractor<REQUEST, RESPONSE> {
-
-  private final io.opentelemetry.instrumentation.api.instrumenter.net.NetServerAttributesGetter<
-          REQUEST, RESPONSE>
-      getter;
-  private final AddressAndPortExtractor<REQUEST> fallbackAddressAndPortExtractor;
-  private final boolean emitOldHttpAttributes;
-
-  public InternalNetServerAttributesExtractor(
-      io.opentelemetry.instrumentation.api.instrumenter.net.NetServerAttributesGetter<
-              REQUEST, RESPONSE>
-          getter,
-      AddressAndPortExtractor<REQUEST> fallbackAddressAndPortExtractor,
-      boolean emitOldHttpAttributes) {
-    this.getter = getter;
-    this.fallbackAddressAndPortExtractor = fallbackAddressAndPortExtractor;
-    this.emitOldHttpAttributes = emitOldHttpAttributes;
-  }
-
-  public void onStart(AttributesBuilder attributes, REQUEST request) {
-
-    if (emitOldHttpAttributes) {
-      internalSet(attributes, SemanticAttributes.NET_TRANSPORT, getter.getTransport(request));
-
-      boolean setSockFamily = false;
-
-      String clientSocketAddress = getter.getClientSocketAddress(request, null);
-      if (clientSocketAddress != null) {
-        setSockFamily = true;
-      }
-
-      String serverSocketAddress = getter.getServerSocketAddress(request, null);
-      if (serverSocketAddress != null
-          && !serverSocketAddress.equals(extractServerAddress(request))) {
-        setSockFamily = true;
-      }
-
-      if (setSockFamily) {
-        String sockFamily = getter.getSockFamily(request);
-        if (sockFamily != null && !SemanticAttributes.NetSockFamilyValues.INET.equals(sockFamily)) {
-          internalSet(attributes, SemanticAttributes.NET_SOCK_FAMILY, sockFamily);
-        }
-      }
-    }
-  }
-
-  private String extractServerAddress(REQUEST request) {
-    String serverAddress = getter.getServerAddress(request);
-    if (serverAddress != null) {
-      return serverAddress;
-    }
-    AddressAndPort addressAndPort = new AddressAndPort();
-    fallbackAddressAndPortExtractor.extract(addressAndPort, request);
-    return addressAndPort.getAddress();
-  }
-}

+ 3 - 6
instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/network/ClientAttributesExtractor.java

@@ -12,7 +12,6 @@ import io.opentelemetry.instrumentation.api.instrumenter.InstrumenterBuilder;
 import io.opentelemetry.instrumentation.api.instrumenter.network.internal.AddressAndPortExtractor;
 import io.opentelemetry.instrumentation.api.instrumenter.network.internal.ClientAddressAndPortExtractor;
 import io.opentelemetry.instrumentation.api.instrumenter.network.internal.InternalClientAttributesExtractor;
-import io.opentelemetry.instrumentation.api.internal.SemconvStability;
 import javax.annotation.Nullable;
 
 /**
@@ -29,19 +28,17 @@ public final class ClientAttributesExtractor<REQUEST, RESPONSE>
    * @see InstrumenterBuilder#addAttributesExtractor(AttributesExtractor)
    */
   public static <REQUEST, RESPONSE> ClientAttributesExtractor<REQUEST, RESPONSE> create(
-      ClientAttributesGetter<REQUEST, RESPONSE> getter) {
+      ClientAttributesGetter<REQUEST> getter) {
     return new ClientAttributesExtractor<>(getter);
   }
 
   private final InternalClientAttributesExtractor<REQUEST> internalExtractor;
 
-  ClientAttributesExtractor(ClientAttributesGetter<REQUEST, RESPONSE> getter) {
+  ClientAttributesExtractor(ClientAttributesGetter<REQUEST> getter) {
     internalExtractor =
         new InternalClientAttributesExtractor<>(
             new ClientAddressAndPortExtractor<>(getter, AddressAndPortExtractor.noop()),
-            /* capturePort= */ true,
-            SemconvStability.emitStableHttpSemconv(),
-            SemconvStability.emitOldHttpSemconv());
+            /* capturePort= */ true);
   }
 
   @Override

+ 1 - 59
instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/network/ClientAttributesGetter.java

@@ -5,8 +5,6 @@
 
 package io.opentelemetry.instrumentation.api.instrumenter.network;
 
-import io.opentelemetry.instrumentation.api.instrumenter.net.internal.InetSocketAddressUtil;
-import java.net.InetSocketAddress;
 import javax.annotation.Nullable;
 
 /**
@@ -16,7 +14,7 @@ import javax.annotation.Nullable;
  * library/framework. It will be used by the {@link ClientAttributesExtractor} (or other convention
  * specific extractors) to obtain the various server attributes in a type-generic way.
  */
-public interface ClientAttributesGetter<REQUEST, RESPONSE> {
+public interface ClientAttributesGetter<REQUEST> {
 
   /**
    * Returns the client address - domain name if available without reverse DNS lookup; otherwise, IP
@@ -38,60 +36,4 @@ public interface ClientAttributesGetter<REQUEST, RESPONSE> {
   default Integer getClientPort(REQUEST request) {
     return null;
   }
-
-  /**
-   * Returns an {@link InetSocketAddress} object representing the immediate client socket address.
-   *
-   * <p>Implementing this method is equivalent to implementing all of {@link
-   * #getClientSocketAddress(Object, Object)} and {@link #getClientSocketPort(Object, Object)}.
-   *
-   * @deprecated Implement {@link NetworkAttributesGetter#getNetworkPeerInetSocketAddress(Object,
-   *     Object)} instead.
-   */
-  @Deprecated
-  @Nullable
-  default InetSocketAddress getClientInetSocketAddress(
-      REQUEST request, @Nullable RESPONSE response) {
-    return null;
-  }
-
-  /**
-   * Returns the immediate client peer address - unix domain socket name, IPv4 or IPv6 address.
-   *
-   * <p>Examples: {@code /tmp/my.sock}, {@code 127.0.0.1}
-   *
-   * <p>By default, this method attempts to retrieve the immediate client address using the {@link
-   * #getClientInetSocketAddress(Object, Object)} method. If this method is not implemented, it will
-   * simply return {@code null}. If the instrumented library does not expose {@link
-   * InetSocketAddress} in its API, you might want to implement this method instead of {@link
-   * #getClientInetSocketAddress(Object, Object)}.
-   *
-   * @deprecated Implement {@link NetworkAttributesGetter#getNetworkPeerAddress(Object, Object)}
-   *     instead.
-   */
-  @Deprecated
-  @Nullable
-  default String getClientSocketAddress(REQUEST request, @Nullable RESPONSE response) {
-    return InetSocketAddressUtil.getIpAddress(getClientInetSocketAddress(request, response));
-  }
-
-  /**
-   * Returns the immediate client peer port number.
-   *
-   * <p>Examples: {@code 35555}
-   *
-   * <p>By default, this method attempts to retrieve the immediate client port using the {@link
-   * #getClientInetSocketAddress(Object, Object)} method. If this method is not implemented, it will
-   * simply return {@code null}. If the instrumented library does not expose {@link
-   * InetSocketAddress} in its API, you might want to implement this method instead of {@link
-   * #getClientInetSocketAddress(Object, Object)}.
-   *
-   * @deprecated Implement {@link NetworkAttributesGetter#getNetworkPeerPort(Object, Object)}
-   *     instead.
-   */
-  @Deprecated
-  @Nullable
-  default Integer getClientSocketPort(REQUEST request, @Nullable RESPONSE response) {
-    return InetSocketAddressUtil.getPort(getClientInetSocketAddress(request, response));
-  }
 }

+ 1 - 8
instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/network/NetworkAttributesExtractor.java

@@ -9,9 +9,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.InstrumenterBuilder;
-import io.opentelemetry.instrumentation.api.instrumenter.network.internal.AddressAndPortExtractor;
 import io.opentelemetry.instrumentation.api.instrumenter.network.internal.InternalNetworkAttributesExtractor;
-import io.opentelemetry.instrumentation.api.internal.SemconvStability;
 import javax.annotation.Nullable;
 
 /**
@@ -38,13 +36,8 @@ public final class NetworkAttributesExtractor<REQUEST, RESPONSE>
     internalExtractor =
         new InternalNetworkAttributesExtractor<>(
             getter,
-            AddressAndPortExtractor.noop(),
             /* captureProtocolAttributes= */ true,
-            /* captureLocalSocketAttributes= */ true,
-            // capture the old net.sock.peer.name attr for backwards compatibility
-            /* captureOldPeerDomainAttribute= */ true,
-            SemconvStability.emitStableHttpSemconv(),
-            SemconvStability.emitOldHttpSemconv());
+            /* captureLocalSocketAttributes= */ true);
   }
 
   @Override

+ 1 - 1
instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/network/NetworkAttributesGetter.java

@@ -5,7 +5,7 @@
 
 package io.opentelemetry.instrumentation.api.instrumenter.network;
 
-import io.opentelemetry.instrumentation.api.instrumenter.net.internal.InetSocketAddressUtil;
+import io.opentelemetry.instrumentation.api.instrumenter.network.internal.InetSocketAddressUtil;
 import java.net.InetSocketAddress;
 import javax.annotation.Nullable;
 

+ 4 - 25
instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/network/ServerAttributesExtractor.java

@@ -12,7 +12,6 @@ import io.opentelemetry.instrumentation.api.instrumenter.InstrumenterBuilder;
 import io.opentelemetry.instrumentation.api.instrumenter.network.internal.AddressAndPortExtractor;
 import io.opentelemetry.instrumentation.api.instrumenter.network.internal.InternalServerAttributesExtractor;
 import io.opentelemetry.instrumentation.api.instrumenter.network.internal.ServerAddressAndPortExtractor;
-import io.opentelemetry.instrumentation.api.internal.SemconvStability;
 import javax.annotation.Nullable;
 
 /**
@@ -29,36 +28,16 @@ public final class ServerAttributesExtractor<REQUEST, RESPONSE>
    * @see InstrumenterBuilder#addAttributesExtractor(AttributesExtractor)
    */
   public static <REQUEST, RESPONSE> ServerAttributesExtractor<REQUEST, RESPONSE> create(
-      ServerAttributesGetter<REQUEST, RESPONSE> getter) {
-    return new ServerAttributesExtractor<>(getter, InternalServerAttributesExtractor.Mode.PEER);
-  }
-
-  /**
-   * Returns a new {@link ServerAttributesExtractor} that will use the passed {@link
-   * ServerAttributesGetter}.
-   *
-   * @deprecated This method will be removed in the 2.0 release. It was only introduced to ease the
-   *     transition from using the old {@code NetServerAttributesGetter} to the new {@code
-   *     ...network} attribute getter classes.
-   */
-  @Deprecated
-  public static <REQUEST, RESPONSE>
-      ServerAttributesExtractor<REQUEST, RESPONSE> createForServerSide(
-          ServerAttributesGetter<REQUEST, RESPONSE> getter) {
-    return new ServerAttributesExtractor<>(getter, InternalServerAttributesExtractor.Mode.HOST);
+      ServerAttributesGetter<REQUEST> getter) {
+    return new ServerAttributesExtractor<>(getter);
   }
 
   private final InternalServerAttributesExtractor<REQUEST> internalExtractor;
 
-  ServerAttributesExtractor(
-      ServerAttributesGetter<REQUEST, RESPONSE> getter,
-      InternalServerAttributesExtractor.Mode mode) {
+  ServerAttributesExtractor(ServerAttributesGetter<REQUEST> getter) {
     internalExtractor =
         new InternalServerAttributesExtractor<>(
-            new ServerAddressAndPortExtractor<>(getter, AddressAndPortExtractor.noop()),
-            SemconvStability.emitStableHttpSemconv(),
-            SemconvStability.emitOldHttpSemconv(),
-            mode);
+            new ServerAddressAndPortExtractor<>(getter, AddressAndPortExtractor.noop()));
   }
 
   @Override

+ 1 - 80
instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/network/ServerAttributesGetter.java

@@ -5,8 +5,6 @@
 
 package io.opentelemetry.instrumentation.api.instrumenter.network;
 
-import io.opentelemetry.instrumentation.api.instrumenter.net.internal.InetSocketAddressUtil;
-import java.net.InetSocketAddress;
 import javax.annotation.Nullable;
 
 /**
@@ -16,7 +14,7 @@ import javax.annotation.Nullable;
  * library/framework. It will be used by the {@link ServerAttributesExtractor} (or other convention
  * specific extractors) to obtain the various server attributes in a type-generic way.
  */
-public interface ServerAttributesGetter<REQUEST, RESPONSE> {
+public interface ServerAttributesGetter<REQUEST> {
 
   /**
    * Returns the server domain name if available without reverse DNS lookup; otherwise, IP address
@@ -38,81 +36,4 @@ public interface ServerAttributesGetter<REQUEST, RESPONSE> {
   default Integer getServerPort(REQUEST request) {
     return null;
   }
-
-  /**
-   * Returns an {@link InetSocketAddress} object representing the server socket address.
-   *
-   * <p>Implementing this method is equivalent to implementing all of {@link
-   * #getServerSocketDomain(Object, Object)}, {@link #getServerSocketAddress(Object, Object)} and
-   * {@link #getServerSocketPort(Object, Object)}.
-   *
-   * @deprecated Implement {@link NetworkAttributesGetter#getNetworkPeerInetSocketAddress(Object,
-   *     Object)} or {@link NetworkAttributesGetter#getNetworkLocalInetSocketAddress(Object,
-   *     Object)} instead.
-   */
-  @Deprecated
-  @Nullable
-  default InetSocketAddress getServerInetSocketAddress(
-      REQUEST request, @Nullable RESPONSE response) {
-    return null;
-  }
-
-  /**
-   * Return the domain name of an immediate peer.
-   *
-   * <p>Examples: {@code proxy.example.com}
-   *
-   * <p>By default, this method attempts to retrieve the server domain name using the {@link
-   * #getServerInetSocketAddress(Object, Object)} method. If this method is not implemented, it will
-   * simply return {@code null}. If the instrumented library does not expose {@link
-   * InetSocketAddress} in its API, you might want to implement this method instead of {@link
-   * #getServerInetSocketAddress(Object, Object)}.
-   *
-   * @deprecated This method is deprecated and will be removed without replacement.
-   */
-  @Deprecated
-  @Nullable
-  default String getServerSocketDomain(REQUEST request, @Nullable RESPONSE response) {
-    return InetSocketAddressUtil.getDomainName(getServerInetSocketAddress(request, response));
-  }
-
-  /**
-   * Return the physical server IP address or Unix socket address.
-   *
-   * <p>Examples: {@code 10.5.3.2}
-   *
-   * <p>By default, this method attempts to retrieve the server address using the {@link
-   * #getServerInetSocketAddress(Object, Object)} method. If this method is not implemented, it will
-   * simply return {@code null}. If the instrumented library does not expose {@link
-   * InetSocketAddress} in its API, you might want to implement this method instead of {@link
-   * #getServerInetSocketAddress(Object, Object)}.
-   *
-   * @deprecated Implement {@link NetworkAttributesGetter#getNetworkPeerAddress(Object, Object)} or
-   *     {@link NetworkAttributesGetter#getNetworkLocalAddress(Object, Object)} instead.
-   */
-  @Deprecated
-  @Nullable
-  default String getServerSocketAddress(REQUEST request, @Nullable RESPONSE response) {
-    return InetSocketAddressUtil.getIpAddress(getServerInetSocketAddress(request, response));
-  }
-
-  /**
-   * Return the physical server port.
-   *
-   * <p>Examples: {@code 16456}
-   *
-   * <p>By default, this method attempts to retrieve the server port using the {@link
-   * #getServerInetSocketAddress(Object, Object)} method. If this method is not implemented, it will
-   * simply return {@code null}. If the instrumented library does not expose {@link
-   * InetSocketAddress} in its API, you might want to implement this method instead of {@link
-   * #getServerInetSocketAddress(Object, Object)}.
-   *
-   * @deprecated Implement {@link NetworkAttributesGetter#getNetworkPeerPort(Object, Object)} or
-   *     {@link NetworkAttributesGetter#getNetworkLocalPort(Object, Object)} instead.
-   */
-  @Deprecated
-  @Nullable
-  default Integer getServerSocketPort(REQUEST request, @Nullable RESPONSE response) {
-    return InetSocketAddressUtil.getPort(getServerInetSocketAddress(request, response));
-  }
 }

+ 2 - 2
instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/network/internal/ClientAddressAndPortExtractor.java

@@ -14,11 +14,11 @@ import io.opentelemetry.instrumentation.api.instrumenter.network.ClientAttribute
 public final class ClientAddressAndPortExtractor<REQUEST>
     implements AddressAndPortExtractor<REQUEST> {
 
-  private final ClientAttributesGetter<REQUEST, ?> getter;
+  private final ClientAttributesGetter<REQUEST> getter;
   private final AddressAndPortExtractor<REQUEST> fallbackAddressAndPortExtractor;
 
   public ClientAddressAndPortExtractor(
-      ClientAttributesGetter<REQUEST, ?> getter,
+      ClientAttributesGetter<REQUEST> getter,
       AddressAndPortExtractor<REQUEST> fallbackAddressAndPortExtractor) {
     this.getter = getter;
     this.fallbackAddressAndPortExtractor = fallbackAddressAndPortExtractor;

+ 1 - 25
instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/net/internal/InetSocketAddressUtil.java → instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/network/internal/InetSocketAddressUtil.java

@@ -3,7 +3,7 @@
  * SPDX-License-Identifier: Apache-2.0
  */
 
-package io.opentelemetry.instrumentation.api.instrumenter.net.internal;
+package io.opentelemetry.instrumentation.api.instrumenter.network.internal;
 
 import java.net.Inet4Address;
 import java.net.Inet6Address;
@@ -17,22 +17,6 @@ import javax.annotation.Nullable;
  */
 public final class InetSocketAddressUtil {
 
-  @Nullable
-  public static String getSockFamily(
-      @Nullable InetSocketAddress address, @Nullable InetSocketAddress otherAddress) {
-    if (address == null) {
-      address = otherAddress;
-    }
-    if (address == null) {
-      return null;
-    }
-    InetAddress remoteAddress = address.getAddress();
-    if (remoteAddress instanceof Inet6Address) {
-      return "inet6";
-    }
-    return null;
-  }
-
   @Nullable
   public static String getNetworkType(
       @Nullable InetSocketAddress address, @Nullable InetSocketAddress otherAddress) {
@@ -51,14 +35,6 @@ public final class InetSocketAddressUtil {
     return null;
   }
 
-  @Nullable
-  public static String getDomainName(@Nullable InetSocketAddress address) {
-    if (address == null) {
-      return null;
-    }
-    return address.getHostString();
-  }
-
   @Nullable
   public static String getIpAddress(@Nullable InetSocketAddress address) {
     if (address == null) {

+ 4 - 17
instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/network/internal/InternalClientAttributesExtractor.java

@@ -18,33 +18,20 @@ public final class InternalClientAttributesExtractor<REQUEST> {
 
   private final AddressAndPortExtractor<REQUEST> addressAndPortExtractor;
   private final boolean capturePort;
-  private final boolean emitStableUrlAttributes;
-  private final boolean emitOldHttpAttributes;
 
   public InternalClientAttributesExtractor(
-      AddressAndPortExtractor<REQUEST> addressAndPortExtractor,
-      boolean capturePort,
-      boolean emitStableUrlAttributes,
-      boolean emitOldHttpAttributes) {
+      AddressAndPortExtractor<REQUEST> addressAndPortExtractor, boolean capturePort) {
     this.addressAndPortExtractor = addressAndPortExtractor;
     this.capturePort = capturePort;
-    this.emitStableUrlAttributes = emitStableUrlAttributes;
-    this.emitOldHttpAttributes = emitOldHttpAttributes;
   }
 
-  @SuppressWarnings("deprecation") // until old http semconv are dropped in 2.0
   public void onStart(AttributesBuilder attributes, REQUEST request) {
     AddressAndPort clientAddressAndPort = addressAndPortExtractor.extract(request);
 
     if (clientAddressAndPort.address != null) {
-      if (emitStableUrlAttributes) {
-        internalSet(attributes, SemanticAttributes.CLIENT_ADDRESS, clientAddressAndPort.address);
-        if (capturePort && clientAddressAndPort.port != null && clientAddressAndPort.port > 0) {
-          internalSet(attributes, SemanticAttributes.CLIENT_PORT, (long) clientAddressAndPort.port);
-        }
-      }
-      if (emitOldHttpAttributes) {
-        internalSet(attributes, SemanticAttributes.HTTP_CLIENT_IP, clientAddressAndPort.address);
+      internalSet(attributes, SemanticAttributes.CLIENT_ADDRESS, clientAddressAndPort.address);
+      if (capturePort && clientAddressAndPort.port != null && clientAddressAndPort.port > 0) {
+        internalSet(attributes, SemanticAttributes.CLIENT_PORT, (long) clientAddressAndPort.port);
       }
     }
   }

+ 9 - 60
instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/network/internal/InternalNetworkAttributesExtractor.java

@@ -8,10 +8,8 @@ package io.opentelemetry.instrumentation.api.instrumenter.network.internal;
 import static io.opentelemetry.instrumentation.api.internal.AttributesExtractorUtil.internalSet;
 
 import io.opentelemetry.api.common.AttributesBuilder;
-import io.opentelemetry.instrumentation.api.instrumenter.net.internal.InetSocketAddressUtil;
 import io.opentelemetry.instrumentation.api.instrumenter.network.NetworkAttributesGetter;
 import io.opentelemetry.semconv.SemanticAttributes;
-import java.net.InetSocketAddress;
 import java.util.Locale;
 import javax.annotation.Nullable;
 
@@ -22,36 +20,23 @@ import javax.annotation.Nullable;
 public final class InternalNetworkAttributesExtractor<REQUEST, RESPONSE> {
 
   private final NetworkAttributesGetter<REQUEST, RESPONSE> getter;
-  private final AddressAndPortExtractor<REQUEST> logicalPeerAddressAndPortExtractor;
   private final boolean captureProtocolAttributes;
   private final boolean captureLocalSocketAttributes;
-  private final boolean captureOldPeerDomainAttribute;
-  private final boolean emitStableUrlAttributes;
-  private final boolean emitOldHttpAttributes;
 
   public InternalNetworkAttributesExtractor(
       NetworkAttributesGetter<REQUEST, RESPONSE> getter,
-      AddressAndPortExtractor<REQUEST> logicalPeerAddressAndPortExtractor,
       boolean captureProtocolAttributes,
-      boolean captureLocalSocketAttributes,
-      boolean captureOldPeerDomainAttribute,
-      boolean emitStableUrlAttributes,
-      boolean emitOldHttpAttributes) {
+      boolean captureLocalSocketAttributes) {
     this.getter = getter;
-    this.logicalPeerAddressAndPortExtractor = logicalPeerAddressAndPortExtractor;
     this.captureProtocolAttributes = captureProtocolAttributes;
     this.captureLocalSocketAttributes = captureLocalSocketAttributes;
-    this.captureOldPeerDomainAttribute = captureOldPeerDomainAttribute;
-    this.emitStableUrlAttributes = emitStableUrlAttributes;
-    this.emitOldHttpAttributes = emitOldHttpAttributes;
   }
 
-  @SuppressWarnings("deprecation") // until old http semconv are dropped in 2.0
   public void onEnd(AttributesBuilder attributes, REQUEST request, @Nullable RESPONSE response) {
     String protocolName = lowercase(getter.getNetworkProtocolName(request, response));
     String protocolVersion = lowercase(getter.getNetworkProtocolVersion(request, response));
 
-    if (emitStableUrlAttributes && captureProtocolAttributes) {
+    if (captureProtocolAttributes) {
       String transport = lowercase(getter.getNetworkTransport(request, response));
       internalSet(attributes, SemanticAttributes.NETWORK_TRANSPORT, transport);
       internalSet(
@@ -61,62 +46,26 @@ public final class InternalNetworkAttributesExtractor<REQUEST, RESPONSE> {
       internalSet(attributes, SemanticAttributes.NETWORK_PROTOCOL_NAME, protocolName);
       internalSet(attributes, SemanticAttributes.NETWORK_PROTOCOL_VERSION, protocolVersion);
     }
-    if (emitOldHttpAttributes) {
-      // net.transport and net.sock.family are not 1:1 convertible with network.transport and
-      // network.type; they must be handled separately in the old net.* extractors
-      internalSet(attributes, SemanticAttributes.NET_PROTOCOL_NAME, protocolName);
-      internalSet(attributes, SemanticAttributes.NET_PROTOCOL_VERSION, protocolVersion);
-    }
 
-    String localAddress = getter.getNetworkLocalAddress(request, response);
-    if (localAddress != null) {
-      if (emitStableUrlAttributes && captureLocalSocketAttributes) {
+    if (captureLocalSocketAttributes) {
+      String localAddress = getter.getNetworkLocalAddress(request, response);
+      if (localAddress != null) {
         internalSet(attributes, NetworkAttributes.NETWORK_LOCAL_ADDRESS, localAddress);
-      }
-      if (emitOldHttpAttributes) {
-        internalSet(attributes, SemanticAttributes.NET_SOCK_HOST_ADDR, localAddress);
-      }
 
-      Integer localPort = getter.getNetworkLocalPort(request, response);
-      if (localPort != null && localPort > 0) {
-        if (emitStableUrlAttributes && captureLocalSocketAttributes) {
+        Integer localPort = getter.getNetworkLocalPort(request, response);
+        if (localPort != null && localPort > 0) {
           internalSet(attributes, NetworkAttributes.NETWORK_LOCAL_PORT, (long) localPort);
         }
-        if (emitOldHttpAttributes) {
-          internalSet(attributes, SemanticAttributes.NET_SOCK_HOST_PORT, (long) localPort);
-        }
       }
     }
 
     String peerAddress = getter.getNetworkPeerAddress(request, response);
     if (peerAddress != null) {
-      if (emitStableUrlAttributes) {
-        internalSet(attributes, NetworkAttributes.NETWORK_PEER_ADDRESS, peerAddress);
-      }
-      if (emitOldHttpAttributes) {
-        internalSet(attributes, SemanticAttributes.NET_SOCK_PEER_ADDR, peerAddress);
-      }
+      internalSet(attributes, NetworkAttributes.NETWORK_PEER_ADDRESS, peerAddress);
 
       Integer peerPort = getter.getNetworkPeerPort(request, response);
       if (peerPort != null && peerPort > 0) {
-        if (emitStableUrlAttributes) {
-          internalSet(attributes, NetworkAttributes.NETWORK_PEER_PORT, (long) peerPort);
-        }
-        if (emitOldHttpAttributes) {
-          internalSet(attributes, SemanticAttributes.NET_SOCK_PEER_PORT, (long) peerPort);
-        }
-      }
-
-      if (emitOldHttpAttributes && captureOldPeerDomainAttribute) {
-        InetSocketAddress peerSocketAddress =
-            getter.getNetworkPeerInetSocketAddress(request, response);
-        if (peerSocketAddress != null) {
-          String peerSocketDomain = InetSocketAddressUtil.getDomainName(peerSocketAddress);
-          String logicalPeerAddress = logicalPeerAddressAndPortExtractor.extract(request).address;
-          if (peerSocketDomain != null && !peerSocketDomain.equals(logicalPeerAddress)) {
-            internalSet(attributes, SemanticAttributes.NET_SOCK_PEER_NAME, peerSocketDomain);
-          }
-        }
+        internalSet(attributes, NetworkAttributes.NETWORK_PEER_PORT, (long) peerPort);
       }
     }
   }

+ 3 - 44
instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/network/internal/InternalServerAttributesExtractor.java

@@ -7,7 +7,6 @@ package io.opentelemetry.instrumentation.api.instrumenter.network.internal;
 
 import static io.opentelemetry.instrumentation.api.internal.AttributesExtractorUtil.internalSet;
 
-import io.opentelemetry.api.common.AttributeKey;
 import io.opentelemetry.api.common.AttributesBuilder;
 import io.opentelemetry.semconv.SemanticAttributes;
 
@@ -18,61 +17,21 @@ import io.opentelemetry.semconv.SemanticAttributes;
 public final class InternalServerAttributesExtractor<REQUEST> {
 
   private final AddressAndPortExtractor<REQUEST> addressAndPortExtractor;
-  private final boolean emitStableUrlAttributes;
-  private final boolean emitOldHttpAttributes;
-  private final Mode oldSemconvMode;
 
   public InternalServerAttributesExtractor(
-      AddressAndPortExtractor<REQUEST> addressAndPortExtractor,
-      boolean emitStableUrlAttributes,
-      boolean emitOldHttpAttributes,
-      Mode oldSemconvMode) {
+      AddressAndPortExtractor<REQUEST> addressAndPortExtractor) {
     this.addressAndPortExtractor = addressAndPortExtractor;
-    this.emitStableUrlAttributes = emitStableUrlAttributes;
-    this.emitOldHttpAttributes = emitOldHttpAttributes;
-    this.oldSemconvMode = oldSemconvMode;
   }
 
   public void onStart(AttributesBuilder attributes, REQUEST request) {
     AddressAndPort serverAddressAndPort = addressAndPortExtractor.extract(request);
 
     if (serverAddressAndPort.address != null) {
-      if (emitStableUrlAttributes) {
-        internalSet(attributes, SemanticAttributes.SERVER_ADDRESS, serverAddressAndPort.address);
-      }
-      if (emitOldHttpAttributes) {
-        internalSet(attributes, oldSemconvMode.address, serverAddressAndPort.address);
-      }
+      internalSet(attributes, SemanticAttributes.SERVER_ADDRESS, serverAddressAndPort.address);
 
       if (serverAddressAndPort.port != null && serverAddressAndPort.port > 0) {
-        if (emitStableUrlAttributes) {
-          internalSet(attributes, SemanticAttributes.SERVER_PORT, (long) serverAddressAndPort.port);
-        }
-        if (emitOldHttpAttributes) {
-          internalSet(attributes, oldSemconvMode.port, (long) serverAddressAndPort.port);
-        }
+        internalSet(attributes, SemanticAttributes.SERVER_PORT, (long) serverAddressAndPort.port);
       }
     }
   }
-
-  /**
-   * This class is internal and is hence not for public use. Its APIs are unstable and can change at
-   * any time.
-   */
-  @SuppressWarnings({
-    "ImmutableEnumChecker",
-    "deprecation"
-  }) // until old http semconv are dropped in 2.0
-  public enum Mode {
-    PEER(SemanticAttributes.NET_PEER_NAME, SemanticAttributes.NET_PEER_PORT),
-    HOST(SemanticAttributes.NET_HOST_NAME, SemanticAttributes.NET_HOST_PORT);
-
-    final AttributeKey<String> address;
-    final AttributeKey<Long> port;
-
-    Mode(AttributeKey<String> address, AttributeKey<Long> port) {
-      this.address = address;
-      this.port = port;
-    }
-  }
 }

+ 2 - 2
instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/network/internal/ServerAddressAndPortExtractor.java

@@ -14,11 +14,11 @@ import io.opentelemetry.instrumentation.api.instrumenter.network.ServerAttribute
 public final class ServerAddressAndPortExtractor<REQUEST>
     implements AddressAndPortExtractor<REQUEST> {
 
-  private final ServerAttributesGetter<REQUEST, ?> getter;
+  private final ServerAttributesGetter<REQUEST> getter;
   private final AddressAndPortExtractor<REQUEST> fallbackAddressAndPortExtractor;
 
   public ServerAddressAndPortExtractor(
-      ServerAttributesGetter<REQUEST, ?> getter,
+      ServerAttributesGetter<REQUEST> getter,
       AddressAndPortExtractor<REQUEST> fallbackAddressAndPortExtractor) {
     this.getter = getter;
     this.fallbackAddressAndPortExtractor = fallbackAddressAndPortExtractor;

+ 23 - 46
instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/rpc/RpcMetricsAdvice.java

@@ -5,72 +5,49 @@
 
 package io.opentelemetry.instrumentation.api.instrumenter.rpc;
 
-import io.opentelemetry.api.common.AttributeKey;
 import io.opentelemetry.api.metrics.DoubleHistogramBuilder;
 import io.opentelemetry.extension.incubator.metrics.ExtendedDoubleHistogramBuilder;
-import io.opentelemetry.instrumentation.api.internal.SemconvStability;
 import io.opentelemetry.semconv.SemanticAttributes;
-import java.util.ArrayList;
-import java.util.List;
+import java.util.Arrays;
 
 final class RpcMetricsAdvice {
 
-  @SuppressWarnings("deprecation") // until old http semconv are dropped in 2.0
   static void applyClientDurationAdvice(DoubleHistogramBuilder builder) {
     if (!(builder instanceof ExtendedDoubleHistogramBuilder)) {
       return;
     }
     // the list of recommended metrics attributes is from
     // https://github.com/open-telemetry/semantic-conventions/blob/main/docs/rpc/rpc-metrics.md
-    // and
-    // https://github.com/open-telemetry/opentelemetry-specification/blob/v1.20.0/specification/metrics/semantic_conventions/rpc-metrics.md
-    List<AttributeKey<?>> attributes = new ArrayList<>();
-    attributes.add(SemanticAttributes.RPC_SYSTEM);
-    attributes.add(SemanticAttributes.RPC_SERVICE);
-    attributes.add(SemanticAttributes.RPC_METHOD);
-    attributes.add(SemanticAttributes.RPC_GRPC_STATUS_CODE);
-    if (SemconvStability.emitStableHttpSemconv()) {
-      attributes.add(SemanticAttributes.NETWORK_TYPE);
-      attributes.add(SemanticAttributes.NETWORK_TRANSPORT);
-      attributes.add(SemanticAttributes.SERVER_ADDRESS);
-      attributes.add(SemanticAttributes.SERVER_PORT);
-    }
-    if (SemconvStability.emitOldHttpSemconv()) {
-      attributes.add(SemanticAttributes.NET_PEER_NAME);
-      attributes.add(SemanticAttributes.NET_PEER_PORT);
-      attributes.add(SemanticAttributes.NET_TRANSPORT);
-    }
-
-    ((ExtendedDoubleHistogramBuilder) builder).setAttributesAdvice(attributes);
+    ((ExtendedDoubleHistogramBuilder) builder)
+        .setAttributesAdvice(
+            Arrays.asList(
+                SemanticAttributes.RPC_SYSTEM,
+                SemanticAttributes.RPC_SERVICE,
+                SemanticAttributes.RPC_METHOD,
+                SemanticAttributes.RPC_GRPC_STATUS_CODE,
+                SemanticAttributes.NETWORK_TYPE,
+                SemanticAttributes.NETWORK_TRANSPORT,
+                SemanticAttributes.SERVER_ADDRESS,
+                SemanticAttributes.SERVER_PORT));
   }
 
-  @SuppressWarnings("deprecation") // until old http semconv are dropped in 2.0
   static void applyServerDurationAdvice(DoubleHistogramBuilder builder) {
     if (!(builder instanceof ExtendedDoubleHistogramBuilder)) {
       return;
     }
     // the list of recommended metrics attributes is from
     // https://github.com/open-telemetry/semantic-conventions/blob/main/docs/rpc/rpc-metrics.md
-    // and
-    // https://github.com/open-telemetry/opentelemetry-specification/blob/v1.20.0/specification/metrics/semantic_conventions/rpc-metrics.md
-    List<AttributeKey<?>> attributes = new ArrayList<>();
-    attributes.add(SemanticAttributes.RPC_SYSTEM);
-    attributes.add(SemanticAttributes.RPC_SERVICE);
-    attributes.add(SemanticAttributes.RPC_METHOD);
-    attributes.add(SemanticAttributes.RPC_GRPC_STATUS_CODE);
-    if (SemconvStability.emitStableHttpSemconv()) {
-      attributes.add(SemanticAttributes.NETWORK_TYPE);
-      attributes.add(SemanticAttributes.NETWORK_TRANSPORT);
-      attributes.add(SemanticAttributes.SERVER_ADDRESS);
-      attributes.add(SemanticAttributes.SERVER_PORT);
-    }
-    if (SemconvStability.emitOldHttpSemconv()) {
-      attributes.add(SemanticAttributes.NET_HOST_NAME);
-      attributes.add(SemanticAttributes.NET_SOCK_HOST_ADDR);
-      attributes.add(SemanticAttributes.NET_TRANSPORT);
-    }
-
-    ((ExtendedDoubleHistogramBuilder) builder).setAttributesAdvice(attributes);
+    ((ExtendedDoubleHistogramBuilder) builder)
+        .setAttributesAdvice(
+            Arrays.asList(
+                SemanticAttributes.RPC_SYSTEM,
+                SemanticAttributes.RPC_SERVICE,
+                SemanticAttributes.RPC_METHOD,
+                SemanticAttributes.RPC_GRPC_STATUS_CODE,
+                SemanticAttributes.NETWORK_TYPE,
+                SemanticAttributes.NETWORK_TRANSPORT,
+                SemanticAttributes.SERVER_ADDRESS,
+                SemanticAttributes.SERVER_PORT));
   }
 
   private RpcMetricsAdvice() {}

+ 1 - 4
instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/url/UrlAttributesExtractor.java

@@ -36,10 +36,7 @@ public final class UrlAttributesExtractor<REQUEST, RESPONSE>
     // the UrlAttributesExtractor will always emit new semconv
     internalExtractor =
         new InternalUrlAttributesExtractor<>(
-            getter,
-            /* alternateSchemeProvider= */ request -> null,
-            /* emitStableUrlAttributes= */ true,
-            /* emitOldHttpAttributes= */ false);
+            getter, /* alternateSchemeProvider= */ request -> null);
   }
 
   @Override

+ 4 - 27
instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/url/internal/InternalUrlAttributesExtractor.java

@@ -11,7 +11,6 @@ import io.opentelemetry.api.common.AttributesBuilder;
 import io.opentelemetry.instrumentation.api.instrumenter.url.UrlAttributesGetter;
 import io.opentelemetry.semconv.SemanticAttributes;
 import java.util.function.Function;
-import javax.annotation.Nullable;
 
 /**
  * This class is internal and is hence not for public use. Its APIs are unstable and can change at
@@ -21,35 +20,21 @@ public final class InternalUrlAttributesExtractor<REQUEST> {
 
   private final UrlAttributesGetter<REQUEST> getter;
   private final Function<REQUEST, String> alternateSchemeProvider;
-  private final boolean emitStableUrlAttributes;
-  private final boolean emitOldHttpAttributes;
 
   public InternalUrlAttributesExtractor(
-      UrlAttributesGetter<REQUEST> getter,
-      Function<REQUEST, String> alternateSchemeProvider,
-      boolean emitStableUrlAttributes,
-      boolean emitOldHttpAttributes) {
+      UrlAttributesGetter<REQUEST> getter, Function<REQUEST, String> alternateSchemeProvider) {
     this.getter = getter;
     this.alternateSchemeProvider = alternateSchemeProvider;
-    this.emitStableUrlAttributes = emitStableUrlAttributes;
-    this.emitOldHttpAttributes = emitOldHttpAttributes;
   }
 
-  @SuppressWarnings("deprecation") // until old http semconv are dropped in 2.0
   public void onStart(AttributesBuilder attributes, REQUEST request) {
     String urlScheme = getUrlScheme(request);
     String urlPath = getter.getUrlPath(request);
     String urlQuery = getter.getUrlQuery(request);
 
-    if (emitStableUrlAttributes) {
-      internalSet(attributes, SemanticAttributes.URL_SCHEME, urlScheme);
-      internalSet(attributes, SemanticAttributes.URL_PATH, urlPath);
-      internalSet(attributes, SemanticAttributes.URL_QUERY, urlQuery);
-    }
-    if (emitOldHttpAttributes) {
-      internalSet(attributes, SemanticAttributes.HTTP_SCHEME, urlScheme);
-      internalSet(attributes, SemanticAttributes.HTTP_TARGET, getTarget(urlPath, urlQuery));
-    }
+    internalSet(attributes, SemanticAttributes.URL_SCHEME, urlScheme);
+    internalSet(attributes, SemanticAttributes.URL_PATH, urlPath);
+    internalSet(attributes, SemanticAttributes.URL_QUERY, urlQuery);
   }
 
   private String getUrlScheme(REQUEST request) {
@@ -59,12 +44,4 @@ public final class InternalUrlAttributesExtractor<REQUEST> {
     }
     return urlScheme;
   }
-
-  @Nullable
-  private static String getTarget(@Nullable String path, @Nullable String query) {
-    if (path == null && query == null) {
-      return null;
-    }
-    return (path == null ? "" : path) + (query == null || query.isEmpty() ? "" : "?" + query);
-  }
 }

+ 1 - 1
instrumentation-api-semconv/src/test/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpClientMetricsTest.java

@@ -26,7 +26,7 @@ import org.junit.jupiter.api.Test;
 class HttpClientMetricsTest {
 
   static final double[] DURATION_BUCKETS =
-      HttpMetricsUtil.DURATION_SECONDS_BUCKETS.stream().mapToDouble(d -> d).toArray();
+      HttpMetricsAdvice.DURATION_SECONDS_BUCKETS.stream().mapToDouble(d -> d).toArray();
 
   @Test
   void collectsMetrics() {

+ 1 - 1
instrumentation-api-semconv/src/test/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpServerMetricsTest.java

@@ -26,7 +26,7 @@ import org.junit.jupiter.api.Test;
 class HttpServerMetricsTest {
 
   static final double[] DURATION_BUCKETS =
-      HttpMetricsUtil.DURATION_SECONDS_BUCKETS.stream().mapToDouble(d -> d).toArray();
+      HttpMetricsAdvice.DURATION_SECONDS_BUCKETS.stream().mapToDouble(d -> d).toArray();
 
   @Test
   void collectsMetrics() {

+ 0 - 132
instrumentation-api-semconv/src/test/java/io/opentelemetry/instrumentation/api/instrumenter/net/NetClientAttributesExtractorTest.java

@@ -1,132 +0,0 @@
-/*
- * Copyright The OpenTelemetry Authors
- * SPDX-License-Identifier: Apache-2.0
- */
-
-package io.opentelemetry.instrumentation.api.instrumenter.net;
-
-import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat;
-import static io.opentelemetry.semconv.SemanticAttributes.NetTransportValues.IP_TCP;
-import static org.assertj.core.api.Assertions.entry;
-
-import io.opentelemetry.api.common.Attributes;
-import io.opentelemetry.api.common.AttributesBuilder;
-import io.opentelemetry.context.Context;
-import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor;
-import io.opentelemetry.instrumentation.api.instrumenter.network.internal.NetworkAttributes;
-import io.opentelemetry.semconv.SemanticAttributes;
-import java.util.HashMap;
-import java.util.Map;
-import javax.annotation.Nullable;
-import org.junit.jupiter.api.Test;
-
-@SuppressWarnings("deprecation") // testing deprecated class
-class NetClientAttributesExtractorTest {
-
-  static class TestNetClientAttributesGetter
-      implements NetClientAttributesGetter<Map<String, String>, Map<String, String>> {
-
-    @Override
-    public String getTransport(Map<String, String> request, Map<String, String> response) {
-      return response.get("netTransport");
-    }
-
-    @Nullable
-    @Override
-    public String getNetworkTransport(
-        Map<String, String> request, @Nullable Map<String, String> response) {
-      return request.get("transport");
-    }
-
-    @Nullable
-    @Override
-    public String getNetworkType(
-        Map<String, String> request, @Nullable Map<String, String> response) {
-      return request.get("type");
-    }
-
-    @Nullable
-    @Override
-    public String getNetworkProtocolName(
-        Map<String, String> request, @Nullable Map<String, String> response) {
-      return request.get("protocolName");
-    }
-
-    @Nullable
-    @Override
-    public String getNetworkProtocolVersion(
-        Map<String, String> request, @Nullable Map<String, String> response) {
-      return request.get("protocolVersion");
-    }
-
-    @Override
-    public String getServerAddress(Map<String, String> request) {
-      return request.get("peerName");
-    }
-
-    @Override
-    public Integer getServerPort(Map<String, String> request) {
-      String peerPort = request.get("peerPort");
-      return peerPort == null ? null : Integer.valueOf(peerPort);
-    }
-
-    @Override
-    public String getSockFamily(Map<String, String> request, Map<String, String> response) {
-      return response.get("sockFamily");
-    }
-
-    @Override
-    public String getNetworkPeerAddress(Map<String, String> request, Map<String, String> response) {
-      return response.get("sockPeerAddr");
-    }
-
-    @Override
-    public Integer getNetworkPeerPort(Map<String, String> request, Map<String, String> response) {
-      String sockPeerPort = response.get("sockPeerPort");
-      return sockPeerPort == null ? null : Integer.valueOf(sockPeerPort);
-    }
-  }
-
-  private final AttributesExtractor<Map<String, String>, Map<String, String>> extractor =
-      NetClientAttributesExtractor.create(new TestNetClientAttributesGetter());
-
-  @Test
-  void normal() {
-    // given
-    Map<String, String> map = new HashMap<>();
-    map.put("netTransport", IP_TCP);
-    map.put("transport", "tcp");
-    map.put("type", "ipv6");
-    map.put("protocolName", "http");
-    map.put("protocolVersion", "1.1");
-    map.put("peerName", "opentelemetry.io");
-    map.put("peerPort", "42");
-    map.put("sockFamily", "inet6");
-    map.put("sockPeerAddr", "1:2:3:4::");
-    map.put("sockPeerPort", "123");
-
-    Context context = Context.root();
-
-    // when
-    AttributesBuilder startAttributes = Attributes.builder();
-    extractor.onStart(startAttributes, context, map);
-
-    AttributesBuilder endAttributes = Attributes.builder();
-    extractor.onEnd(endAttributes, context, map, map, null);
-
-    // then
-    assertThat(startAttributes.build())
-        .containsOnly(
-            entry(SemanticAttributes.SERVER_ADDRESS, "opentelemetry.io"),
-            entry(SemanticAttributes.SERVER_PORT, 42L));
-
-    assertThat(endAttributes.build())
-        .containsOnly(
-            entry(SemanticAttributes.NETWORK_TRANSPORT, "tcp"),
-            entry(SemanticAttributes.NETWORK_TYPE, "ipv6"),
-            entry(SemanticAttributes.NETWORK_PROTOCOL_NAME, "http"),
-            entry(SemanticAttributes.NETWORK_PROTOCOL_VERSION, "1.1"),
-            entry(NetworkAttributes.NETWORK_PEER_ADDRESS, "1:2:3:4::"),
-            entry(NetworkAttributes.NETWORK_PEER_PORT, 123L));
-  }
-}

+ 0 - 148
instrumentation-api-semconv/src/test/java/io/opentelemetry/instrumentation/api/instrumenter/net/NetServerAttributesExtractorTest.java

@@ -1,148 +0,0 @@
-/*
- * Copyright The OpenTelemetry Authors
- * SPDX-License-Identifier: Apache-2.0
- */
-
-package io.opentelemetry.instrumentation.api.instrumenter.net;
-
-import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat;
-import static io.opentelemetry.semconv.SemanticAttributes.NetTransportValues.IP_TCP;
-import static org.assertj.core.api.Assertions.entry;
-
-import io.opentelemetry.api.common.Attributes;
-import io.opentelemetry.api.common.AttributesBuilder;
-import io.opentelemetry.context.Context;
-import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor;
-import io.opentelemetry.instrumentation.api.instrumenter.network.internal.NetworkAttributes;
-import io.opentelemetry.semconv.SemanticAttributes;
-import java.util.HashMap;
-import java.util.Map;
-import javax.annotation.Nullable;
-import org.junit.jupiter.api.Test;
-
-@SuppressWarnings("deprecation") // testing deprecated class
-class NetServerAttributesExtractorTest {
-
-  static class TestNetServerAttributesGetter
-      implements NetServerAttributesGetter<Map<String, String>, Void> {
-
-    @Override
-    public String getTransport(Map<String, String> request) {
-      return request.get("netTransport");
-    }
-
-    @Nullable
-    @Override
-    public String getNetworkTransport(Map<String, String> request, @Nullable Void response) {
-      return request.get("transport");
-    }
-
-    @Nullable
-    @Override
-    public String getNetworkType(Map<String, String> request, @Nullable Void response) {
-      return request.get("type");
-    }
-
-    @Nullable
-    @Override
-    public String getNetworkProtocolName(Map<String, String> request, Void response) {
-      return request.get("protocolName");
-    }
-
-    @Nullable
-    @Override
-    public String getNetworkProtocolVersion(Map<String, String> request, Void response) {
-      return request.get("protocolVersion");
-    }
-
-    @Nullable
-    @Override
-    public String getServerAddress(Map<String, String> request) {
-      return request.get("hostName");
-    }
-
-    @Nullable
-    @Override
-    public Integer getServerPort(Map<String, String> request) {
-      String hostPort = request.get("hostPort");
-      return hostPort == null ? null : Integer.valueOf(hostPort);
-    }
-
-    @Nullable
-    @Override
-    public String getSockFamily(Map<String, String> request) {
-      return request.get("sockFamily");
-    }
-
-    @Override
-    public String getNetworkPeerAddress(Map<String, String> request, Void response) {
-      return request.get("sockPeerAddr");
-    }
-
-    @Override
-    public Integer getNetworkPeerPort(Map<String, String> request, Void response) {
-      String sockPeerPort = request.get("sockPeerPort");
-      return sockPeerPort == null ? null : Integer.valueOf(sockPeerPort);
-    }
-
-    @Nullable
-    @Override
-    public String getNetworkLocalAddress(Map<String, String> request, Void response) {
-      return request.get("sockHostAddr");
-    }
-
-    @Nullable
-    @Override
-    public Integer getNetworkLocalPort(Map<String, String> request, Void response) {
-      String sockHostPort = request.get("sockHostPort");
-      return sockHostPort == null ? null : Integer.valueOf(sockHostPort);
-    }
-  }
-
-  AttributesExtractor<Map<String, String>, Void> extractor =
-      NetServerAttributesExtractor.create(new TestNetServerAttributesGetter());
-
-  @Test
-  void normal() {
-    // given
-    Map<String, String> map = new HashMap<>();
-    map.put("netTransport", IP_TCP);
-    map.put("transport", "tcp");
-    map.put("type", "ipv6");
-    map.put("protocolName", "http");
-    map.put("protocolVersion", "1.1");
-    map.put("hostName", "opentelemetry.io");
-    map.put("hostPort", "80");
-    map.put("sockFamily", "inet6");
-    map.put("sockPeerAddr", "1:2:3:4::");
-    map.put("sockPeerPort", "42");
-    map.put("sockHostAddr", "4:3:2:1::");
-    map.put("sockHostPort", "8080");
-
-    Context context = Context.root();
-
-    // when
-    AttributesBuilder startAttributes = Attributes.builder();
-    extractor.onStart(startAttributes, context, map);
-
-    AttributesBuilder endAttributes = Attributes.builder();
-    extractor.onEnd(endAttributes, context, map, null, null);
-
-    // then
-    assertThat(startAttributes.build())
-        .containsOnly(
-            entry(SemanticAttributes.SERVER_ADDRESS, "opentelemetry.io"),
-            entry(SemanticAttributes.SERVER_PORT, 80L));
-
-    assertThat(endAttributes.build())
-        .containsOnly(
-            entry(SemanticAttributes.NETWORK_TRANSPORT, "tcp"),
-            entry(SemanticAttributes.NETWORK_TYPE, "ipv6"),
-            entry(SemanticAttributes.NETWORK_PROTOCOL_NAME, "http"),
-            entry(SemanticAttributes.NETWORK_PROTOCOL_VERSION, "1.1"),
-            entry(NetworkAttributes.NETWORK_LOCAL_ADDRESS, "4:3:2:1::"),
-            entry(NetworkAttributes.NETWORK_LOCAL_PORT, 8080L),
-            entry(NetworkAttributes.NETWORK_PEER_ADDRESS, "1:2:3:4::"),
-            entry(NetworkAttributes.NETWORK_PEER_PORT, 42L));
-  }
-}

+ 1 - 39
instrumentation-api-semconv/src/test/java/io/opentelemetry/instrumentation/api/instrumenter/net/PeerServiceAttributesExtractorTest.java

@@ -10,19 +10,15 @@ import static java.util.Collections.singletonMap;
 import static org.assertj.core.api.Assertions.entry;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
 import io.opentelemetry.api.common.Attributes;
 import io.opentelemetry.api.common.AttributesBuilder;
 import io.opentelemetry.context.Context;
 import io.opentelemetry.instrumentation.api.instrumenter.network.ServerAttributesGetter;
-import io.opentelemetry.instrumentation.api.internal.SemconvStability;
 import io.opentelemetry.semconv.SemanticAttributes;
 import java.util.HashMap;
 import java.util.Map;
-import org.junit.jupiter.api.Assumptions;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
 import org.mockito.Mock;
@@ -30,7 +26,7 @@ import org.mockito.junit.jupiter.MockitoExtension;
 
 @ExtendWith(MockitoExtension.class)
 class PeerServiceAttributesExtractorTest {
-  @Mock ServerAttributesGetter<String, String> netAttributesExtractor;
+  @Mock ServerAttributesGetter<String> netAttributesExtractor;
 
   @Test
   void shouldNotSetAnyValueIfNetExtractorReturnsNulls() {
@@ -77,7 +73,6 @@ class PeerServiceAttributesExtractorTest {
   }
 
   @Test
-  @SuppressWarnings("deprecation") // old semconv
   void shouldSetPeerNameIfItMatches() {
     // given
     Map<String, String> peerServiceMapping = new HashMap<>();
@@ -99,39 +94,6 @@ class PeerServiceAttributesExtractorTest {
     AttributesBuilder endAttributes = Attributes.builder();
     underTest.onEnd(endAttributes, context, "request", "response", null);
 
-    // then
-    assertThat(startAttributes.build()).isEmpty();
-    assertThat(endAttributes.build())
-        .containsOnly(entry(SemanticAttributes.PEER_SERVICE, "myService"));
-    verify(netAttributesExtractor, never()).getServerSocketDomain(any(), any());
-  }
-
-  @SuppressWarnings("deprecation") // old semconv
-  @Test
-  void shouldSetSockPeerNameIfItMatchesAndNoPeerNameProvided() {
-
-    Assumptions.assumeTrue(SemconvStability.emitOldHttpSemconv());
-
-    // given
-    Map<String, String> peerServiceMapping = new HashMap<>();
-    peerServiceMapping.put("example.com", "myService");
-    peerServiceMapping.put("1.2.3.4", "someOtherService");
-
-    PeerServiceResolver peerServiceResolver = PeerServiceResolver.create(peerServiceMapping);
-
-    PeerServiceAttributesExtractor<String, String> underTest =
-        new PeerServiceAttributesExtractor<>(netAttributesExtractor, peerServiceResolver);
-
-    when(netAttributesExtractor.getServerSocketDomain(any(), any())).thenReturn("example.com");
-
-    Context context = Context.root();
-
-    // when
-    AttributesBuilder startAttributes = Attributes.builder();
-    underTest.onStart(startAttributes, context, "request");
-    AttributesBuilder endAttributes = Attributes.builder();
-    underTest.onEnd(endAttributes, context, "request", "response", null);
-
     // then
     assertThat(startAttributes.build()).isEmpty();
     assertThat(endAttributes.build())

+ 1 - 2
instrumentation-api-semconv/src/test/java/io/opentelemetry/instrumentation/api/instrumenter/network/ClientAttributesExtractorTest.java

@@ -21,8 +21,7 @@ import org.junit.jupiter.api.Test;
 
 class ClientAttributesExtractorTest {
 
-  static class TestClientAttributesGetter
-      implements ClientAttributesGetter<Map<String, String>, Void> {
+  static class TestClientAttributesGetter implements ClientAttributesGetter<Map<String, String>> {
 
     @Nullable
     @Override

+ 1 - 2
instrumentation-api-semconv/src/test/java/io/opentelemetry/instrumentation/api/instrumenter/network/ServerAttributesExtractorTest.java

@@ -21,8 +21,7 @@ import org.junit.jupiter.api.Test;
 
 class ServerAttributesExtractorTest {
 
-  static class TestServerAttributesGetter
-      implements ServerAttributesGetter<Map<String, String>, Void> {
+  static class TestServerAttributesGetter implements ServerAttributesGetter<Map<String, String>> {
 
     @Nullable
     @Override

+ 0 - 8
instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/internal/SemconvStability.java

@@ -40,14 +40,6 @@ public final class SemconvStability {
     emitStableJvmSemconv = stableJvm;
   }
 
-  public static boolean emitOldHttpSemconv() {
-    return false;
-  }
-
-  public static boolean emitStableHttpSemconv() {
-    return true;
-  }
-
   public static boolean emitOldJvmSemconv() {
     return emitOldJvmSemconv;
   }

+ 1 - 15
instrumentation/apache-dubbo-2.7/library-autoconfigure/src/main/java/io/opentelemetry/instrumentation/apachedubbo/v2_7/DubboNetworkServerAttributesGetter.java

@@ -6,26 +6,12 @@
 package io.opentelemetry.instrumentation.apachedubbo.v2_7;
 
 import io.opentelemetry.instrumentation.api.instrumenter.network.NetworkAttributesGetter;
-import io.opentelemetry.instrumentation.api.instrumenter.network.ServerAttributesGetter;
 import java.net.InetSocketAddress;
 import javax.annotation.Nullable;
 import org.apache.dubbo.rpc.Result;
 
 final class DubboNetworkServerAttributesGetter
-    implements ServerAttributesGetter<DubboRequest, Result>,
-        NetworkAttributesGetter<DubboRequest, Result> {
-
-  @Nullable
-  @Override
-  public String getServerAddress(DubboRequest request) {
-    return null;
-  }
-
-  @Nullable
-  @Override
-  public Integer getServerPort(DubboRequest request) {
-    return null;
-  }
+    implements NetworkAttributesGetter<DubboRequest, Result> {
 
   @Nullable
   @Override

+ 0 - 3
instrumentation/apache-dubbo-2.7/library-autoconfigure/src/main/java/io/opentelemetry/instrumentation/apachedubbo/v2_7/DubboTelemetryBuilder.java

@@ -56,7 +56,6 @@ public final class DubboTelemetryBuilder {
   /**
    * Returns a new {@link DubboTelemetry} with the settings of this {@link DubboTelemetryBuilder}.
    */
-  @SuppressWarnings("deprecation") // using createForServerSide() for the old->stable semconv story
   public DubboTelemetry build() {
     DubboRpcAttributesGetter rpcAttributesGetter = DubboRpcAttributesGetter.INSTANCE;
     SpanNameExtractor<DubboRequest> spanNameExtractor =
@@ -70,8 +69,6 @@ public final class DubboTelemetryBuilder {
         Instrumenter.<DubboRequest, Result>builder(
                 openTelemetry, INSTRUMENTATION_NAME, spanNameExtractor)
             .addAttributesExtractor(RpcServerAttributesExtractor.create(rpcAttributesGetter))
-            .addAttributesExtractor(
-                ServerAttributesExtractor.createForServerSide(netServerAttributesGetter))
             .addAttributesExtractor(NetworkAttributesExtractor.create(netServerAttributesGetter))
             .addAttributesExtractors(attributesExtractors);
 

+ 1 - 2
instrumentation/apache-dubbo-2.7/library-autoconfigure/src/main/java/io/opentelemetry/instrumentation/apachedubbo/v2_7/internal/DubboClientNetworkAttributesGetter.java

@@ -17,8 +17,7 @@ import org.apache.dubbo.rpc.Result;
  * any time.
  */
 public final class DubboClientNetworkAttributesGetter
-    implements ServerAttributesGetter<DubboRequest, Result>,
-        NetworkAttributesGetter<DubboRequest, Result> {
+    implements ServerAttributesGetter<DubboRequest>, NetworkAttributesGetter<DubboRequest, Result> {
 
   @Nullable
   @Override

+ 0 - 14
instrumentation/grizzly-2.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/grizzly/GrizzlyHttpAttributesGetter.java

@@ -5,8 +5,6 @@
 
 package io.opentelemetry.javaagent.instrumentation.grizzly;
 
-import static io.opentelemetry.semconv.SemanticAttributes.NetTransportValues.IP_TCP;
-import static io.opentelemetry.semconv.SemanticAttributes.NetTransportValues.IP_UDP;
 import static java.util.Collections.emptyList;
 
 import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerAttributesGetter;
@@ -70,18 +68,6 @@ final class GrizzlyHttpAttributesGetter
     return request.getQueryString();
   }
 
-  @Override
-  public String getTransport(HttpRequestPacket request) {
-    Transport transport = request.getConnection().getTransport();
-    if (transport instanceof TCPNIOTransport) {
-      return IP_TCP;
-    }
-    if (transport instanceof UDPNIOTransport) {
-      return IP_UDP;
-    }
-    return null;
-  }
-
   @Nullable
   @Override
   public String getNetworkTransport(

+ 1 - 2
instrumentation/grpc-1.6/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/GrpcNetworkServerAttributesGetter.java

@@ -13,8 +13,7 @@ import java.net.SocketAddress;
 import javax.annotation.Nullable;
 
 final class GrpcNetworkServerAttributesGetter
-    implements ServerAttributesGetter<GrpcRequest, Status>,
-        NetworkAttributesGetter<GrpcRequest, Status> {
+    implements ServerAttributesGetter<GrpcRequest>, NetworkAttributesGetter<GrpcRequest, Status> {
 
   @Nullable
   @Override

+ 1 - 2
instrumentation/grpc-1.6/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/GrpcTelemetryBuilder.java

@@ -187,8 +187,7 @@ public final class GrpcTelemetryBuilder {
         .setSpanStatusExtractor(GrpcSpanStatusExtractor.SERVER)
         .addAttributesExtractors(additionalExtractors)
         .addAttributesExtractor(RpcServerAttributesExtractor.create(rpcAttributesGetter))
-        .addAttributesExtractor(
-            ServerAttributesExtractor.createForServerSide(netServerAttributesGetter))
+        .addAttributesExtractor(ServerAttributesExtractor.create(netServerAttributesGetter))
         .addAttributesExtractor(NetworkAttributesExtractor.create(netServerAttributesGetter))
         .addAttributesExtractor(
             new GrpcAttributesExtractor(

+ 1 - 2
instrumentation/grpc-1.6/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/internal/GrpcClientNetworkAttributesGetter.java

@@ -18,8 +18,7 @@ import javax.annotation.Nullable;
  * any time.
  */
 public final class GrpcClientNetworkAttributesGetter
-    implements ServerAttributesGetter<GrpcRequest, Status>,
-        NetworkAttributesGetter<GrpcRequest, Status> {
+    implements ServerAttributesGetter<GrpcRequest>, NetworkAttributesGetter<GrpcRequest, Status> {
 
   @Nullable
   @Override

+ 1 - 1
instrumentation/jdbc/library/src/main/java/io/opentelemetry/instrumentation/jdbc/internal/JdbcNetworkAttributesGetter.java

@@ -12,7 +12,7 @@ import javax.annotation.Nullable;
  * This class is internal and is hence not for public use. Its APIs are unstable and can change at
  * any time.
  */
-public final class JdbcNetworkAttributesGetter implements ServerAttributesGetter<DbRequest, Void> {
+public final class JdbcNetworkAttributesGetter implements ServerAttributesGetter<DbRequest> {
 
   @Nullable
   @Override

+ 1 - 1
instrumentation/jedis/jedis-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jedis/v1_4/JedisNetworkAttributesGetter.java

@@ -7,7 +7,7 @@ package io.opentelemetry.javaagent.instrumentation.jedis.v1_4;
 
 import io.opentelemetry.instrumentation.api.instrumenter.network.ServerAttributesGetter;
 
-final class JedisNetworkAttributesGetter implements ServerAttributesGetter<JedisRequest, Void> {
+final class JedisNetworkAttributesGetter implements ServerAttributesGetter<JedisRequest> {
 
   @Override
   public String getServerAddress(JedisRequest request) {

+ 1 - 2
instrumentation/jedis/jedis-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jedis/v3_0/JedisNetworkAttributesGetter.java

@@ -12,8 +12,7 @@ import java.net.Socket;
 import javax.annotation.Nullable;
 
 final class JedisNetworkAttributesGetter
-    implements ServerAttributesGetter<JedisRequest, Void>,
-        NetworkAttributesGetter<JedisRequest, Void> {
+    implements ServerAttributesGetter<JedisRequest>, NetworkAttributesGetter<JedisRequest, Void> {
 
   @Nullable
   @Override

+ 2 - 2
instrumentation/ktor/ktor-2.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v2_0/client/KtorHttpClientAttributesGetter.kt

@@ -21,9 +21,9 @@ internal object KtorHttpClientAttributesGetter : HttpClientAttributesGetter<Http
 
   override fun getHttpResponseHeader(request: HttpRequestData, response: HttpResponse, name: String) = response.headers.getAll(name).orEmpty()
 
-  override fun getNetworkProtocolName(request: HttpRequestData?, response: HttpResponse?): String? = response?.version?.name
+  override fun getNetworkProtocolName(request: HttpRequestData, response: HttpResponse?): String? = response?.version?.name
 
-  override fun getNetworkProtocolVersion(request: HttpRequestData?, response: HttpResponse?): String? {
+  override fun getNetworkProtocolVersion(request: HttpRequestData, response: HttpResponse?): String? {
     val version = response?.version ?: return null
     if (version.minor == 0) {
       return "${version.major}"

+ 1 - 2
instrumentation/lettuce/lettuce-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v4_0/LettuceConnectNetworkAttributesGetter.java

@@ -8,8 +8,7 @@ package io.opentelemetry.javaagent.instrumentation.lettuce.v4_0;
 import com.lambdaworks.redis.RedisURI;
 import io.opentelemetry.instrumentation.api.instrumenter.network.ServerAttributesGetter;
 
-final class LettuceConnectNetworkAttributesGetter
-    implements ServerAttributesGetter<RedisURI, Void> {
+final class LettuceConnectNetworkAttributesGetter implements ServerAttributesGetter<RedisURI> {
 
   @Override
   public String getServerAddress(RedisURI redisUri) {

+ 1 - 2
instrumentation/lettuce/lettuce-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_0/LettuceConnectNetworkAttributesGetter.java

@@ -8,8 +8,7 @@ package io.opentelemetry.javaagent.instrumentation.lettuce.v5_0;
 import io.lettuce.core.RedisURI;
 import io.opentelemetry.instrumentation.api.instrumenter.network.ServerAttributesGetter;
 
-final class LettuceConnectNetworkAttributesGetter
-    implements ServerAttributesGetter<RedisURI, Void> {
+final class LettuceConnectNetworkAttributesGetter implements ServerAttributesGetter<RedisURI> {
 
   @Override
   public String getServerAddress(RedisURI redisUri) {

+ 1 - 1
instrumentation/mongo/mongo-3.1/library/src/main/java/io/opentelemetry/instrumentation/mongo/v3_1/MongoNetworkAttributesGetter.java

@@ -9,7 +9,7 @@ import com.mongodb.event.CommandStartedEvent;
 import io.opentelemetry.instrumentation.api.instrumenter.network.ServerAttributesGetter;
 import javax.annotation.Nullable;
 
-class MongoNetworkAttributesGetter implements ServerAttributesGetter<CommandStartedEvent, Void> {
+class MongoNetworkAttributesGetter implements ServerAttributesGetter<CommandStartedEvent> {
 
   @Nullable
   @Override

+ 0 - 9
instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/client/NettyConnectHttpAttributesGetter.java

@@ -5,9 +5,6 @@
 
 package io.opentelemetry.javaagent.instrumentation.netty.v3_8.client;
 
-import static io.opentelemetry.semconv.SemanticAttributes.NetTransportValues.IP_TCP;
-import static io.opentelemetry.semconv.SemanticAttributes.NetTransportValues.IP_UDP;
-
 import io.opentelemetry.instrumentation.api.instrumenter.http.HttpClientAttributesGetter;
 import io.opentelemetry.instrumentation.netty.common.internal.NettyConnectionRequest;
 import io.opentelemetry.javaagent.instrumentation.netty.v3_8.util.ChannelUtil;
@@ -17,7 +14,6 @@ import java.util.Collections;
 import java.util.List;
 import javax.annotation.Nullable;
 import org.jboss.netty.channel.Channel;
-import org.jboss.netty.channel.socket.DatagramChannel;
 
 enum NettyConnectHttpAttributesGetter
     implements HttpClientAttributesGetter<NettyConnectionRequest, Channel> {
@@ -54,11 +50,6 @@ enum NettyConnectHttpAttributesGetter
     return Collections.emptyList();
   }
 
-  @Override
-  public String getTransport(NettyConnectionRequest request, @Nullable Channel channel) {
-    return channel instanceof DatagramChannel ? IP_UDP : IP_TCP;
-  }
-
   @Override
   public String getNetworkTransport(NettyConnectionRequest request, @Nullable Channel channel) {
     return ChannelUtil.getNetworkTransport(channel);

+ 0 - 9
instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/client/NettyHttpClientAttributesGetter.java

@@ -6,8 +6,6 @@
 package io.opentelemetry.javaagent.instrumentation.netty.v3_8.client;
 
 import static io.opentelemetry.javaagent.instrumentation.netty.v3_8.util.HttpSchemeUtil.getScheme;
-import static io.opentelemetry.semconv.SemanticAttributes.NetTransportValues.IP_TCP;
-import static io.opentelemetry.semconv.SemanticAttributes.NetTransportValues.IP_UDP;
 
 import io.opentelemetry.instrumentation.api.instrumenter.http.HttpClientAttributesGetter;
 import io.opentelemetry.javaagent.instrumentation.netty.v3_8.HttpRequestAndChannel;
@@ -18,7 +16,6 @@ import java.net.URI;
 import java.net.URISyntaxException;
 import java.util.List;
 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;
 
@@ -68,12 +65,6 @@ final class NettyHttpClientAttributesGetter
     return response.headers().getAll(name);
   }
 
-  @Override
-  public String getTransport(
-      HttpRequestAndChannel requestAndChannel, @Nullable HttpResponse response) {
-    return requestAndChannel.channel() instanceof DatagramChannel ? IP_UDP : IP_TCP;
-  }
-
   @Override
   public String getNetworkTransport(
       HttpRequestAndChannel requestAndChannel, @Nullable HttpResponse response) {

+ 0 - 9
instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/server/NettyHttpServerAttributesGetter.java

@@ -5,9 +5,6 @@
 
 package io.opentelemetry.javaagent.instrumentation.netty.v3_8.server;
 
-import static io.opentelemetry.semconv.SemanticAttributes.NetTransportValues.IP_TCP;
-import static io.opentelemetry.semconv.SemanticAttributes.NetTransportValues.IP_UDP;
-
 import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerAttributesGetter;
 import io.opentelemetry.javaagent.instrumentation.netty.v3_8.HttpRequestAndChannel;
 import io.opentelemetry.javaagent.instrumentation.netty.v3_8.util.ChannelUtil;
@@ -16,7 +13,6 @@ import java.net.InetSocketAddress;
 import java.net.SocketAddress;
 import java.util.List;
 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;
 
@@ -64,11 +60,6 @@ final class NettyHttpServerAttributesGetter
     return separatorPos == -1 ? null : fullPath.substring(separatorPos + 1);
   }
 
-  @Override
-  public String getTransport(HttpRequestAndChannel requestAndChannel) {
-    return requestAndChannel.channel() instanceof DatagramChannel ? IP_UDP : IP_TCP;
-  }
-
   @Override
   public String getNetworkTransport(
       HttpRequestAndChannel requestAndChannel, HttpResponse response) {

+ 5 - 11
instrumentation/netty/netty-4-common/library/src/main/java/io/opentelemetry/instrumentation/netty/v4/common/internal/client/NettyClientInstrumenterFactory.java

@@ -21,8 +21,9 @@ import io.opentelemetry.instrumentation.api.instrumenter.http.HttpExperimentalAt
 import io.opentelemetry.instrumentation.api.instrumenter.http.HttpSpanNameExtractor;
 import io.opentelemetry.instrumentation.api.instrumenter.http.HttpSpanNameExtractorBuilder;
 import io.opentelemetry.instrumentation.api.instrumenter.http.HttpSpanStatusExtractor;
-import io.opentelemetry.instrumentation.api.instrumenter.net.PeerServiceAttributesExtractor;
 import io.opentelemetry.instrumentation.api.instrumenter.net.PeerServiceResolver;
+import io.opentelemetry.instrumentation.api.instrumenter.network.NetworkAttributesExtractor;
+import io.opentelemetry.instrumentation.api.instrumenter.network.ServerAttributesExtractor;
 import io.opentelemetry.instrumentation.netty.common.internal.NettyConnectionRequest;
 import io.opentelemetry.instrumentation.netty.v4.common.HttpRequestAndChannel;
 import java.util.List;
@@ -90,7 +91,6 @@ public final class NettyClientInstrumenterFactory {
     return builder.buildClientInstrumenter(HttpRequestHeadersSetter.INSTANCE);
   }
 
-  @SuppressWarnings("deprecation") // have to use the deprecated Net*AttributesExtractor for now
   public NettyConnectionInstrumenter createConnectionInstrumenter() {
     if (connectionTelemetryState == NettyConnectionInstrumentationFlag.DISABLED) {
       return NoopConnectionInstrumenter.INSTANCE;
@@ -110,9 +110,8 @@ public final class NettyClientInstrumenterFactory {
       // when the connection telemetry is fully enabled, CONNECT spans are created for every
       // request; and semantically they're not HTTP spans, they must not use the HTTP client
       // extractor
-      builder.addAttributesExtractor(
-          io.opentelemetry.instrumentation.api.instrumenter.net.NetClientAttributesExtractor.create(
-              getter));
+      builder.addAttributesExtractor(NetworkAttributesExtractor.create(getter));
+      builder.addAttributesExtractor(ServerAttributesExtractor.create(getter));
     } else {
       // in case the connection telemetry is emitted only on errors, the CONNECT span is a stand-in
       // for the HTTP client span
@@ -130,7 +129,6 @@ public final class NettyClientInstrumenterFactory {
         : new NettyErrorOnlyConnectionInstrumenter(instrumenter);
   }
 
-  @SuppressWarnings("deprecation") // have to use the deprecated Net*AttributesExtractor for now
   public NettySslInstrumenter createSslInstrumenter() {
     if (sslTelemetryState == NettyConnectionInstrumentationFlag.DISABLED) {
       return NoopSslInstrumenter.INSTANCE;
@@ -142,11 +140,7 @@ public final class NettyClientInstrumenterFactory {
     Instrumenter<NettySslRequest, Void> instrumenter =
         Instrumenter.<NettySslRequest, Void>builder(
                 openTelemetry, instrumentationName, NettySslRequest::spanName)
-            .addAttributesExtractor(
-                io.opentelemetry.instrumentation.api.instrumenter.net.NetClientAttributesExtractor
-                    .create(netAttributesGetter))
-            .addAttributesExtractor(
-                PeerServiceAttributesExtractor.create(netAttributesGetter, peerServiceResolver))
+            .addAttributesExtractor(NetworkAttributesExtractor.create(netAttributesGetter))
             .buildInstrumenter(
                 sslTelemetryFullyEnabled
                     ? SpanKindExtractor.alwaysInternal()

+ 0 - 9
instrumentation/netty/netty-4-common/library/src/main/java/io/opentelemetry/instrumentation/netty/v4/common/internal/client/NettyConnectHttpAttributesGetter.java

@@ -5,11 +5,7 @@
 
 package io.opentelemetry.instrumentation.netty.v4.common.internal.client;
 
-import static io.opentelemetry.semconv.SemanticAttributes.NetTransportValues.IP_TCP;
-import static io.opentelemetry.semconv.SemanticAttributes.NetTransportValues.IP_UDP;
-
 import io.netty.channel.Channel;
-import io.netty.channel.socket.DatagramChannel;
 import io.opentelemetry.instrumentation.api.instrumenter.http.HttpClientAttributesGetter;
 import io.opentelemetry.instrumentation.netty.common.internal.NettyConnectionRequest;
 import io.opentelemetry.instrumentation.netty.v4.common.internal.ChannelUtil;
@@ -54,11 +50,6 @@ enum NettyConnectHttpAttributesGetter
     return Collections.emptyList();
   }
 
-  @Override
-  public String getTransport(NettyConnectionRequest request, @Nullable Channel channel) {
-    return channel instanceof DatagramChannel ? IP_UDP : IP_TCP;
-  }
-
   @Override
   public String getNetworkTransport(NettyConnectionRequest request, @Nullable Channel channel) {
     return ChannelUtil.getNetworkTransport(channel);

+ 0 - 9
instrumentation/netty/netty-4-common/library/src/main/java/io/opentelemetry/instrumentation/netty/v4/common/internal/client/NettyHttpClientAttributesGetter.java

@@ -6,10 +6,7 @@
 package io.opentelemetry.instrumentation.netty.v4.common.internal.client;
 
 import static io.opentelemetry.instrumentation.netty.v4.common.internal.HttpSchemeUtil.getScheme;
-import static io.opentelemetry.semconv.SemanticAttributes.NetTransportValues.IP_TCP;
-import static io.opentelemetry.semconv.SemanticAttributes.NetTransportValues.IP_UDP;
 
-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.http.HttpClientAttributesGetter;
@@ -68,12 +65,6 @@ final class NettyHttpClientAttributesGetter
     return response.headers().getAll(name);
   }
 
-  @Override
-  public String getTransport(
-      HttpRequestAndChannel requestAndChannel, @Nullable HttpResponse response) {
-    return requestAndChannel.channel() instanceof DatagramChannel ? IP_UDP : IP_TCP;
-  }
-
   @Override
   public String getNetworkTransport(
       HttpRequestAndChannel requestAndChannel, @Nullable HttpResponse response) {

+ 2 - 25
instrumentation/netty/netty-4-common/library/src/main/java/io/opentelemetry/instrumentation/netty/v4/common/internal/client/NettySslNetAttributesGetter.java

@@ -5,41 +5,18 @@
 
 package io.opentelemetry.instrumentation.netty.v4.common.internal.client;
 
-import static io.opentelemetry.semconv.SemanticAttributes.NetTransportValues.IP_TCP;
-import static io.opentelemetry.semconv.SemanticAttributes.NetTransportValues.IP_UDP;
-
-import io.netty.channel.socket.DatagramChannel;
+import io.opentelemetry.instrumentation.api.instrumenter.network.NetworkAttributesGetter;
 import io.opentelemetry.instrumentation.netty.v4.common.internal.ChannelUtil;
 import java.net.InetSocketAddress;
 import javax.annotation.Nullable;
 
-@SuppressWarnings("deprecation") // have to use the deprecated Net*AttributesGetter for now
-final class NettySslNetAttributesGetter
-    implements io.opentelemetry.instrumentation.api.instrumenter.net.NetClientAttributesGetter<
-        NettySslRequest, Void> {
-
-  @Override
-  public String getTransport(NettySslRequest request, @Nullable Void unused) {
-    return request.channel() instanceof DatagramChannel ? IP_UDP : IP_TCP;
-  }
+final class NettySslNetAttributesGetter implements NetworkAttributesGetter<NettySslRequest, Void> {
 
   @Override
   public String getNetworkTransport(NettySslRequest request, @Nullable Void unused) {
     return ChannelUtil.getNetworkTransport(request.channel());
   }
 
-  @Nullable
-  @Override
-  public String getServerAddress(NettySslRequest nettySslRequest) {
-    return null;
-  }
-
-  @Nullable
-  @Override
-  public Integer getServerPort(NettySslRequest nettySslRequest) {
-    return null;
-  }
-
   @Nullable
   @Override
   public InetSocketAddress getNetworkPeerInetSocketAddress(

+ 0 - 9
instrumentation/netty/netty-4-common/library/src/main/java/io/opentelemetry/instrumentation/netty/v4/common/internal/server/NettyHttpServerAttributesGetter.java

@@ -5,10 +5,6 @@
 
 package io.opentelemetry.instrumentation.netty.v4.common.internal.server;
 
-import static io.opentelemetry.semconv.SemanticAttributes.NetTransportValues.IP_TCP;
-import static io.opentelemetry.semconv.SemanticAttributes.NetTransportValues.IP_UDP;
-
-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.http.HttpServerAttributesGetter;
@@ -64,11 +60,6 @@ final class NettyHttpServerAttributesGetter
     return separatorPos == -1 ? null : fullPath.substring(separatorPos + 1);
   }
 
-  @Override
-  public String getTransport(HttpRequestAndChannel requestAndChannel) {
-    return requestAndChannel.channel() instanceof DatagramChannel ? IP_UDP : IP_TCP;
-  }
-
   @Override
   public String getNetworkTransport(
       HttpRequestAndChannel requestAndChannel, HttpResponse response) {

+ 2 - 9
instrumentation/opensearch/opensearch-rest-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/OpenSearchRestInstrumenterFactory.java

@@ -10,13 +10,11 @@ import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter;
 import io.opentelemetry.instrumentation.api.instrumenter.SpanKindExtractor;
 import io.opentelemetry.instrumentation.api.instrumenter.db.DbClientAttributesExtractor;
 import io.opentelemetry.instrumentation.api.instrumenter.db.DbClientSpanNameExtractor;
-import io.opentelemetry.instrumentation.api.instrumenter.net.PeerServiceAttributesExtractor;
-import io.opentelemetry.javaagent.bootstrap.internal.CommonConfig;
+import io.opentelemetry.instrumentation.api.instrumenter.network.NetworkAttributesExtractor;
 import org.opensearch.client.Response;
 
 public final class OpenSearchRestInstrumenterFactory {
 
-  @SuppressWarnings("deprecation") // have to use the deprecated Net*AttributesExtractor for now
   public static Instrumenter<OpenSearchRestRequest, Response> create(String instrumentationName) {
     OpenSearchRestAttributesGetter dbClientAttributesGetter = new OpenSearchRestAttributesGetter();
     OpenSearchRestNetResponseAttributesGetter netAttributesGetter =
@@ -27,12 +25,7 @@ public final class OpenSearchRestInstrumenterFactory {
             instrumentationName,
             DbClientSpanNameExtractor.create(dbClientAttributesGetter))
         .addAttributesExtractor(DbClientAttributesExtractor.create(dbClientAttributesGetter))
-        .addAttributesExtractor(
-            io.opentelemetry.instrumentation.api.instrumenter.net.NetClientAttributesExtractor
-                .create(netAttributesGetter))
-        .addAttributesExtractor(
-            PeerServiceAttributesExtractor.create(
-                netAttributesGetter, CommonConfig.get().getPeerServiceResolver()))
+        .addAttributesExtractor(NetworkAttributesExtractor.create(netAttributesGetter))
         .buildInstrumenter(SpanKindExtractor.alwaysClient());
   }
 

+ 2 - 25
instrumentation/opensearch/opensearch-rest-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opensearch/rest/OpenSearchRestNetResponseAttributesGetter.java

@@ -5,26 +5,15 @@
 
 package io.opentelemetry.javaagent.instrumentation.opensearch.rest;
 
+import io.opentelemetry.instrumentation.api.instrumenter.network.NetworkAttributesGetter;
 import java.net.Inet4Address;
 import java.net.Inet6Address;
 import java.net.InetAddress;
 import javax.annotation.Nullable;
 import org.opensearch.client.Response;
 
-@SuppressWarnings("deprecation") // have to use the deprecated Net*AttributesGetter for now
 final class OpenSearchRestNetResponseAttributesGetter
-    implements io.opentelemetry.instrumentation.api.instrumenter.net.NetClientAttributesGetter<
-        OpenSearchRestRequest, Response> {
-
-  @Nullable
-  @Override
-  public String getSockFamily(
-      OpenSearchRestRequest elasticsearchRestRequest, @Nullable Response response) {
-    if (response != null && response.getHost().getAddress() instanceof Inet6Address) {
-      return "inet6";
-    }
-    return null;
-  }
+    implements NetworkAttributesGetter<OpenSearchRestRequest, Response> {
 
   @Nullable
   @Override
@@ -41,18 +30,6 @@ final class OpenSearchRestNetResponseAttributesGetter
     return null;
   }
 
-  @Override
-  @Nullable
-  public String getServerAddress(OpenSearchRestRequest request) {
-    return null;
-  }
-
-  @Override
-  @Nullable
-  public Integer getServerPort(OpenSearchRestRequest request) {
-    return null;
-  }
-
   @Override
   @Nullable
   public String getNetworkPeerAddress(OpenSearchRestRequest request, @Nullable Response response) {

+ 1 - 1
instrumentation/pulsar/pulsar-2.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/pulsar/v2_8/telemetry/PulsarNetClientAttributesGetter.java

@@ -9,7 +9,7 @@ import io.opentelemetry.instrumentation.api.instrumenter.network.ServerAttribute
 import javax.annotation.Nullable;
 
 public final class PulsarNetClientAttributesGetter
-    implements ServerAttributesGetter<BasePulsarRequest, Void> {
+    implements ServerAttributesGetter<BasePulsarRequest> {
 
   @Nullable
   @Override

+ 1 - 1
instrumentation/r2dbc-1.0/library/src/main/java/io/opentelemetry/instrumentation/r2dbc/v1_0/internal/R2dbcNetAttributesGetter.java

@@ -12,7 +12,7 @@ import javax.annotation.Nullable;
  * This class is internal and is hence not for public use. Its APIs are unstable and can change at
  * any time.
  */
-public enum R2dbcNetAttributesGetter implements ServerAttributesGetter<DbExecution, Void> {
+public enum R2dbcNetAttributesGetter implements ServerAttributesGetter<DbExecution> {
   INSTANCE;
 
   @Nullable

+ 2 - 24
instrumentation/rabbitmq-2.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rabbitmq/RabbitChannelNetAttributesGetter.java

@@ -5,24 +5,14 @@
 
 package io.opentelemetry.javaagent.instrumentation.rabbitmq;
 
+import io.opentelemetry.instrumentation.api.instrumenter.network.NetworkAttributesGetter;
 import java.net.Inet4Address;
 import java.net.Inet6Address;
 import java.net.InetAddress;
 import javax.annotation.Nullable;
 
-@SuppressWarnings("deprecation") // have to use the deprecated Net*AttributesGetter for now
 public class RabbitChannelNetAttributesGetter
-    implements io.opentelemetry.instrumentation.api.instrumenter.net.NetClientAttributesGetter<
-        ChannelAndMethod, Void> {
-
-  @Nullable
-  @Override
-  public String getSockFamily(ChannelAndMethod channelAndMethod, @Nullable Void unused) {
-    if (channelAndMethod.getChannel().getConnection().getAddress() instanceof Inet6Address) {
-      return "inet6";
-    }
-    return null;
-  }
+    implements NetworkAttributesGetter<ChannelAndMethod, Void> {
 
   @Nullable
   @Override
@@ -36,18 +26,6 @@ public class RabbitChannelNetAttributesGetter
     return null;
   }
 
-  @Nullable
-  @Override
-  public String getServerAddress(ChannelAndMethod channelAndMethod) {
-    return null;
-  }
-
-  @Nullable
-  @Override
-  public Integer getServerPort(ChannelAndMethod channelAndMethod) {
-    return null;
-  }
-
   @Nullable
   @Override
   public String getNetworkPeerAddress(ChannelAndMethod channelAndMethod, @Nullable Void unused) {

+ 2 - 24
instrumentation/rabbitmq-2.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rabbitmq/RabbitReceiveNetAttributesGetter.java

@@ -6,24 +6,14 @@
 package io.opentelemetry.javaagent.instrumentation.rabbitmq;
 
 import com.rabbitmq.client.GetResponse;
+import io.opentelemetry.instrumentation.api.instrumenter.network.NetworkAttributesGetter;
 import java.net.Inet4Address;
 import java.net.Inet6Address;
 import java.net.InetAddress;
 import javax.annotation.Nullable;
 
-@SuppressWarnings("deprecation") // have to use the deprecated Net*AttributesGetter for now
 public class RabbitReceiveNetAttributesGetter
-    implements io.opentelemetry.instrumentation.api.instrumenter.net.NetClientAttributesGetter<
-        ReceiveRequest, GetResponse> {
-
-  @Nullable
-  @Override
-  public String getSockFamily(ReceiveRequest request, @Nullable GetResponse response) {
-    if (request.getConnection().getAddress() instanceof Inet6Address) {
-      return "inet6";
-    }
-    return null;
-  }
+    implements NetworkAttributesGetter<ReceiveRequest, GetResponse> {
 
   @Nullable
   @Override
@@ -37,18 +27,6 @@ public class RabbitReceiveNetAttributesGetter
     return null;
   }
 
-  @Nullable
-  @Override
-  public String getServerAddress(ReceiveRequest request) {
-    return null;
-  }
-
-  @Nullable
-  @Override
-  public Integer getServerPort(ReceiveRequest request) {
-    return null;
-  }
-
   @Nullable
   @Override
   public String getNetworkPeerAddress(ReceiveRequest request, @Nullable GetResponse response) {

+ 3 - 7
instrumentation/rabbitmq-2.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rabbitmq/RabbitSingletons.java

@@ -17,6 +17,7 @@ import io.opentelemetry.instrumentation.api.instrumenter.SpanKindExtractor;
 import io.opentelemetry.instrumentation.api.instrumenter.messaging.MessageOperation;
 import io.opentelemetry.instrumentation.api.instrumenter.messaging.MessagingAttributesExtractor;
 import io.opentelemetry.instrumentation.api.instrumenter.messaging.MessagingAttributesGetter;
+import io.opentelemetry.instrumentation.api.instrumenter.network.NetworkAttributesExtractor;
 import io.opentelemetry.instrumentation.api.internal.PropagatorBasedSpanLinksExtractor;
 import io.opentelemetry.javaagent.bootstrap.internal.ExperimentalConfig;
 import io.opentelemetry.javaagent.bootstrap.internal.InstrumentationConfig;
@@ -55,7 +56,6 @@ public final class RabbitSingletons {
     return deliverInstrumenter;
   }
 
-  @SuppressWarnings("deprecation") // have to use the deprecated Net*AttributesExtractor for now
   private static Instrumenter<ChannelAndMethod, Void> createChannelInstrumenter(boolean publish) {
     return Instrumenter.<ChannelAndMethod, Void>builder(
             GlobalOpenTelemetry.get(), instrumentationName, ChannelAndMethod::getMethod)
@@ -63,23 +63,19 @@ public final class RabbitSingletons {
             buildMessagingAttributesExtractor(
                 RabbitChannelAttributesGetter.INSTANCE, publish ? MessageOperation.PUBLISH : null))
         .addAttributesExtractor(
-            io.opentelemetry.instrumentation.api.instrumenter.net.NetClientAttributesExtractor
-                .create(new RabbitChannelNetAttributesGetter()))
+            NetworkAttributesExtractor.create(new RabbitChannelNetAttributesGetter()))
         .addContextCustomizer(
             (context, request, startAttributes) ->
                 context.with(CHANNEL_AND_METHOD_CONTEXT_KEY, new RabbitChannelAndMethodHolder()))
         .buildInstrumenter(channelAndMethod -> publish ? PRODUCER : CLIENT);
   }
 
-  @SuppressWarnings("deprecation") // have to use the deprecated Net*AttributesExtractor for now
   private static Instrumenter<ReceiveRequest, GetResponse> createReceiveInstrumenter() {
     List<AttributesExtractor<ReceiveRequest, GetResponse>> extractors = new ArrayList<>();
     extractors.add(
         buildMessagingAttributesExtractor(
             RabbitReceiveAttributesGetter.INSTANCE, MessageOperation.RECEIVE));
-    extractors.add(
-        io.opentelemetry.instrumentation.api.instrumenter.net.NetClientAttributesExtractor.create(
-            new RabbitReceiveNetAttributesGetter()));
+    extractors.add(NetworkAttributesExtractor.create(new RabbitReceiveNetAttributesGetter()));
     if (CAPTURE_EXPERIMENTAL_SPAN_ATTRIBUTES) {
       extractors.add(new RabbitReceiveExperimentalAttributesExtractor());
     }

+ 7 - 28
instrumentation/servlet/servlet-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/ServletRequestParametersExtractor.java

@@ -11,7 +11,6 @@ import io.opentelemetry.api.common.AttributeKey;
 import io.opentelemetry.api.common.AttributesBuilder;
 import io.opentelemetry.context.Context;
 import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor;
-import io.opentelemetry.instrumentation.api.internal.SemconvStability;
 import io.opentelemetry.javaagent.bootstrap.internal.InstrumentationConfig;
 import java.util.List;
 import java.util.Locale;
@@ -28,10 +27,8 @@ public class ServletRequestParametersExtractor<REQUEST, RESPONSE>
           .getList(
               "otel.instrumentation.servlet.experimental.capture-request-parameters", emptyList());
 
-  private static final ConcurrentMap<String, AttributeKey<List<String>>>
-      oldSemconvParameterKeysCache = new ConcurrentHashMap<>();
-  private static final ConcurrentMap<String, AttributeKey<List<String>>>
-      stableSemconvParameterKeysCache = new ConcurrentHashMap<>();
+  private static final ConcurrentMap<String, AttributeKey<List<String>>> parameterKeysCache =
+      new ConcurrentHashMap<>();
 
   private final ServletAccessor<REQUEST, RESPONSE> accessor;
 
@@ -48,12 +45,7 @@ public class ServletRequestParametersExtractor<REQUEST, RESPONSE>
     for (String name : CAPTURE_REQUEST_PARAMETERS) {
       List<String> values = accessor.getRequestParameterValues(request, name);
       if (!values.isEmpty()) {
-        if (SemconvStability.emitOldHttpSemconv()) {
-          consumer.accept(oldSemconvParameterAttributeKey(name), values);
-        }
-        if (SemconvStability.emitStableHttpSemconv()) {
-          consumer.accept(stableSemconvParameterAttributeKey(name), values);
-        }
+        consumer.accept(parameterAttributeKey(name), values);
       }
     }
   }
@@ -77,25 +69,12 @@ public class ServletRequestParametersExtractor<REQUEST, RESPONSE>
     setAttributes(request, attributes::put);
   }
 
-  private static AttributeKey<List<String>> oldSemconvParameterAttributeKey(String headerName) {
-    return oldSemconvParameterKeysCache.computeIfAbsent(
-        headerName, ServletRequestParametersExtractor::createOldSemconvKey);
+  private static AttributeKey<List<String>> parameterAttributeKey(String headerName) {
+    return parameterKeysCache.computeIfAbsent(
+        headerName, ServletRequestParametersExtractor::createKey);
   }
 
-  private static AttributeKey<List<String>> stableSemconvParameterAttributeKey(String headerName) {
-    return stableSemconvParameterKeysCache.computeIfAbsent(
-        headerName, ServletRequestParametersExtractor::createStableSemconvKey);
-  }
-
-  private static AttributeKey<List<String>> createOldSemconvKey(String parameterName) {
-    // normalize parameter name similarly as is done with header names when header values are
-    // captured as span attributes
-    parameterName = parameterName.toLowerCase(Locale.ROOT);
-    String key = "servlet.request.parameter." + parameterName.replace('-', '_');
-    return AttributeKey.stringArrayKey(key);
-  }
-
-  private static AttributeKey<List<String>> createStableSemconvKey(String parameterName) {
+  private static AttributeKey<List<String>> createKey(String parameterName) {
     // normalize parameter name similarly as is done with header names when header values are
     // captured as span attributes
     parameterName = parameterName.toLowerCase(Locale.ROOT);

+ 1 - 1
instrumentation/vertx/vertx-sql-client-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/v4_0/sql/VertxSqlClientNetAttributesGetter.java

@@ -9,7 +9,7 @@ import io.opentelemetry.instrumentation.api.instrumenter.network.ServerAttribute
 import javax.annotation.Nullable;
 
 public enum VertxSqlClientNetAttributesGetter
-    implements ServerAttributesGetter<VertxSqlClientRequest, Void> {
+    implements ServerAttributesGetter<VertxSqlClientRequest> {
   INSTANCE;
 
   @Nullable

+ 1 - 3
testing-common/src/main/groovy/io/opentelemetry/instrumentation/test/base/HttpClientTest.groovy

@@ -8,13 +8,12 @@ package io.opentelemetry.instrumentation.test.base
 import io.opentelemetry.api.common.AttributeKey
 import io.opentelemetry.api.trace.SpanId
 import io.opentelemetry.instrumentation.api.internal.HttpConstants
-import io.opentelemetry.instrumentation.api.internal.SemconvStability
 import io.opentelemetry.instrumentation.test.InstrumentationSpecification
 import io.opentelemetry.instrumentation.test.asserts.TraceAssert
 import io.opentelemetry.instrumentation.testing.junit.http.AbstractHttpClientTest
 import io.opentelemetry.instrumentation.testing.junit.http.HttpClientResult
-import io.opentelemetry.instrumentation.testing.junit.http.HttpClientTestServer
 import io.opentelemetry.instrumentation.testing.junit.http.HttpClientTestOptions
+import io.opentelemetry.instrumentation.testing.junit.http.HttpClientTestServer
 import io.opentelemetry.instrumentation.testing.junit.http.SingleConnection
 import io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions
 import io.opentelemetry.sdk.trace.data.SpanData
@@ -184,7 +183,6 @@ abstract class HttpClientTest<REQUEST> extends InstrumentationSpecification {
   }
 
   def "request with non-standard http method"() {
-    assumeTrue(SemconvStability.emitStableHttpSemconv())
     assumeTrue(testNonStandardHttpMethod())
     expect:
     junitTest.requestWithNonStandardHttpMethod()

+ 0 - 2
testing-common/src/main/groovy/io/opentelemetry/instrumentation/test/base/HttpServerTest.groovy

@@ -11,7 +11,6 @@ import io.opentelemetry.api.trace.SpanId
 import io.opentelemetry.api.trace.SpanKind
 import io.opentelemetry.instrumentation.api.instrumenter.network.internal.NetworkAttributes
 import io.opentelemetry.instrumentation.api.internal.HttpConstants
-import io.opentelemetry.instrumentation.api.internal.SemconvStability
 import io.opentelemetry.instrumentation.test.InstrumentationSpecification
 import io.opentelemetry.instrumentation.test.asserts.TraceAssert
 import io.opentelemetry.instrumentation.testing.GlobalTraceUtil
@@ -358,7 +357,6 @@ abstract class HttpServerTest<SERVER> extends InstrumentationSpecification imple
   }
 
   def "non standard http method"() {
-    assumeTrue(SemconvStability.emitStableHttpSemconv())
     assumeTrue(testNonStandardHttpMethod())
     expect:
     junitTest.requestWithNonStandardHttpMethod()

+ 4 - 14
testing-common/src/main/java/io/opentelemetry/instrumentation/testing/junit/http/AbstractHttpClientTest.java

@@ -19,7 +19,6 @@ import io.opentelemetry.api.trace.SpanKind;
 import io.opentelemetry.instrumentation.api.instrumenter.http.internal.HttpAttributes;
 import io.opentelemetry.instrumentation.api.instrumenter.network.internal.NetworkAttributes;
 import io.opentelemetry.instrumentation.api.internal.HttpConstants;
-import io.opentelemetry.instrumentation.api.internal.SemconvStability;
 import io.opentelemetry.instrumentation.test.utils.PortUtils;
 import io.opentelemetry.instrumentation.testing.InstrumentationTestRunner;
 import io.opentelemetry.sdk.testing.assertj.SpanDataAssert;
@@ -121,7 +120,7 @@ public abstract class AbstractHttpClientTest<REQUEST> implements HttpClientTypeA
 
   @Test
   void requestWithNonStandardHttpMethod() throws Exception {
-    assumeTrue(SemconvStability.emitStableHttpSemconv() && options.getTestNonStandardHttpMethod());
+    assumeTrue(options.getTestNonStandardHttpMethod());
 
     URI uri = resolveAddress("/success");
     String method = "TEST";
@@ -705,24 +704,15 @@ public abstract class AbstractHttpClientTest<REQUEST> implements HttpClientTypeA
               span -> assertServerSpan(span).hasParent(trace.getSpan(0)));
         });
 
-    String durationInstrumentName =
-        SemconvStability.emitStableHttpSemconv()
-            ? "http.client.request.duration"
-            : "http.client.duration";
-    String durationInstrumentDescription =
-        SemconvStability.emitStableHttpSemconv()
-            ? "Duration of HTTP client requests."
-            : "The duration of the outbound HTTP request";
-
     testing.waitAndAssertMetrics(
         instrumentationName.get(),
-        durationInstrumentName,
+        "http.client.request.duration",
         metrics ->
             metrics.anySatisfy(
                 metric ->
                     assertThat(metric)
-                        .hasDescription(durationInstrumentDescription)
-                        .hasUnit(SemconvStability.emitStableHttpSemconv() ? "s" : "ms")
+                        .hasDescription("Duration of HTTP client requests.")
+                        .hasUnit("s")
                         .hasHistogramSatisfying(
                             histogram ->
                                 histogram.hasPointsSatisfying(

+ 3 - 14
testing-common/src/main/java/io/opentelemetry/instrumentation/testing/junit/http/AbstractHttpServerTest.java

@@ -29,7 +29,6 @@ import io.opentelemetry.context.propagation.TextMapSetter;
 import io.opentelemetry.instrumentation.api.instrumenter.http.internal.HttpAttributes;
 import io.opentelemetry.instrumentation.api.instrumenter.network.internal.NetworkAttributes;
 import io.opentelemetry.instrumentation.api.internal.HttpConstants;
-import io.opentelemetry.instrumentation.api.internal.SemconvStability;
 import io.opentelemetry.instrumentation.testing.GlobalTraceUtil;
 import io.opentelemetry.sdk.testing.assertj.SpanDataAssert;
 import io.opentelemetry.sdk.testing.assertj.TraceAssert;
@@ -343,28 +342,19 @@ public abstract class AbstractHttpServerTest<SERVER> extends AbstractHttpServerU
               spanData -> assertServerSpan(assertThat(spanData), method, SUCCESS, SUCCESS.status));
         });
 
-    String durationInstrumentName =
-        SemconvStability.emitStableHttpSemconv()
-            ? "http.server.request.duration"
-            : "http.server.duration";
-    String durationInstrumentDescription =
-        SemconvStability.emitStableHttpSemconv()
-            ? "Duration of HTTP server requests."
-            : "The duration of the inbound HTTP request";
-
     String metricsInstrumentationName = options.metricsInstrumentationName.get();
     if (metricsInstrumentationName == null) {
       metricsInstrumentationName = instrumentationName.get();
     }
     testing.waitAndAssertMetrics(
         metricsInstrumentationName,
-        durationInstrumentName,
+        "http.server.request.duration",
         metrics ->
             metrics.anySatisfy(
                 metric ->
                     assertThat(metric)
-                        .hasDescription(durationInstrumentDescription)
-                        .hasUnit(SemconvStability.emitStableHttpSemconv() ? "s" : "ms")
+                        .hasDescription("Duration of HTTP server requests.")
+                        .hasUnit("s")
                         .hasHistogramSatisfying(
                             histogram ->
                                 histogram.hasPointsSatisfying(
@@ -485,7 +475,6 @@ public abstract class AbstractHttpServerTest<SERVER> extends AbstractHttpServerU
 
   @Test
   void requestWithNonStandardHttpMethod() throws InterruptedException {
-    assumeTrue(SemconvStability.emitStableHttpSemconv());
     assumeTrue(options.testNonStandardHttpMethod);
 
     EventLoopGroup eventLoopGroup = new NioEventLoopGroup();