Skip to content

Commit

Permalink
Deprecate GlobalMeterProvider (#3948)
Browse files Browse the repository at this point in the history
  • Loading branch information
anuraaga authored Dec 2, 2021
1 parent b1651a1 commit 737a5e2
Show file tree
Hide file tree
Showing 11 changed files with 40 additions and 37 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,23 @@

package io.opentelemetry.api.metrics;

/** This class is a temporary solution until metrics SDK is marked stable. */
/**
* This class is a temporary solution until metrics SDK is marked stable.
*
* @deprecated Use {@link io.opentelemetry.api.GlobalOpenTelemetry}.
*/
@Deprecated
public class GlobalMeterProvider {
private static volatile MeterProvider globalMeterProvider = MeterProvider.noop();

private GlobalMeterProvider() {}

/** Returns the globally registered {@link MeterProvider}. */
/**
* Returns the globally registered {@link MeterProvider}.
*
* @deprecated Use {@link io.opentelemetry.api.GlobalOpenTelemetry#get()}.
*/
@Deprecated
public static MeterProvider get() {
return globalMeterProvider;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,7 @@ class OpenCensusMetricsTest {
void capturesOpenCensusAndOtelMetrics() throws InterruptedException {
InMemoryMetricReader reader = InMemoryMetricReader.create();
SdkMeterProvider otelMetrics =
SdkMeterProvider.builder()
.registerMetricReader(OpenCensusMetrics.attachTo(reader))
.buildAndRegisterGlobal();
SdkMeterProvider.builder().registerMetricReader(OpenCensusMetrics.attachTo(reader)).build();
// Record an otel metric.
otelMetrics.meterBuilder("otel").build().counterBuilder("otel.sum").build().add(1);
// Record an OpenCensus metric.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -254,11 +254,12 @@ private void setupSdk() {
PeriodicMetricReader.builder(metricExporter)
.setInterval(Duration.ofSeconds(1))
.newMetricReaderFactory())
.buildAndRegisterGlobal();
.build();

// set up the span exporter and wire it into the SDK
OtlpGrpcSpanExporter spanExporter =
OtlpGrpcSpanExporter.builder()
.setMeterProvider(meterProvider)
.setEndpoint(
"http://"
+ toxiproxyContainer.getHost()
Expand All @@ -268,6 +269,7 @@ private void setupSdk() {
.build();
BatchSpanProcessor spanProcessor =
BatchSpanProcessor.builder(spanExporter)
.setMeterProvider(meterProvider)
// .setMaxQueueSize(1000)
// .setMaxExportBatchSize(1024)
// .setScheduleDelayMillis(1000)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
package io.opentelemetry.sdk.autoconfigure;

import io.opentelemetry.api.GlobalOpenTelemetry;
import io.opentelemetry.api.metrics.GlobalMeterProvider;
import io.opentelemetry.api.metrics.MeterProvider;
import io.opentelemetry.context.propagation.ContextPropagators;
import io.opentelemetry.context.propagation.TextMapPropagator;
Expand Down Expand Up @@ -154,7 +153,6 @@ private static MeterProvider configureMeterProvider(
String exporterName = config.getString("otel.metrics.exporter");
if (exporterName == null || exporterName.equals("none")) {
// In the event no exporters are configured set a noop exporter
GlobalMeterProvider.set(MeterProvider.noop());
return MeterProvider.noop();
}
MetricExporterConfiguration.configureExporter(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
import static org.assertj.core.api.Assertions.assertThat;

import io.opentelemetry.api.GlobalOpenTelemetry;
import io.opentelemetry.api.metrics.GlobalMeterProvider;
import io.opentelemetry.sdk.OpenTelemetrySdk;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
Expand All @@ -18,7 +17,6 @@ class OpenTelemetrySdkAutoConfigurationTest {
@BeforeEach
void setUp() {
GlobalOpenTelemetry.resetForTest();
GlobalMeterProvider.set(null);
}

@Test
Expand All @@ -42,14 +40,4 @@ void initializeAndGet_noGlobal() {
// ObfuscatedOpenTelemetry
assertThat(GlobalOpenTelemetry.get()).isNotSameAs(sdk);
}

@Test
void noMetricsSdk() {
// OTEL_METRICS_EXPORTER=none so the metrics SDK should be completely disabled.
// This is a bit of an odd test, so we just ensure that we don't have the same impl class as if
// we instantiated an SDK with a reader.
AutoConfiguredOpenTelemetrySdk.initialize();
assertThat(GlobalMeterProvider.get().getClass().getSimpleName())
.isEqualTo("DefaultMeterProvider");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
import com.linecorp.armeria.client.WebClient;
import com.linecorp.armeria.common.AggregatedHttpResponse;
import io.opentelemetry.api.common.Attributes;
import io.opentelemetry.api.metrics.GlobalMeterProvider;
import io.opentelemetry.sdk.OpenTelemetrySdk;
import java.io.IOException;
import java.net.ServerSocket;
import org.junit.jupiter.api.Test;
Expand All @@ -33,9 +33,11 @@ void prometheusExporter() throws Exception {
}
System.setProperty("otel.exporter.prometheus.host", "127.0.0.1");
System.setProperty("otel.exporter.prometheus.port", String.valueOf(port));
AutoConfiguredOpenTelemetrySdk.initialize();
OpenTelemetrySdk openTelemetrySdk =
AutoConfiguredOpenTelemetrySdk.initialize().getOpenTelemetrySdk();

GlobalMeterProvider.get()
openTelemetrySdk
.getMeterProvider()
.get("test")
.gaugeBuilder("test")
.ofLongs()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@

import static io.opentelemetry.api.internal.Utils.checkArgument;

import io.opentelemetry.api.metrics.GlobalMeterProvider;
import io.opentelemetry.sdk.common.Clock;
import io.opentelemetry.sdk.metrics.exemplar.ExemplarFilter;
import io.opentelemetry.sdk.metrics.export.MetricReader;
Expand Down Expand Up @@ -109,11 +108,13 @@ public SdkMeterProviderBuilder registerView(InstrumentSelector selector, View vi
* SdkMeterProviderBuilder} and registers it as the global {@link
* io.opentelemetry.api.metrics.MeterProvider}.
*
* @see GlobalMeterProvider
* @deprecated Use {@code OpenTelemetrySdkBuilder.buildAndRegisterGlobal} and {@link
* io.opentelemetry.api.GlobalOpenTelemetry}.
*/
@Deprecated
public SdkMeterProvider buildAndRegisterGlobal() {
SdkMeterProvider meterProvider = build();
GlobalMeterProvider.set(meterProvider);
io.opentelemetry.api.metrics.GlobalMeterProvider.set(meterProvider);
return meterProvider;
}

Expand Down Expand Up @@ -149,8 +150,6 @@ public SdkMeterProviderBuilder setMinimumCollectionInterval(Duration duration) {
* using {@link SdkMeterProviderBuilder#buildAndRegisterGlobal()} for use by instrumentation when
* that requires access to a global instance of {@link
* io.opentelemetry.api.metrics.MeterProvider}.
*
* @see GlobalMeterProvider
*/
public SdkMeterProvider build() {
return new SdkMeterProvider(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,20 +7,20 @@

import static org.assertj.core.api.Assertions.assertThat;

import io.opentelemetry.api.metrics.GlobalMeterProvider;
import io.opentelemetry.sdk.metrics.testing.InMemoryMetricReader;
import io.opentelemetry.sdk.resources.Resource;
import org.junit.jupiter.api.Test;

class SdkMeterProviderBuilderTest {

@Test
@SuppressWarnings("deprecation") // Testing deprecated methods
void buildAndRegisterGlobal() {
SdkMeterProvider meterProvider = SdkMeterProvider.builder().buildAndRegisterGlobal();
try {
assertThat(GlobalMeterProvider.get()).isSameAs(meterProvider);
assertThat(io.opentelemetry.api.metrics.GlobalMeterProvider.get()).isSameAs(meterProvider);
} finally {
GlobalMeterProvider.set(null);
io.opentelemetry.api.metrics.GlobalMeterProvider.set(null);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@

package io.opentelemetry.sdk.trace.export;

import io.opentelemetry.api.metrics.MeterProvider;
import io.opentelemetry.api.trace.Tracer;
import io.opentelemetry.sdk.metrics.SdkMeterProvider;
import io.opentelemetry.sdk.metrics.testing.InMemoryMetricReader;
Expand Down Expand Up @@ -48,9 +49,10 @@ public static class BenchmarkState {
@Setup(Level.Iteration)
public final void setup() {
metricReader = InMemoryMetricReader.create();
SdkMeterProvider.builder().registerMetricReader(metricReader).buildAndRegisterGlobal();
MeterProvider meterProvider =
SdkMeterProvider.builder().registerMetricReader(metricReader).build();
SpanExporter exporter = new DelayingSpanExporter(delayMs);
processor = BatchSpanProcessor.builder(exporter).build();
processor = BatchSpanProcessor.builder(exporter).setMeterProvider(meterProvider).build();
tracer =
SdkTracerProvider.builder().addSpanProcessor(processor).build().get("benchmarkTracer");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@

package io.opentelemetry.sdk.trace.export;

import io.opentelemetry.api.metrics.MeterProvider;
import io.opentelemetry.api.trace.Tracer;
import io.opentelemetry.sdk.metrics.SdkMeterProvider;
import io.opentelemetry.sdk.metrics.testing.InMemoryMetricReader;
Expand Down Expand Up @@ -39,9 +40,10 @@ public static class BenchmarkState {
@Setup(Level.Iteration)
public final void setup() {
metricReader = InMemoryMetricReader.create();
SdkMeterProvider.builder().registerMetricReader(metricReader).buildAndRegisterGlobal();
MeterProvider meterProvider =
SdkMeterProvider.builder().registerMetricReader(metricReader).build();
SpanExporter exporter = new DelayingSpanExporter(0);
processor = BatchSpanProcessor.builder(exporter).build();
processor = BatchSpanProcessor.builder(exporter).setMeterProvider(meterProvider).build();

tracer = SdkTracerProvider.builder().build().get("benchmarkTracer");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@

package io.opentelemetry.sdk.trace.export;

import io.opentelemetry.api.metrics.MeterProvider;
import io.opentelemetry.api.trace.Tracer;
import io.opentelemetry.sdk.metrics.SdkMeterProvider;
import io.opentelemetry.sdk.metrics.testing.InMemoryMetricReader;
Expand Down Expand Up @@ -46,9 +47,10 @@ public static class BenchmarkState {
@Setup(Level.Iteration)
public final void setup() {
collector = InMemoryMetricReader.create();
SdkMeterProvider.builder().registerMetricReader(collector).buildAndRegisterGlobal();
MeterProvider meterProvider =
SdkMeterProvider.builder().registerMetricReader(collector).build();
SpanExporter exporter = new DelayingSpanExporter(delayMs);
processor = BatchSpanProcessor.builder(exporter).build();
processor = BatchSpanProcessor.builder(exporter).setMeterProvider(meterProvider).build();
tracer =
SdkTracerProvider.builder().addSpanProcessor(processor).build().get("benchmarkTracer");
}
Expand Down

0 comments on commit 737a5e2

Please sign in to comment.