From 1d176a8726524a2b0984c192373ca4eb3278a550 Mon Sep 17 00:00:00 2001 From: Jason Plumb Date: Mon, 29 Jan 2024 13:51:48 -0800 Subject: [PATCH 1/5] remove deprecated config properties now that 2.0.0 is out --- .../kafkaclients/v0_11/KafkaSingletons.java | 8 +-- .../v4_0/client/NettyClientSingletons.java | 21 +++----- .../netty/v4_1/NettyClientSingletons.java | 21 +++----- .../v1_0/ReactorNettySingletons.java | 15 ++---- .../bootstrap/internal/CommonConfig.java | 33 +++--------- .../internal/DeprecatedConfigProperties.java | 50 ------------------- .../internal/InstrumentationConfig.java | 10 ++++ 7 files changed, 33 insertions(+), 125 deletions(-) delete mode 100644 javaagent-extension-api/src/main/java/io/opentelemetry/javaagent/bootstrap/internal/DeprecatedConfigProperties.java diff --git a/instrumentation/kafka/kafka-clients/kafka-clients-0.11/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/kafkaclients/v0_11/KafkaSingletons.java b/instrumentation/kafka/kafka-clients/kafka-clients-0.11/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/kafkaclients/v0_11/KafkaSingletons.java index 1d3a4f036845..736b28ab1eae 100644 --- a/instrumentation/kafka/kafka-clients/kafka-clients-0.11/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/kafkaclients/v0_11/KafkaSingletons.java +++ b/instrumentation/kafka/kafka-clients/kafka-clients-0.11/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/kafkaclients/v0_11/KafkaSingletons.java @@ -11,7 +11,6 @@ import io.opentelemetry.instrumentation.kafka.internal.KafkaProcessRequest; import io.opentelemetry.instrumentation.kafka.internal.KafkaProducerRequest; import io.opentelemetry.instrumentation.kafka.internal.KafkaReceiveRequest; -import io.opentelemetry.javaagent.bootstrap.internal.DeprecatedConfigProperties; import io.opentelemetry.javaagent.bootstrap.internal.ExperimentalConfig; import io.opentelemetry.javaagent.bootstrap.internal.InstrumentationConfig; import org.apache.kafka.clients.producer.RecordMetadata; @@ -20,11 +19,8 @@ public final class KafkaSingletons { private static final String INSTRUMENTATION_NAME = "io.opentelemetry.kafka-clients-0.11"; private static final boolean PRODUCER_PROPAGATION_ENABLED = - DeprecatedConfigProperties.getBoolean( - InstrumentationConfig.get(), - "otel.instrumentation.kafka.client-propagation.enabled", - "otel.instrumentation.kafka.producer-propagation.enabled", - true); + InstrumentationConfig.get() + .getBoolean("otel.instrumentation.kafka.producer-propagation.enabled", true); private static final Instrumenter PRODUCER_INSTRUMENTER; private static final Instrumenter CONSUMER_RECEIVE_INSTRUMENTER; diff --git a/instrumentation/netty/netty-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4_0/client/NettyClientSingletons.java b/instrumentation/netty/netty-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4_0/client/NettyClientSingletons.java index 091eb61028c9..30dea16b42e1 100644 --- a/instrumentation/netty/netty-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4_0/client/NettyClientSingletons.java +++ b/instrumentation/netty/netty-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4_0/client/NettyClientSingletons.java @@ -15,26 +15,17 @@ import io.opentelemetry.instrumentation.netty.v4.common.internal.client.NettyConnectionInstrumenter; import io.opentelemetry.instrumentation.netty.v4.common.internal.client.NettySslInstrumenter; import io.opentelemetry.javaagent.bootstrap.internal.CommonConfig; -import io.opentelemetry.javaagent.bootstrap.internal.DeprecatedConfigProperties; import io.opentelemetry.javaagent.bootstrap.internal.InstrumentationConfig; import java.util.Collections; public final class NettyClientSingletons { - private static final boolean connectionTelemetryEnabled; - private static final boolean sslTelemetryEnabled; - - static { - InstrumentationConfig config = InstrumentationConfig.get(); - connectionTelemetryEnabled = - DeprecatedConfigProperties.getBoolean( - config, - "otel.instrumentation.netty.always-create-connect-span", - "otel.instrumentation.netty.connection-telemetry.enabled", - false); - sslTelemetryEnabled = - config.getBoolean("otel.instrumentation.netty.ssl-telemetry.enabled", false); - } + private static final boolean connectionTelemetryEnabled = + InstrumentationConfig.get() + .getBoolean("otel.instrumentation.netty.connection-telemetry.enabled", false); + private static final boolean sslTelemetryEnabled = + InstrumentationConfig.get() + .getBoolean("otel.instrumentation.netty.ssl-telemetry.enabled", false); private static final Instrumenter INSTRUMENTER; private static final NettyConnectionInstrumenter CONNECTION_INSTRUMENTER; diff --git a/instrumentation/netty/netty-4.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4_1/NettyClientSingletons.java b/instrumentation/netty/netty-4.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4_1/NettyClientSingletons.java index 409cfaebc4a1..aba4e275aa35 100644 --- a/instrumentation/netty/netty-4.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4_1/NettyClientSingletons.java +++ b/instrumentation/netty/netty-4.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4_1/NettyClientSingletons.java @@ -15,26 +15,17 @@ import io.opentelemetry.instrumentation.netty.v4.common.internal.client.NettyConnectionInstrumenter; import io.opentelemetry.instrumentation.netty.v4.common.internal.client.NettySslInstrumenter; import io.opentelemetry.javaagent.bootstrap.internal.CommonConfig; -import io.opentelemetry.javaagent.bootstrap.internal.DeprecatedConfigProperties; import io.opentelemetry.javaagent.bootstrap.internal.InstrumentationConfig; import java.util.Collections; public final class NettyClientSingletons { - private static final boolean connectionTelemetryEnabled; - private static final boolean sslTelemetryEnabled; - - static { - InstrumentationConfig config = InstrumentationConfig.get(); - connectionTelemetryEnabled = - DeprecatedConfigProperties.getBoolean( - config, - "otel.instrumentation.netty.always-create-connect-span", - "otel.instrumentation.netty.connection-telemetry.enabled", - false); - sslTelemetryEnabled = - config.getBoolean("otel.instrumentation.netty.ssl-telemetry.enabled", false); - } + private static final boolean connectionTelemetryEnabled = + InstrumentationConfig.get() + .getBoolean("otel.instrumentation.netty.connection-telemetry.enabled", false); + private static final boolean sslTelemetryEnabled = + InstrumentationConfig.get() + .getBoolean("otel.instrumentation.netty.ssl-telemetry.enabled", false); private static final Instrumenter INSTRUMENTER; private static final NettyConnectionInstrumenter CONNECTION_INSTRUMENTER; diff --git a/instrumentation/reactor/reactor-netty/reactor-netty-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/ReactorNettySingletons.java b/instrumentation/reactor/reactor-netty/reactor-netty-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/ReactorNettySingletons.java index 268b6002141b..5087235c26dd 100644 --- a/instrumentation/reactor/reactor-netty/reactor-netty-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/ReactorNettySingletons.java +++ b/instrumentation/reactor/reactor-netty/reactor-netty-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/ReactorNettySingletons.java @@ -19,7 +19,6 @@ import io.opentelemetry.instrumentation.netty.v4.common.internal.client.NettyConnectionInstrumentationFlag; import io.opentelemetry.instrumentation.netty.v4.common.internal.client.NettyConnectionInstrumenter; import io.opentelemetry.javaagent.bootstrap.internal.CommonConfig; -import io.opentelemetry.javaagent.bootstrap.internal.DeprecatedConfigProperties; import io.opentelemetry.javaagent.bootstrap.internal.InstrumentationConfig; import reactor.netty.http.client.HttpClientRequest; import reactor.netty.http.client.HttpClientResponse; @@ -28,17 +27,9 @@ public final class ReactorNettySingletons { private static final String INSTRUMENTATION_NAME = "io.opentelemetry.reactor-netty-1.0"; - private static final boolean connectionTelemetryEnabled; - - static { - InstrumentationConfig config = InstrumentationConfig.get(); - connectionTelemetryEnabled = - DeprecatedConfigProperties.getBoolean( - config, - "otel.instrumentation.reactor-netty.always-create-connect-span", - "otel.instrumentation.reactor-netty.connection-telemetry.enabled", - false); - } + private static final boolean connectionTelemetryEnabled = + InstrumentationConfig.get() + .getBoolean("otel.instrumentation.reactor-netty.connection-telemetry.enabled", false); private static final Instrumenter INSTRUMENTER; private static final NettyConnectionInstrumenter CONNECTION_INSTRUMENTER; diff --git a/javaagent-extension-api/src/main/java/io/opentelemetry/javaagent/bootstrap/internal/CommonConfig.java b/javaagent-extension-api/src/main/java/io/opentelemetry/javaagent/bootstrap/internal/CommonConfig.java index 36e2f64d1b5f..000a39608609 100644 --- a/javaagent-extension-api/src/main/java/io/opentelemetry/javaagent/bootstrap/internal/CommonConfig.java +++ b/javaagent-extension-api/src/main/java/io/opentelemetry/javaagent/bootstrap/internal/CommonConfig.java @@ -42,27 +42,14 @@ public static CommonConfig get() { PeerServiceResolver.create( config.getMap("otel.instrumentation.common.peer-service-mapping", emptyMap())); - // TODO (mateusz): remove the old config names in 2.0 clientRequestHeaders = - DeprecatedConfigProperties.getList( - config, - "otel.instrumentation.http.capture-headers.client.request", - "otel.instrumentation.http.client.capture-request-headers"); + config.getList("otel.instrumentation.http.client.capture-request-headers"); clientResponseHeaders = - DeprecatedConfigProperties.getList( - config, - "otel.instrumentation.http.capture-headers.client.response", - "otel.instrumentation.http.client.capture-response-headers"); + config.getList("otel.instrumentation.http.client.capture-response-headers"); serverRequestHeaders = - DeprecatedConfigProperties.getList( - config, - "otel.instrumentation.http.capture-headers.server.request", - "otel.instrumentation.http.server.capture-request-headers"); + config.getList("otel.instrumentation.http.server.capture-request-headers"); serverResponseHeaders = - DeprecatedConfigProperties.getList( - config, - "otel.instrumentation.http.capture-headers.server.response", - "otel.instrumentation.http.server.capture-response-headers"); + config.getList("otel.instrumentation.http.server.capture-response-headers"); knownHttpRequestMethods = new HashSet<>( config.getList( @@ -71,17 +58,9 @@ public static CommonConfig get() { statementSanitizationEnabled = config.getBoolean("otel.instrumentation.common.db-statement-sanitizer.enabled", true); emitExperimentalHttpClientTelemetry = - DeprecatedConfigProperties.getBoolean( - config, - "otel.instrumentation.http.client.emit-experimental-metrics", - "otel.instrumentation.http.client.emit-experimental-telemetry", - false); + config.getBoolean("otel.instrumentation.http.client.emit-experimental-telemetry", false); emitExperimentalHttpServerTelemetry = - DeprecatedConfigProperties.getBoolean( - config, - "otel.instrumentation.http.server.emit-experimental-metrics", - "otel.instrumentation.http.server.emit-experimental-telemetry", - false); + config.getBoolean("otel.instrumentation.http.server.emit-experimental-telemetry", false); enduserConfig = new EnduserConfig(config); } diff --git a/javaagent-extension-api/src/main/java/io/opentelemetry/javaagent/bootstrap/internal/DeprecatedConfigProperties.java b/javaagent-extension-api/src/main/java/io/opentelemetry/javaagent/bootstrap/internal/DeprecatedConfigProperties.java deleted file mode 100644 index f32a5d796273..000000000000 --- a/javaagent-extension-api/src/main/java/io/opentelemetry/javaagent/bootstrap/internal/DeprecatedConfigProperties.java +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.javaagent.bootstrap.internal; - -import static java.util.Collections.emptyList; -import static java.util.logging.Level.WARNING; - -import java.util.List; -import java.util.logging.Logger; - -/** - * This class is internal and is hence not for public use. Its APIs are unstable and can change at - * any time. - */ -public final class DeprecatedConfigProperties { - - private static final Logger logger = Logger.getLogger(DeprecatedConfigProperties.class.getName()); - - public static boolean getBoolean( - InstrumentationConfig config, - String deprecatedPropertyName, - String newPropertyName, - boolean defaultValue) { - warnIfUsed(config, deprecatedPropertyName, newPropertyName); - boolean value = config.getBoolean(deprecatedPropertyName, defaultValue); - return config.getBoolean(newPropertyName, value); - } - - public static List getList( - InstrumentationConfig config, String deprecatedPropertyName, String newPropertyName) { - warnIfUsed(config, deprecatedPropertyName, newPropertyName); - List value = config.getList(deprecatedPropertyName, emptyList()); - return config.getList(newPropertyName, value); - } - - private static void warnIfUsed( - InstrumentationConfig config, String deprecatedPropertyName, String newPropertyName) { - if (config.getString(deprecatedPropertyName) != null) { - logger.log( - WARNING, - "Deprecated property \"{0}\" was used; use the \"{1}\" property instead", - new Object[] {deprecatedPropertyName, newPropertyName}); - } - } - - private DeprecatedConfigProperties() {} -} diff --git a/javaagent-extension-api/src/main/java/io/opentelemetry/javaagent/bootstrap/internal/InstrumentationConfig.java b/javaagent-extension-api/src/main/java/io/opentelemetry/javaagent/bootstrap/internal/InstrumentationConfig.java index f0601f423662..ddd884062dc2 100644 --- a/javaagent-extension-api/src/main/java/io/opentelemetry/javaagent/bootstrap/internal/InstrumentationConfig.java +++ b/javaagent-extension-api/src/main/java/io/opentelemetry/javaagent/bootstrap/internal/InstrumentationConfig.java @@ -5,6 +5,7 @@ package io.opentelemetry.javaagent.bootstrap.internal; +import static java.util.Collections.emptyList; import static java.util.Objects.requireNonNull; import java.time.Duration; @@ -114,6 +115,15 @@ public static InstrumentationConfig get() { */ public abstract Duration getDuration(String name, Duration defaultValue); + /** + * This is the same as calling {@code getList(String, List)} with the defaultValue equal to the + * emptyList()/ + */ + public List getList(String name) { + return getList(name, emptyList()); + } + ; + /** * Returns a list-valued configuration property or {@code defaultValue} if a property with name * {@code name} has not been configured. The format of the original value must be comma-separated, From f4ddc2184a93b748a4f6e0524015454ac4cd2650 Mon Sep 17 00:00:00 2001 From: Jason Plumb Date: Mon, 29 Jan 2024 13:58:17 -0800 Subject: [PATCH 2/5] update changelog --- CHANGELOG.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 31764c37ae62..38e8c8081612 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,24 @@ ## Unreleased +- Remove deprecated config properties in favor of the new names (#10349): + - `otel.instrumentation.kafka.client-propagation.enabled` -> + `otel.instrumentation.kafka.producer-propagation.enabled` + - `otel.instrumentation.netty.always-create-connect-span` -> + `otel.instrumentation.netty.connection-telemetry.enabled` + - `otel.instrumentation.http.capture-headers.client.request` -> + `otel.instrumentation.http.client.capture-request-headers` + - `otel.instrumentation.http.capture-headers.client.response` -> + `otel.instrumentation.http.client.capture-response-headers` + - `otel.instrumentation.http.capture-headers.server.request` -> + `otel.instrumentation.http.server.capture-request-headers` + - `otel.instrumentation.http.capture-headers.server.response` -> + `otel.instrumentation.http.server.capture-response-headers` + - `otel.instrumentation.http.client.emit-experimental-metrics` -> + `otel.instrumentation.http.client.emit-experimental-telemetry` + - `otel.instrumentation.http.server.emit-experimental-metrics` -> + `otel.instrumentation.http.server.emit-experimental-telemetry` + ## Version 2.0.0 (2024-01-12) The 2.0.0 release contains significant breaking changes that will most likely affect all users, From 5753d561d9ff8a50210bf437252fbfbceab163a4 Mon Sep 17 00:00:00 2001 From: Jason Plumb Date: Mon, 29 Jan 2024 14:17:41 -0800 Subject: [PATCH 3/5] remove stray --- .../javaagent/bootstrap/internal/InstrumentationConfig.java | 1 - 1 file changed, 1 deletion(-) diff --git a/javaagent-extension-api/src/main/java/io/opentelemetry/javaagent/bootstrap/internal/InstrumentationConfig.java b/javaagent-extension-api/src/main/java/io/opentelemetry/javaagent/bootstrap/internal/InstrumentationConfig.java index ddd884062dc2..fc4b7aabc6c2 100644 --- a/javaagent-extension-api/src/main/java/io/opentelemetry/javaagent/bootstrap/internal/InstrumentationConfig.java +++ b/javaagent-extension-api/src/main/java/io/opentelemetry/javaagent/bootstrap/internal/InstrumentationConfig.java @@ -122,7 +122,6 @@ public static InstrumentationConfig get() { public List getList(String name) { return getList(name, emptyList()); } - ; /** * Returns a list-valued configuration property or {@code defaultValue} if a property with name From b04838c7688fce76cd578f0a52f15987b2c5c5fa Mon Sep 17 00:00:00 2001 From: Jason Plumb Date: Tue, 30 Jan 2024 15:21:34 -0800 Subject: [PATCH 4/5] restore handy utility class that may or may not be used. --- .../internal/DeprecatedConfigProperties.java | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 javaagent-extension-api/src/main/java/io/opentelemetry/javaagent/bootstrap/internal/DeprecatedConfigProperties.java diff --git a/javaagent-extension-api/src/main/java/io/opentelemetry/javaagent/bootstrap/internal/DeprecatedConfigProperties.java b/javaagent-extension-api/src/main/java/io/opentelemetry/javaagent/bootstrap/internal/DeprecatedConfigProperties.java new file mode 100644 index 000000000000..002bf787c99c --- /dev/null +++ b/javaagent-extension-api/src/main/java/io/opentelemetry/javaagent/bootstrap/internal/DeprecatedConfigProperties.java @@ -0,0 +1,51 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.bootstrap.internal; + +import static java.util.Collections.emptyList; +import static java.util.logging.Level.WARNING; + +import java.util.List; +import java.util.logging.Logger; + +/** + * This class is internal and is hence not for public use. Its APIs are unstable and can change at + * any time. + */ +@SuppressWarnings("unused") +public final class DeprecatedConfigProperties { + + private static final Logger logger = Logger.getLogger(DeprecatedConfigProperties.class.getName()); + + public static boolean getBoolean( + InstrumentationConfig config, + String deprecatedPropertyName, + String newPropertyName, + boolean defaultValue) { + warnIfUsed(config, deprecatedPropertyName, newPropertyName); + boolean value = config.getBoolean(deprecatedPropertyName, defaultValue); + return config.getBoolean(newPropertyName, value); + } + + public static List getList( + InstrumentationConfig config, String deprecatedPropertyName, String newPropertyName) { + warnIfUsed(config, deprecatedPropertyName, newPropertyName); + List value = config.getList(deprecatedPropertyName, emptyList()); + return config.getList(newPropertyName, value); + } + + private static void warnIfUsed( + InstrumentationConfig config, String deprecatedPropertyName, String newPropertyName) { + if (config.getString(deprecatedPropertyName) != null) { + logger.log( + WARNING, + "Deprecated property \"{0}\" was used; use the \"{1}\" property instead", + new Object[] {deprecatedPropertyName, newPropertyName}); + } + } + + private DeprecatedConfigProperties() {} +} From fd2f58222f10002c98c07a9f05c772167b81b798 Mon Sep 17 00:00:00 2001 From: Jason Plumb Date: Tue, 30 Jan 2024 15:21:48 -0800 Subject: [PATCH 5/5] update property name --- instrumentation/kafka/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/instrumentation/kafka/README.md b/instrumentation/kafka/README.md index 618982fe19b7..858a8bd8c671 100644 --- a/instrumentation/kafka/README.md +++ b/instrumentation/kafka/README.md @@ -3,5 +3,5 @@ | System property | Type | Default | Description | |-----------------------------------------------------------| ------- |---------|--------------------------------------------------------------------------------------------------------------------------------| | `otel.instrumentation.kafka.experimental-span-attributes` | Boolean | `false` | Enable the capture of experimental span attributes. | -| `otel.instrumentation.kafka.client-propagation.enabled` | Boolean | `true` | Enable context propagation for kafka message producer. | +| `otel.instrumentation.kafka.producer-propagation.enabled` | Boolean | `true` | Enable context propagation for kafka message producer. | | `otel.instrumentation.kafka.metric-reporter.enabled` | Boolean | `true` | Enable kafka consumer and producer metrics. **Deprecated**, disable instrumentation with name `kafka-clients-metrics` instead. |