Skip to content

Commit 3434fe9

Browse files
authored
remove last usages from config properties in shared code (#15791)
1 parent 3de1b65 commit 3434fe9

File tree

5 files changed

+60
-43
lines changed

5 files changed

+60
-43
lines changed

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

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties;
1111
import io.opentelemetry.common.ComponentLoader;
1212
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
13+
import java.time.Duration;
1314
import java.util.ArrayList;
1415
import java.util.Collections;
1516
import java.util.HashMap;
@@ -93,7 +94,6 @@ public final class ConfigPropertiesBackedDeclarativeConfigProperties
9394
// jmx properties don't have an "instrumentation" segment
9495
SPECIAL_MAPPINGS.put("java.jmx.enabled", "otel.jmx.enabled");
9596
SPECIAL_MAPPINGS.put("java.jmx.config", "otel.jmx.config");
96-
SPECIAL_MAPPINGS.put("java.jmx.discovery.delay", "otel.jmx.discovery.delay");
9797
SPECIAL_MAPPINGS.put("java.jmx.target_system", "otel.jmx.target.system");
9898
}
9999

@@ -144,6 +144,22 @@ public Integer getInt(String name) {
144144
@Nullable
145145
@Override
146146
public Long getLong(String name) {
147+
String fullPath = pathWithName(name);
148+
149+
if (fullPath.equals("java.jmx.discovery.delay")) {
150+
Duration duration = configProperties.getDuration("otel.jmx.discovery.delay");
151+
if (duration != null) {
152+
return duration.toMillis();
153+
}
154+
// If discovery delay has not been configured, have a peek at the metric export interval.
155+
// It makes sense for both of these values to be similar.
156+
Duration fallback = configProperties.getDuration("otel.metric.export.interval");
157+
if (fallback != null) {
158+
return fallback.toMillis();
159+
}
160+
return null;
161+
}
162+
147163
return configProperties.getLong(resolvePropertyKey(name));
148164
}
149165

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

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -122,23 +122,36 @@ void testGeneralPeerServiceMapping() {
122122

123123
@Test
124124
void testGetInt() {
125-
DeclarativeConfigProperties config = createConfig("otel.jmx.discovery.delay", "5000");
125+
DeclarativeConfigProperties config =
126+
createConfig("otel.instrumentation.aws-lambda.flush-timeout", "5000");
126127

127-
assertThat(
128-
config
129-
.getStructured("java")
130-
.getStructured("jmx")
131-
.getStructured("discovery")
132-
.getInt("delay"))
128+
assertThat(config.getStructured("java").getStructured("aws_lambda").getInt("flush_timeout"))
133129
.isEqualTo(5000);
134130
}
135131

136132
@Test
137133
void testGetLong() {
138-
DeclarativeConfigProperties config =
139-
createConfig("otel.instrumentation.aws-lambda.flush-timeout", "30000");
134+
assertThat(
135+
createConfig("otel.instrumentation.aws-lambda.flush-timeout", "30000")
136+
.getStructured("java")
137+
.getStructured("aws_lambda")
138+
.getLong("flush_timeout"))
139+
.isEqualTo(30000L);
140140

141-
assertThat(config.getStructured("java").getStructured("aws_lambda").getLong("flush_timeout"))
141+
// special case: duration string
142+
assertThat(
143+
createConfig("otel.jmx.discovery.delay", "30s")
144+
.getStructured("java")
145+
.getStructured("jmx")
146+
.getStructured("discovery")
147+
.getLong("delay"))
148+
.isEqualTo(30000L);
149+
assertThat(
150+
createConfig("otel.metric.export.interval", "30s")
151+
.getStructured("java")
152+
.getStructured("jmx")
153+
.getStructured("discovery")
154+
.getLong("delay"))
142155
.isEqualTo(30000L);
143156
}
144157

instrumentation/jmx-metrics/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jmx/JmxMetricInsightInstaller.java

Lines changed: 3 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,6 @@
1515
import io.opentelemetry.instrumentation.jmx.JmxTelemetryBuilder;
1616
import io.opentelemetry.javaagent.extension.AgentListener;
1717
import io.opentelemetry.sdk.autoconfigure.AutoConfiguredOpenTelemetrySdk;
18-
import io.opentelemetry.sdk.autoconfigure.internal.AutoConfigureUtil;
19-
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
2018
import java.io.InputStream;
2119
import java.nio.file.Path;
2220
import java.nio.file.Paths;
@@ -32,14 +30,15 @@ public class JmxMetricInsightInstaller implements AgentListener {
3230

3331
@Override
3432
public void afterAgent(AutoConfiguredOpenTelemetrySdk autoConfiguredSdk) {
35-
ConfigProperties configProperties = AutoConfigureUtil.getConfig(autoConfiguredSdk);
3633
ExtendedDeclarativeConfigProperties config =
3734
DeclarativeConfigUtil.getInstrumentationConfig(GlobalOpenTelemetry.get(), "jmx");
3835

3936
if (config.getBoolean("enabled", true)) {
4037
JmxTelemetryBuilder jmx =
4138
JmxTelemetry.builder(GlobalOpenTelemetry.get())
42-
.beanDiscoveryDelay(beanDiscoveryDelay(config, configProperties));
39+
.beanDiscoveryDelay(
40+
Duration.ofMillis(
41+
config.get("discovery").getLong("delay", Duration.ofMinutes(1).toMillis())));
4342

4443
config.getScalarList("config", String.class, emptyList()).stream()
4544
.map(Paths::get)
@@ -73,16 +72,4 @@ private static void addClasspathRules(String target, JmxTelemetryBuilder builder
7372
Level.SEVERE, "Error while loading JMX configuration from classpath " + resource, e);
7473
}
7574
}
76-
77-
private static Duration beanDiscoveryDelay(
78-
ExtendedDeclarativeConfigProperties config, ConfigProperties configProperties) {
79-
Long discoveryDelayMs = config.get("discovery").getLong("delay");
80-
if (discoveryDelayMs != null) {
81-
return Duration.ofMillis(discoveryDelayMs);
82-
}
83-
84-
// If discovery delay has not been configured, have a peek at the metric export interval.
85-
// It makes sense for both of these values to be similar.
86-
return configProperties.getDuration("otel.metric.export.interval", Duration.ofMinutes(1));
87-
}
8875
}

instrumentation/oshi/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/oshi/OshiMetricsInstaller.java

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

88
import com.google.auto.service.AutoService;
9+
import io.opentelemetry.instrumentation.api.incubator.config.internal.DeclarativeConfigUtil;
910
import io.opentelemetry.javaagent.extension.AgentListener;
11+
import io.opentelemetry.javaagent.tooling.config.AgentConfig;
1012
import io.opentelemetry.sdk.autoconfigure.AutoConfiguredOpenTelemetrySdk;
11-
import io.opentelemetry.sdk.autoconfigure.internal.AutoConfigureUtil;
12-
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
1313
import java.lang.reflect.Method;
1414

1515
/**
@@ -21,10 +21,11 @@ public class OshiMetricsInstaller implements AgentListener {
2121

2222
@Override
2323
public void afterAgent(AutoConfiguredOpenTelemetrySdk autoConfiguredSdk) {
24-
ConfigProperties config = AutoConfigureUtil.getConfig(autoConfiguredSdk);
25-
26-
boolean defaultEnabled = config.getBoolean("otel.instrumentation.common.default-enabled", true);
27-
if (!config.getBoolean("otel.instrumentation.oshi.enabled", defaultEnabled)) {
24+
boolean enabled =
25+
DeclarativeConfigUtil.getInstrumentationConfig(
26+
autoConfiguredSdk.getOpenTelemetrySdk(), "oshi")
27+
.getBoolean("enabled", AgentConfig.instrumentationMode().equals("default"));
28+
if (!enabled) {
2829
return;
2930
}
3031

instrumentation/runtime-telemetry/runtime-telemetry-java8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/runtimemetrics/java8/JarAnalyzerInstaller.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,13 @@
66
package io.opentelemetry.javaagent.instrumentation.runtimemetrics.java8;
77

88
import com.google.auto.service.AutoService;
9+
import io.opentelemetry.api.GlobalOpenTelemetry;
10+
import io.opentelemetry.api.OpenTelemetry;
11+
import io.opentelemetry.instrumentation.api.incubator.config.internal.DeclarativeConfigUtil;
12+
import io.opentelemetry.instrumentation.api.incubator.config.internal.ExtendedDeclarativeConfigProperties;
913
import io.opentelemetry.javaagent.bootstrap.InstrumentationHolder;
1014
import io.opentelemetry.javaagent.tooling.BeforeAgentListener;
1115
import io.opentelemetry.sdk.autoconfigure.AutoConfiguredOpenTelemetrySdk;
12-
import io.opentelemetry.sdk.autoconfigure.internal.AutoConfigureUtil;
13-
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
1416
import java.lang.instrument.Instrumentation;
1517

1618
/** Installs the {@link JarAnalyzer}. */
@@ -19,21 +21,19 @@ public class JarAnalyzerInstaller implements BeforeAgentListener {
1921

2022
@Override
2123
public void beforeAgent(AutoConfiguredOpenTelemetrySdk autoConfiguredOpenTelemetrySdk) {
22-
ConfigProperties config = AutoConfigureUtil.getConfig(autoConfiguredOpenTelemetrySdk);
23-
24-
boolean enabled =
25-
config.getBoolean("otel.instrumentation.runtime-telemetry.package-emitter.enabled", false);
26-
if (!enabled) {
24+
OpenTelemetry openTelemetry = GlobalOpenTelemetry.get();
25+
ExtendedDeclarativeConfigProperties config =
26+
DeclarativeConfigUtil.getInstrumentationConfig(openTelemetry, "runtime_telemetry");
27+
if (!config.get("package_emitter").getBoolean("enabled", false)) {
2728
return;
2829
}
2930
Instrumentation inst = InstrumentationHolder.getInstrumentation();
3031
if (inst == null) {
3132
return;
3233
}
33-
int jarsPerSecond =
34-
config.getInt("otel.instrumentation.runtime-telemetry.package-emitter.jars-per-second", 10);
3534
JarAnalyzer jarAnalyzer =
36-
JarAnalyzer.create(autoConfiguredOpenTelemetrySdk.getOpenTelemetrySdk(), jarsPerSecond);
35+
JarAnalyzer.create(
36+
openTelemetry, config.get("package_emitter").getInt("jars_per_second", 10));
3737
inst.addTransformer(jarAnalyzer);
3838
}
3939
}

0 commit comments

Comments
 (0)