Skip to content

Commit 0e6cf7e

Browse files
committed
agent tracer customizer
1 parent 7374e5c commit 0e6cf7e

File tree

2 files changed

+24
-12
lines changed

2 files changed

+24
-12
lines changed

javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/AgentTracerCustomizerProvider.java

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,10 @@
66
package io.opentelemetry.javaagent.tooling;
77

88
import com.google.auto.service.AutoService;
9+
import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties;
910
import io.opentelemetry.sdk.extension.incubator.fileconfig.DeclarativeConfigurationCustomizer;
1011
import io.opentelemetry.sdk.extension.incubator.fileconfig.DeclarativeConfigurationCustomizerProvider;
12+
import io.opentelemetry.sdk.extension.incubator.fileconfig.SdkConfigProvider;
1113
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.SpanProcessorModel;
1214
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.TracerProviderModel;
1315

@@ -17,22 +19,32 @@ public class AgentTracerCustomizerProvider implements DeclarativeConfigurationCu
1719
public void customize(DeclarativeConfigurationCustomizer customizer) {
1820
customizer.addModelCustomizer(
1921
model -> {
20-
TracerProviderModel tracerProvider = model.getTracerProvider();
21-
if (tracerProvider == null) {
22+
DeclarativeConfigProperties properties =
23+
SdkConfigProvider.create(model).getInstrumentationConfig();
24+
if (properties == null) {
25+
properties = DeclarativeConfigProperties.empty();
26+
}
27+
DeclarativeConfigProperties java =
28+
properties.getStructured("java", DeclarativeConfigProperties.empty());
29+
if (!java.getBoolean("enabled", true)) {
30+
// todo extract this logic to a common place
31+
// todo should this be pulled out or to be reusable by spring?
2232
return model;
2333
}
24-
// InstrumentationModel instrumentationModel =
25-
// model.getInstrumentationDevelopment();
26-
// ExperimentalLanguageSpecificInstrumentationModel java =
27-
// instrumentationModel.getJava();
28-
// todo how to get the "add_thread_details" from the config?
29-
// do we need a ConfigProvider?
34+
35+
if (java.getStructured("thread_details", DeclarativeConfigProperties.empty())
36+
.getBoolean("enabled", true)) {
37+
TracerProviderModel tracerProvider = model.getTracerProvider();
38+
if (tracerProvider != null) {
39+
tracerProvider
40+
.getProcessors()
41+
.add(new SpanProcessorModel().withAdditionalProperty("thread_details", null));
42+
}
43+
}
44+
3045

3146
// todo also add logging like in AgentTracerProviderConfigurer
3247

33-
tracerProvider
34-
.getProcessors()
35-
.add(new SpanProcessorModel().withAdditionalProperty("thread_details", null));
3648
return model;
3749
});
3850
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414
@SuppressWarnings("rawtypes")
1515
@AutoService(ComponentProvider.class)
16-
public class AgentTracerComponentProvider implements ComponentProvider<SpanProcessor> {
16+
public class ThreadDetailsComponentProvider implements ComponentProvider<SpanProcessor> {
1717
@Override
1818
public String getName() {
1919
return "thread_details";

0 commit comments

Comments
 (0)