Skip to content

Commit df5c3c0

Browse files
committed
call auto configure listener with declarative config
1 parent 9a018d4 commit df5c3c0

File tree

6 files changed

+67
-9
lines changed

6 files changed

+67
-9
lines changed

sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/AutoConfiguredOpenTelemetrySdkBuilder.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -451,19 +451,16 @@ private AutoConfiguredOpenTelemetrySdk buildImpl() {
451451
? this.config
452452
: DefaultConfigProperties.create(Collections.emptyMap(), componentLoader),
453453
componentLoader);
454-
SpiHelper spiHelper = SpiHelper.create(componentLoader);
455454
if (fromFileConfiguration != null) {
456-
OpenTelemetrySdk openTelemetrySdk = fromFileConfiguration.getOpenTelemetrySdk();
457-
maybeRegisterShutdownHook(openTelemetrySdk);
458-
callAutoConfigureListeners(spiHelper, openTelemetrySdk);
459-
455+
maybeRegisterShutdownHook(fromFileConfiguration.getOpenTelemetrySdk());
460456
Object configProvider = fromFileConfiguration.getConfigProvider();
461457
if (setResultAsGlobal && INCUBATOR_AVAILABLE && configProvider != null) {
462458
IncubatingUtil.setGlobalConfigProvider(configProvider);
463459
}
464460
return fromFileConfiguration;
465461
}
466462

463+
SpiHelper spiHelper = SpiHelper.create(componentLoader);
467464
if (!customized) {
468465
customized = true;
469466
mergeSdkTracerProviderConfigurer();

sdk-extensions/autoconfigure/src/testDeclarativeConfigSpi/java/io/opentelemetry/sdk/autoconfigure/DeclarativeConfigurationSpiTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,5 +44,7 @@ void configFromSpi() {
4444

4545
assertThat(autoConfiguredOpenTelemetrySdk.getOpenTelemetrySdk().toString())
4646
.isEqualTo(expectedSdk.toString());
47+
48+
assertThat(TestResourceDetector.initialized).isTrue();
4749
}
4850
}

sdk-extensions/autoconfigure/src/testDeclarativeConfigSpi/java/io/opentelemetry/sdk/autoconfigure/TestDeclarativeConfigurationProvider.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@ public OpenTelemetryConfigurationModel getConfigurationModel() {
1717
String yaml =
1818
"file_format: \"1.0-rc.1\"\n"
1919
+ "resource:\n"
20+
+ " detection/development:\n"
21+
+ " detectors:\n"
22+
+ " - test:\n"
2023
+ " attributes:\n"
2124
+ " - name: service.name\n"
2225
+ " value: test\n"
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.opentelemetry.sdk.autoconfigure;
7+
8+
import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties;
9+
import io.opentelemetry.sdk.OpenTelemetrySdk;
10+
import io.opentelemetry.sdk.autoconfigure.spi.internal.AutoConfigureListener;
11+
import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider;
12+
import io.opentelemetry.sdk.resources.Resource;
13+
14+
public class TestResourceDetector implements ComponentProvider<Resource>, AutoConfigureListener {
15+
16+
@SuppressWarnings("NonFinalStaticField")
17+
static boolean initialized = false;
18+
19+
@Override
20+
public void afterAutoConfigure(OpenTelemetrySdk sdk) {
21+
initialized = true;
22+
}
23+
24+
@Override
25+
public Class<Resource> getType() {
26+
return Resource.class;
27+
}
28+
29+
@Override
30+
public String getName() {
31+
return "test";
32+
}
33+
34+
@Override
35+
public Resource create(DeclarativeConfigProperties config) {
36+
return Resource.empty();
37+
}
38+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
io.opentelemetry.sdk.autoconfigure.TestResourceDetector

sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/DeclarativeConfiguration.java

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import io.opentelemetry.common.ComponentLoader;
1515
import io.opentelemetry.sdk.OpenTelemetrySdk;
1616
import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper;
17+
import io.opentelemetry.sdk.autoconfigure.spi.internal.AutoConfigureListener;
1718
import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider;
1819
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.OpenTelemetryConfigurationModel;
1920
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.SamplerModel;
@@ -24,6 +25,7 @@
2425
import java.util.Collections;
2526
import java.util.Map;
2627
import java.util.Objects;
28+
import java.util.logging.Level;
2729
import java.util.logging.Logger;
2830
import java.util.regex.MatchResult;
2931
import java.util.regex.Matcher;
@@ -120,10 +122,13 @@ public static OpenTelemetrySdk create(
120122
provider.customize(builder);
121123
}
122124

123-
return createAndMaybeCleanup(
124-
OpenTelemetryConfigurationFactory.getInstance(),
125-
spiHelper,
126-
builder.customizeModel(configurationModel));
125+
OpenTelemetrySdk sdk =
126+
createAndMaybeCleanup(
127+
OpenTelemetryConfigurationFactory.getInstance(),
128+
spiHelper,
129+
builder.customizeModel(configurationModel));
130+
callAutoConfigureListeners(spiHelper, sdk);
131+
return sdk;
127132
}
128133

129134
/**
@@ -402,4 +407,16 @@ private StringBuilder envVarSubstitution(
402407
return newVal;
403408
}
404409
}
410+
411+
private static void callAutoConfigureListeners(
412+
SpiHelper spiHelper, OpenTelemetrySdk openTelemetrySdk) {
413+
for (AutoConfigureListener listener : spiHelper.getListeners()) {
414+
try {
415+
listener.afterAutoConfigure(openTelemetrySdk);
416+
} catch (Throwable throwable) {
417+
logger.log(
418+
Level.WARNING, "Error invoking listener " + listener.getClass().getName(), throwable);
419+
}
420+
}
421+
}
405422
}

0 commit comments

Comments
 (0)