Skip to content

Commit b18583a

Browse files
authored
pass meter provider to avoid using the global otel instance (#7475)
1 parent 6610806 commit b18583a

File tree

4 files changed

+34
-9
lines changed

4 files changed

+34
-9
lines changed

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

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
import io.opentelemetry.api.incubator.config.DeclarativeConfigException;
99
import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties;
10+
import io.opentelemetry.api.metrics.MeterProvider;
1011
import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper;
1112
import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider;
1213
import java.io.Closeable;
@@ -15,12 +16,14 @@
1516
import java.util.List;
1617
import java.util.function.Function;
1718
import java.util.stream.Collectors;
19+
import javax.annotation.Nullable;
1820

1921
/** Declarative configuration context and state carrier. */
2022
class DeclarativeConfigContext {
2123

2224
private final SpiHelper spiHelper;
2325
private final List<Closeable> closeables = new ArrayList<>();
26+
@Nullable private volatile MeterProvider meterProvider;
2427

2528
DeclarativeConfigContext(SpiHelper spiHelper) {
2629
this.spiHelper = spiHelper;
@@ -39,6 +42,15 @@ List<Closeable> getCloseables() {
3942
return Collections.unmodifiableList(closeables);
4043
}
4144

45+
@Nullable
46+
public MeterProvider getMeterProvider() {
47+
return meterProvider;
48+
}
49+
50+
public void setMeterProvider(MeterProvider meterProvider) {
51+
this.meterProvider = meterProvider;
52+
}
53+
4254
/**
4355
* Find a registered {@link ComponentProvider} with {@link ComponentProvider#getType()} matching
4456
* {@code type}, {@link ComponentProvider#getName()} matching {@code name}, and call {@link

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
package io.opentelemetry.sdk.extension.incubator.fileconfig;
77

8+
import io.opentelemetry.api.metrics.MeterProvider;
89
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.BatchLogRecordProcessorModel;
910
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.LogRecordExporterModel;
1011
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.LogRecordProcessorModel;
@@ -52,6 +53,10 @@ public LogRecordProcessor create(
5253
if (batchModel.getScheduleDelay() != null) {
5354
builder.setScheduleDelay(Duration.ofMillis(batchModel.getScheduleDelay()));
5455
}
56+
MeterProvider meterProvider = context.getMeterProvider();
57+
if (meterProvider != null) {
58+
builder.setMeterProvider(meterProvider);
59+
}
5560

5661
return context.addCloseable(builder.build());
5762
}

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

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import io.opentelemetry.sdk.OpenTelemetrySdk;
1010
import io.opentelemetry.sdk.OpenTelemetrySdkBuilder;
1111
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.OpenTelemetryConfigurationModel;
12+
import io.opentelemetry.sdk.metrics.SdkMeterProvider;
1213
import io.opentelemetry.sdk.resources.Resource;
1314
import java.util.Objects;
1415
import java.util.regex.Pattern;
@@ -53,6 +54,16 @@ public OpenTelemetrySdk create(
5354
resource = ResourceFactory.getInstance().create(model.getResource(), context);
5455
}
5556

57+
if (model.getMeterProvider() != null) {
58+
SdkMeterProvider meterProvider =
59+
MeterProviderFactory.getInstance()
60+
.create(model.getMeterProvider(), context)
61+
.setResource(resource)
62+
.build();
63+
context.setMeterProvider(meterProvider);
64+
builder.setMeterProvider(context.addCloseable(meterProvider));
65+
}
66+
5667
if (model.getLoggerProvider() != null) {
5768
builder.setLoggerProvider(
5869
context.addCloseable(
@@ -77,15 +88,6 @@ public OpenTelemetrySdk create(
7788
.build()));
7889
}
7990

80-
if (model.getMeterProvider() != null) {
81-
builder.setMeterProvider(
82-
context.addCloseable(
83-
MeterProviderFactory.getInstance()
84-
.create(model.getMeterProvider(), context)
85-
.setResource(resource)
86-
.build()));
87-
}
88-
8991
return context.addCloseable(builder.build());
9092
}
9193
}

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
package io.opentelemetry.sdk.extension.incubator.fileconfig;
77

8+
import io.opentelemetry.api.metrics.MeterProvider;
89
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.BatchSpanProcessorModel;
910
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.SimpleSpanProcessorModel;
1011
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.SpanExporterModel;
@@ -47,6 +48,11 @@ public SpanProcessor create(SpanProcessorModel model, DeclarativeConfigContext c
4748
if (batchModel.getScheduleDelay() != null) {
4849
builder.setScheduleDelay(Duration.ofMillis(batchModel.getScheduleDelay()));
4950
}
51+
MeterProvider meterProvider = context.getMeterProvider();
52+
if (meterProvider != null) {
53+
builder.setMeterProvider(meterProvider);
54+
}
55+
5056
return context.addCloseable(builder.build());
5157
}
5258

0 commit comments

Comments
 (0)