Skip to content

Commit 72f9b23

Browse files
committed
Update OtlpMetricExporterProvider to implement AutoConfigureListener
1 parent 613e5d6 commit 72f9b23

File tree

1 file changed

+16
-1
lines changed

1 file changed

+16
-1
lines changed

exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpMetricExporterProvider.java

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,19 @@
99
import static io.opentelemetry.exporter.otlp.internal.OtlpConfigUtil.PROTOCOL_GRPC;
1010
import static io.opentelemetry.exporter.otlp.internal.OtlpConfigUtil.PROTOCOL_HTTP_PROTOBUF;
1111

12+
import io.opentelemetry.api.metrics.MeterProvider;
1213
import io.opentelemetry.exporter.internal.ExporterBuilderUtil;
1314
import io.opentelemetry.exporter.otlp.http.metrics.OtlpHttpMetricExporter;
1415
import io.opentelemetry.exporter.otlp.http.metrics.OtlpHttpMetricExporterBuilder;
1516
import io.opentelemetry.exporter.otlp.metrics.OtlpGrpcMetricExporter;
1617
import io.opentelemetry.exporter.otlp.metrics.OtlpGrpcMetricExporterBuilder;
18+
import io.opentelemetry.sdk.OpenTelemetrySdk;
1719
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
1820
import io.opentelemetry.sdk.autoconfigure.spi.ConfigurationException;
21+
import io.opentelemetry.sdk.autoconfigure.spi.internal.AutoConfigureListener;
1922
import io.opentelemetry.sdk.autoconfigure.spi.metrics.ConfigurableMetricExporterProvider;
2023
import io.opentelemetry.sdk.metrics.export.MetricExporter;
24+
import java.util.concurrent.atomic.AtomicReference;
2125

2226
/**
2327
* {@link MetricExporter} SPI implementation for {@link OtlpGrpcMetricExporter} and {@link
@@ -26,7 +30,11 @@
2630
* <p>This class is internal and is hence not for public use. Its APIs are unstable and can change
2731
* at any time.
2832
*/
29-
public class OtlpMetricExporterProvider implements ConfigurableMetricExporterProvider {
33+
public class OtlpMetricExporterProvider implements ConfigurableMetricExporterProvider,
34+
AutoConfigureListener {
35+
36+
private final AtomicReference<MeterProvider> meterProviderRef =
37+
new AtomicReference<>(MeterProvider.noop());
3038

3139
@Override
3240
public MetricExporter createExporter(ConfigProperties config) {
@@ -51,6 +59,7 @@ public MetricExporter createExporter(ConfigProperties config) {
5159
config, builder::setAggregationTemporalitySelector);
5260
ExporterBuilderUtil.configureOtlpHistogramDefaultAggregation(
5361
config, builder::setDefaultAggregationSelector);
62+
builder.setMeterProvider(meterProviderRef::get);
5463

5564
return builder.build();
5665
} else if (protocol.equals(PROTOCOL_GRPC)) {
@@ -72,6 +81,7 @@ public MetricExporter createExporter(ConfigProperties config) {
7281
config, builder::setAggregationTemporalitySelector);
7382
ExporterBuilderUtil.configureOtlpHistogramDefaultAggregation(
7483
config, builder::setDefaultAggregationSelector);
84+
builder.setMeterProvider(meterProviderRef::get);
7585

7686
return builder.build();
7787
}
@@ -92,4 +102,9 @@ OtlpHttpMetricExporterBuilder httpBuilder() {
92102
OtlpGrpcMetricExporterBuilder grpcBuilder() {
93103
return OtlpGrpcMetricExporter.builder();
94104
}
105+
106+
@Override
107+
public void afterAutoConfigure(OpenTelemetrySdk sdk) {
108+
meterProviderRef.set(sdk.getMeterProvider());
109+
}
95110
}

0 commit comments

Comments
 (0)