Skip to content

Commit c94df32

Browse files
committed
Merge branch 'main' into temporary-prefixes-nats
2 parents 281c5a3 + 34de98e commit c94df32

File tree

99 files changed

+512
-916
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

99 files changed

+512
-916
lines changed

declarative-config-bridge/src/main/java/io/opentelemetry/instrumentation/config/bridge/ConfigPropertiesBackedDeclarativeConfigProperties.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,11 @@ public final class ConfigPropertiesBackedDeclarativeConfigProperties
8484
// renaming to avoid top level config
8585
SPECIAL_MAPPINGS.put(
8686
"java.servlet.javascript_snippet/development", "otel.experimental.javascript-snippet");
87+
// jmx properties don't have an "instrumentation" segment
88+
SPECIAL_MAPPINGS.put("java.jmx.enabled", "otel.jmx.enabled");
89+
SPECIAL_MAPPINGS.put("java.jmx.config", "otel.jmx.config");
90+
SPECIAL_MAPPINGS.put("java.jmx.discovery.delay", "otel.jmx.discovery.delay");
91+
SPECIAL_MAPPINGS.put("java.jmx.target_system", "otel.jmx.target.system");
8792
}
8893

8994
private final ConfigProperties configProperties;
@@ -210,11 +215,6 @@ private String resolvePropertyKey(String name) {
210215
return "otel.java" + translated;
211216
}
212217

213-
// Handle jmx prefix: java.jmx.* → otel.jmx.*
214-
if (translated.startsWith("jmx.")) {
215-
return "otel." + translated;
216-
}
217-
218218
// Standard mapping
219219
return "otel.instrumentation." + translated;
220220
}

examples/extension/src/main/java/com/example/javaagent/DemoIgnoredTypesConfigurer.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
import com.google.auto.service.AutoService;
99
import io.opentelemetry.javaagent.extension.ignore.IgnoredTypesBuilder;
1010
import io.opentelemetry.javaagent.extension.ignore.IgnoredTypesConfigurer;
11-
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
1211

