Deprecate GlobalMeterProvider (#3948)

This commit is contained in:
Anuraag Agrawal 2021-12-03 08:43:49 +09:00 committed by GitHub
parent b1651a18cf
commit 737a5e2b26
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 40 additions and 37 deletions

View File

@ -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;
}

View File

@ -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.

View File

@ -254,11 +254,12 @@ public class OtlpPipelineStressTest {
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()
@ -268,6 +269,7 @@ public class OtlpPipelineStressTest {
.build();
BatchSpanProcessor spanProcessor =
BatchSpanProcessor.builder(spanExporter)
.setMeterProvider(meterProvider)
// .setMaxQueueSize(1000)
// .setMaxExportBatchSize(1024)
// .setScheduleDelayMillis(1000)

View File

@ -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;
@ -154,7 +153,6 @@ public final class OpenTelemetrySdkAutoConfiguration {
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(

View File

@ -8,7 +8,6 @@ package io.opentelemetry.sdk.autoconfigure;
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;
@ -18,7 +17,6 @@ class OpenTelemetrySdkAutoConfigurationTest {
@BeforeEach
void setUp() {
GlobalOpenTelemetry.resetForTest();
GlobalMeterProvider.set(null);
}
@Test
@ -42,14 +40,4 @@ class OpenTelemetrySdkAutoConfigurationTest {
// 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");
}
}

View File

@ -10,7 +10,7 @@ import static org.assertj.core.api.Assertions.assertThat;
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;
@ -33,9 +33,11 @@ class PrometheusTest {
}
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()

View File

@ -7,7 +7,6 @@ package io.opentelemetry.sdk.metrics;
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;
@ -109,11 +108,13 @@ public final class SdkMeterProviderBuilder {
* 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;
}
@ -149,8 +150,6 @@ public final class SdkMeterProviderBuilder {
* 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(

View File

@ -7,7 +7,6 @@ package io.opentelemetry.sdk.metrics;
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;
@ -15,12 +14,13 @@ 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);
}
}

View File

@ -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;
@ -48,9 +49,10 @@ public class BatchSpanProcessorCpuBenchmark {
@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");
}

View File

@ -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;
@ -39,9 +40,10 @@ public class BatchSpanProcessorDroppedSpansBenchmark {
@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");
}

View File

@ -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;
@ -46,9 +47,10 @@ public class BatchSpanProcessorMultiThreadBenchmark {
@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");
}