Skip to content

Commit fafe7b3

Browse files
committed
explicit check
1 parent e19ab37 commit fafe7b3

File tree

11 files changed

+116
-78
lines changed

11 files changed

+116
-78
lines changed

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
public final class ConfigPropertiesBackedConfigProvider implements ConfigProvider {
1919

2020
private final DeclarativeConfigProperties instrumentationConfig;
21+
private final ConfigProperties configProperties;
2122

2223
public static ConfigProvider create(ConfigProperties configProperties) {
2324
return new ConfigPropertiesBackedConfigProvider(configProperties);
@@ -27,10 +28,15 @@ private ConfigPropertiesBackedConfigProvider(ConfigProperties configProperties)
2728
this.instrumentationConfig =
2829
ConfigPropertiesBackedDeclarativeConfigProperties.createInstrumentationConfig(
2930
configProperties);
31+
this.configProperties = configProperties;
3032
}
3133

3234
@Override
3335
public DeclarativeConfigProperties getInstrumentationConfig() {
3436
return instrumentationConfig;
3537
}
38+
39+
public ConfigProperties getConfigProperties() {
40+
return configProperties;
41+
}
3642
}

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

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -132,16 +132,6 @@ public String getString(String name) {
132132
@Nullable
133133
@Override
134134
public Boolean getBoolean(String name) {
135-
String fullPath = pathWithName(name);
136-
if (fullPath.equals("java.common.thread_details.enabled")) {
137-
Boolean value = configProperties.getBoolean("otel.javaagent.add-thread-details");
138-
if (value != null) {
139-
return value;
140-
}
141-
// Default to true in system properties if not set
142-
return true;
143-
}
144-
145135
return configProperties.getBoolean(resolvePropertyKey(name));
146136
}
147137

declarative-config-bridge/src/test/java/io/opentelemetry/instrumentation/config/bridge/ConfigPropertiesBackedDeclarativeConfigPropertiesTest.java

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -84,15 +84,6 @@ void testAgentPrefix() {
8484
.isTrue();
8585
}
8686

87-
@Test
88-
void testThreadDetails() {
89-
DeclarativeConfigProperties config = createConfig("otel.javaagent.add-thread-details", "true");
90-
91-
assertThat(config.get("java").get("common").get("thread_details").getBoolean("enabled"))
92-
.isNotNull()
93-
.isTrue();
94-
}
95-
9687
@Test
9788
void testJmxPrefix() {
9889
DeclarativeConfigProperties config = createConfig("otel.jmx.enabled", "true");

instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/instrumenter/ThreadDetailsInstrumenterCustomizerProvider.java

Lines changed: 0 additions & 54 deletions
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.opentelemetry.instrumentation.api.incubator.thread;
7+
8+
import static io.opentelemetry.api.common.AttributeKey.longKey;
9+
import static io.opentelemetry.api.common.AttributeKey.stringKey;
10+
11+
import io.opentelemetry.api.common.AttributeKey;
12+
import io.opentelemetry.api.common.AttributesBuilder;
13+
import io.opentelemetry.context.Context;
14+
import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor;
15+
import javax.annotation.Nullable;
16+
17+
public class ThreadDetailsAttributesExtractor<RESPONSE, REQUEST>
18+
implements AttributesExtractor<REQUEST, RESPONSE> {
19+
// attributes are not stable yet
20+
private static final AttributeKey<Long> THREAD_ID = longKey("thread.id");
21+
private static final AttributeKey<String> THREAD_NAME = stringKey("thread.name");
22+
23+
@Override
24+
public void onStart(AttributesBuilder attributes, Context parentContext, REQUEST request) {
25+
Thread currentThread = Thread.currentThread();
26+
attributes.put(THREAD_ID, currentThread.getId());
27+
attributes.put(THREAD_NAME, currentThread.getName());
28+
}
29+
30+
@Override
31+
public void onEnd(
32+
AttributesBuilder attributes,
33+
Context context,
34+
REQUEST request,
35+
@Nullable RESPONSE response,
36+
@Nullable Throwable error) {}
37+
}

instrumentation-api-incubator/src/test/resources/META-INF/services/io.opentelemetry.instrumentation.api.incubator.instrumenter.InstrumenterCustomizerProvider

Lines changed: 0 additions & 3 deletions
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.thread;
7+
8+
import io.opentelemetry.api.OpenTelemetry;
9+
import io.opentelemetry.api.incubator.ExtendedOpenTelemetry;
10+
import io.opentelemetry.instrumentation.api.incubator.instrumenter.InstrumenterCustomizer;
11+
import io.opentelemetry.instrumentation.api.incubator.instrumenter.InstrumenterCustomizerProvider;
12+
import io.opentelemetry.instrumentation.api.incubator.thread.ThreadDetailsAttributesExtractor;
13+
14+
/**
15+
* This class is internal and is hence not for public use. Its APIs are unstable and can change at
16+
* any time.
17+
*/
18+
public class ThreadDetailsInstrumenterCustomizerProvider implements InstrumenterCustomizerProvider {
19+
@Override
20+
public void customize(InstrumenterCustomizer customizer) {
21+
OpenTelemetry openTelemetry = customizer.getOpenTelemetry();
22+
if (openTelemetry instanceof ExtendedOpenTelemetry) {
23+
if (((ExtendedOpenTelemetry) openTelemetry)
24+
.getInstrumentationConfig("common")
25+
.get("thread_details")
26+
.getBoolean("enabled", false)) {
27+
customizer.addAttributesExtractor(new ThreadDetailsAttributesExtractor<>());
28+
}
29+
}
30+
}
31+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.thread.ThreadDetailsInstrumenterCustomizerProvider
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.opentelemetry.javaagent.tooling.config;
7+
8+
import com.google.auto.service.AutoService;
9+
import io.opentelemetry.api.incubator.ExtendedOpenTelemetry;
10+
import io.opentelemetry.api.incubator.config.ConfigProvider;
11+
import io.opentelemetry.instrumentation.api.incubator.instrumenter.InstrumenterCustomizer;
12+
import io.opentelemetry.instrumentation.api.incubator.instrumenter.InstrumenterCustomizerProvider;
13+
import io.opentelemetry.instrumentation.api.incubator.thread.ThreadDetailsAttributesExtractor;
14+
import io.opentelemetry.instrumentation.config.bridge.ConfigPropertiesBackedConfigProvider;
15+
16+
@AutoService(InstrumenterCustomizerProvider.class)
17+
public class ThreadDetailsInstrumenterCustomizerProvider implements InstrumenterCustomizerProvider {
18+
@Override
19+
public void customize(InstrumenterCustomizer customizer) {
20+
if (customizer.getOpenTelemetry() instanceof ExtendedOpenTelemetry) {
21+
ExtendedOpenTelemetry openTelemetry = (ExtendedOpenTelemetry) customizer.getOpenTelemetry();
22+
ConfigProvider configProvider = openTelemetry.getConfigProvider();
23+
boolean threadDetailsEnabled =
24+
configProvider instanceof ConfigPropertiesBackedConfigProvider
25+
?
26+
// declarative configuration not in use, read from ConfigProperties
27+
((ConfigPropertiesBackedConfigProvider) configProvider)
28+
.getConfigProperties()
29+
.getBoolean("otel.javaagent.add-thread-details", true)
30+
: openTelemetry
31+
.getInstrumentationConfig("common")
32+
.get("thread_details")
33+
.getBoolean("enabled", false);
34+
35+
if (threadDetailsEnabled) {
36+
customizer.addAttributesExtractor(new ThreadDetailsAttributesExtractor<>());
37+
}
38+
}
39+
}
40+
}

instrumentation-api-incubator/src/test/java/io/opentelemetry/instrumentation/api/incubator/instrumenter/ThreadDetailsInstrumenterCustomizerProviderTest.java renamed to javaagent-tooling/src/test/java/io/opentelemetry/javaagent/tooling/config/ThreadDetailsInstrumenterCustomizerProviderTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* SPDX-License-Identifier: Apache-2.0
44
*/
55

6-
package io.opentelemetry.instrumentation.api.incubator.instrumenter;
6+
package io.opentelemetry.javaagent.tooling.config;
77

88
import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies;
99
import static java.util.Collections.emptyMap;

0 commit comments

Comments
 (0)