1312
/**
1413
* Custom {@link IgnoredTypesConfigurer} which exists currently only to verify correct shading.
@@ -19,5 +18,5 @@
1918
public class DemoIgnoredTypesConfigurer implements IgnoredTypesConfigurer {
2019

2120
@Override
22-
public void configure(IgnoredTypesBuilder builder, ConfigProperties config) {}
21+
public void configure(IgnoredTypesBuilder builder) {}
2322
}

instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/InstrumenterBuilder.java

Lines changed: 13 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,6 @@
5151
public final class InstrumenterBuilder<REQUEST, RESPONSE> {
5252

5353
private static final Logger logger = Logger.getLogger(InstrumenterBuilder.class.getName());
54-
private static final boolean supportsDeclarativeConfig = supportsDeclarativeConfig();
5554

5655
final OpenTelemetry openTelemetry;
5756
final String instrumentationName;
@@ -75,20 +74,6 @@ public final class InstrumenterBuilder<REQUEST, RESPONSE> {
7574
boolean propagateOperationListenersToOnEnd = false;
7675
boolean enabled = true;
7776

78-
private static boolean supportsDeclarativeConfig() {
79-
try {
80-
Class.forName("io.opentelemetry.api.incubator.ExtendedOpenTelemetry");
81-
return true;
82-
} catch (ClassNotFoundException e) {
83-
// The incubator module is not available.
84-
// This only happens in OpenTelemetry API instrumentation tests, where an older version of
85-
// OpenTelemetry API is used that does not have ExtendedOpenTelemetry.
86-
// Having the incubator module without ExtendedOpenTelemetry class should still return false
87-
// for those tests to avoid a ClassNotFoundException.
88-
return false;
89-
}
90-
}
91-
9277
static {
9378
Experimental.internalAddOperationListenerAttributesExtractor(
9479
(builder, operationListenerAttributesExtractor) ->
@@ -394,21 +379,23 @@ SpanSuppressor buildSpanSuppressor() {
394379
@Nullable
395380
private String getSpanSuppressionStrategy() {
396381
// we cannot use DeclarativeConfigUtil here because it's not available in instrumentation-api
397-
if (maybeDeclarativeConfig(openTelemetry)) {
382+
DeclarativeConfigProperties commonConfig = empty();
383+
if (openTelemetry instanceof ExtendedOpenTelemetry) {
398384
DeclarativeConfigProperties instrumentationConfig =
399385
((ExtendedOpenTelemetry) openTelemetry).getConfigProvider().getInstrumentationConfig();
400-
if (instrumentationConfig == null) {
401-
return null;
386+
if (instrumentationConfig != null) {
387+
commonConfig =
388+
instrumentationConfig.getStructured("java", empty()).getStructured("common", empty());
402389
}
403-
404-
return instrumentationConfig
405-
.getStructured("java", empty())
406-
.getStructured("common", empty())
407-
.getString("span_suppression_strategy/development");
408-
} else {
409-
return ConfigPropertiesUtil.getString(
410-
"otel.instrumentation.experimental.span-suppression-strategy");
411390
}
391+
String experimentalOverride =
392+
ConfigPropertiesUtil.getString(
393+
"otel.instrumentation.experimental.span-suppression-strategy");
394+
String result =
395+
commonConfig.getString(
396+
"span_suppression_strategy/development",
397+
experimentalOverride == null ? "" : experimentalOverride);
398+
return result.isEmpty() ? null : result;
412399
}
413400

414401
private Set<SpanKey> getSpanKeysFromAttributesExtractors() {
@@ -488,15 +475,6 @@ public void setSpanStatusExtractorCustomizer(
488475
}
489476
}
490477

491-
/**
492-
* Returns true if the current classpath supports declarative config and the instance may support
493-
* declarative config (the agent implements ExtendedOpenTelemetry even when declarative config
494-
* isn't used).
495-
*/
496-
private static boolean maybeDeclarativeConfig(OpenTelemetry openTelemetry) {
497-
return supportsDeclarativeConfig && openTelemetry instanceof ExtendedOpenTelemetry;
498-
}
499-
500478
private interface InstrumenterConstructor<RQ, RS> {
501479
Instrumenter<RQ, RS> create(InstrumenterBuilder<RQ, RS> builder);
502480

instrumentation/akka/akka-actor-2.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/akkaactor/AkkaIgnoredTypesConfigurer.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,12 @@
88
import com.google.auto.service.AutoService;
99
import io.opentelemetry.javaagent.extension.ignore.IgnoredTypesBuilder;
1010
import io.opentelemetry.javaagent.extension.ignore.IgnoredTypesConfigurer;
11-
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
1211

1312
@AutoService(IgnoredTypesConfigurer.class)
1413
public class AkkaIgnoredTypesConfigurer implements IgnoredTypesConfigurer {
1514

1615
@Override
17-
public void configure(IgnoredTypesBuilder builder, ConfigProperties config) {
16+
public void configure(IgnoredTypesBuilder builder) {
1817
// This is a Mailbox created by akka.dispatch.Dispatcher#createMailbox. We must not add
1918
// a context to it as context should only be carried by individual envelopes in the queue
2019
// of this mailbox.

instrumentation/akka/akka-http-10.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/akkahttp/server/AkkaServerIgnoredTypesConfigurer.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,12 @@
88
import com.google.auto.service.AutoService;
99
import io.opentelemetry.javaagent.extension.ignore.IgnoredTypesBuilder;
1010
import io.opentelemetry.javaagent.extension.ignore.IgnoredTypesConfigurer;
11-
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
1211

1312
@AutoService(IgnoredTypesConfigurer.class)
1413
public class AkkaServerIgnoredTypesConfigurer implements IgnoredTypesConfigurer {
1514

1615
@Override
17-
public void configure(IgnoredTypesBuilder builder, ConfigProperties config) {
16+
public void configure(IgnoredTypesBuilder builder) {
1817
// in AkkaHttpServerInstrumentationTestAsync http pipeline test sending this message trigger
1918
// processing next request, we don't want to propagate context there
2019
builder.ignoreTaskClass("akka.stream.impl.fusing.ActorGraphInterpreter$AsyncInput");

instrumentation/aws-lambda/aws-lambda-core-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/awslambdacore/v1_0/AwsLambdaSingletons.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@
66
package io.opentelemetry.javaagent.instrumentation.awslambdacore.v1_0;
77

88
import io.opentelemetry.api.GlobalOpenTelemetry;
9+
import io.opentelemetry.instrumentation.api.incubator.config.internal.DeclarativeConfigUtil;
910
import io.opentelemetry.instrumentation.awslambdacore.v1_0.internal.AwsLambdaFunctionInstrumenter;
1011
import io.opentelemetry.instrumentation.awslambdacore.v1_0.internal.AwsLambdaFunctionInstrumenterFactory;
1112
import io.opentelemetry.instrumentation.awslambdacore.v1_0.internal.WrapperConfiguration;
12-
import io.opentelemetry.javaagent.bootstrap.internal.AgentInstrumentationConfig;
1313
import java.time.Duration;
1414

1515
public final class AwsLambdaSingletons {
@@ -18,9 +18,9 @@ public final class AwsLambdaSingletons {
1818
AwsLambdaFunctionInstrumenterFactory.createInstrumenter(GlobalOpenTelemetry.get());
1919
private static final Duration FLUSH_TIMEOUT =
2020
Duration.ofMillis(
21-
AgentInstrumentationConfig.get()
21+
DeclarativeConfigUtil.getInstrumentationConfig(GlobalOpenTelemetry.get(), "aws_lambda")
2222
.getLong(
23-
"otel.instrumentation.aws-lambda.flush-timeout",
23+
"flush_timeout",
2424
WrapperConfiguration.OTEL_LAMBDA_FLUSH_TIMEOUT_DEFAULT.toMillis()));
2525

2626
public static AwsLambdaFunctionInstrumenter functionInstrumenter() {

instrumentation/aws-lambda/aws-lambda-events-2.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/awslambdaevents/v2_2/AwsLambdaSingletons.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,13 @@
77

88
import com.amazonaws.services.lambda.runtime.events.SQSEvent;
99
import io.opentelemetry.api.GlobalOpenTelemetry;
10+
import io.opentelemetry.instrumentation.api.incubator.config.internal.DeclarativeConfigUtil;
1011
import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter;
1112
import io.opentelemetry.instrumentation.awslambdacore.v1_0.internal.AwsLambdaFunctionInstrumenter;
1213
import io.opentelemetry.instrumentation.awslambdacore.v1_0.internal.WrapperConfiguration;
1314
import io.opentelemetry.instrumentation.awslambdaevents.common.v2_2.internal.AwsLambdaEventsInstrumenterFactory;
1415
import io.opentelemetry.instrumentation.awslambdaevents.common.v2_2.internal.AwsLambdaSqsInstrumenterFactory;
1516
import io.opentelemetry.javaagent.bootstrap.internal.AgentCommonConfig;
16-
import io.opentelemetry.javaagent.bootstrap.internal.AgentInstrumentationConfig;
1717
import java.time.Duration;
1818

1919
public final class AwsLambdaSingletons {
@@ -27,9 +27,9 @@ public final class AwsLambdaSingletons {
2727
AwsLambdaSqsInstrumenterFactory.forEvent(GlobalOpenTelemetry.get(), INSTRUMENTATION_NAME);
2828
private static final Duration FLUSH_TIMEOUT =
2929
Duration.ofMillis(
30-
AgentInstrumentationConfig.get()
30+
DeclarativeConfigUtil.getInstrumentationConfig(GlobalOpenTelemetry.get(), "aws_lambda")
3131
.getLong(
32-
"otel.instrumentation.aws-lambda.flush-timeout",
32+
"flush_timeout",
3333
WrapperConfiguration.OTEL_LAMBDA_FLUSH_TIMEOUT_DEFAULT.toMillis()));
3434

3535
public static AwsLambdaFunctionInstrumenter functionInstrumenter() {

instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/TracingRequestHandler.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@
1313
import io.opentelemetry.api.GlobalOpenTelemetry;
1414
import io.opentelemetry.context.Context;
1515
import io.opentelemetry.context.Scope;
16+
import io.opentelemetry.instrumentation.api.incubator.config.internal.DeclarativeConfigUtil;
1617
import io.opentelemetry.instrumentation.awssdk.v1_11.AwsSdkTelemetry;
17-
import io.opentelemetry.javaagent.bootstrap.internal.AgentInstrumentationConfig;
1818
import io.opentelemetry.javaagent.bootstrap.internal.ExperimentalConfig;
1919

2020
/**
@@ -36,8 +36,8 @@ public class TracingRequestHandler extends RequestHandler2 {
3636
public static final RequestHandler2 tracingHandler =
3737
AwsSdkTelemetry.builder(GlobalOpenTelemetry.get())
3838
.setCaptureExperimentalSpanAttributes(
39-
AgentInstrumentationConfig.get()
40-
.getBoolean("otel.instrumentation.aws-sdk.experimental-span-attributes", false))
39+
DeclarativeConfigUtil.getInstrumentationConfig(GlobalOpenTelemetry.get(), "aws_sdk")
40+
.getBoolean("experimental_span_attributes/development", false))
4141
.setMessagingReceiveTelemetryEnabled(
4242
ExperimentalConfig.get().messagingReceiveInstrumentationEnabled())
4343
.setCapturedHeaders(ExperimentalConfig.get().getMessagingHeaders())

instrumentation/internal/internal-application-logger/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/internal/logging/ApplicationLoggingIgnoredTypesConfigurer.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,12 @@
88
import com.google.auto.service.AutoService;
99
import io.opentelemetry.javaagent.extension.ignore.IgnoredTypesBuilder;
1010
import io.opentelemetry.javaagent.extension.ignore.IgnoredTypesConfigurer;
11-
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
1211

1312
@AutoService(IgnoredTypesConfigurer.class)
1413
public final class ApplicationLoggingIgnoredTypesConfigurer implements IgnoredTypesConfigurer {
1514

1615
@Override
17-
public void configure(IgnoredTypesBuilder builder, ConfigProperties config) {
16+
public void configure(IgnoredTypesBuilder builder) {
1817
builder.allowClass("org.slf4j.LoggerFactory");
1918
builder.allowClass("org.springframework.boot.SpringApplication");
2019
builder.allowClass("org.springframework.boot.logging.LoggingApplicationListener");

instrumentation/internal/internal-class-loader/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/internal/classloader/ClassLoaderIgnoredTypesConfigurer.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,12 @@
88
import com.google.auto.service.AutoService;
99
import io.opentelemetry.javaagent.extension.ignore.IgnoredTypesBuilder;
1010
import io.opentelemetry.javaagent.extension.ignore.IgnoredTypesConfigurer;
11-
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
1211

1312
@AutoService(IgnoredTypesConfigurer.class)
1413
public class ClassLoaderIgnoredTypesConfigurer implements IgnoredTypesConfigurer {
1514

1615
@Override
17-
public void configure(IgnoredTypesBuilder builder, ConfigProperties config) {
16+
public void configure(IgnoredTypesBuilder builder) {
1817
builder.allowClass("jdk.internal.loader.BuiltinClassLoader");
1918
builder.allowClass("sun.misc.Launcher$AppClassLoader");
2019
}

0 commit comments

Comments
 (0)