Deprecate OpenTelemetry SPI. (#2453)
This commit is contained in:
parent
5daa50ffdc
commit
75e01110e4
|
@ -9,9 +9,9 @@ import static java.util.Objects.requireNonNull;
|
||||||
|
|
||||||
import io.opentelemetry.api.trace.TracerProvider;
|
import io.opentelemetry.api.trace.TracerProvider;
|
||||||
import io.opentelemetry.context.propagation.ContextPropagators;
|
import io.opentelemetry.context.propagation.ContextPropagators;
|
||||||
import io.opentelemetry.spi.trace.TracerProviderFactory;
|
|
||||||
|
|
||||||
/** Builder class for {@link DefaultOpenTelemetry}. */
|
/** Builder class for {@link DefaultOpenTelemetry}. */
|
||||||
|
@SuppressWarnings("deprecation") // Remove after deleting OpenTelemetry SPI
|
||||||
public final class DefaultOpenTelemetryBuilder {
|
public final class DefaultOpenTelemetryBuilder {
|
||||||
private ContextPropagators propagators = ContextPropagators.noop();
|
private ContextPropagators propagators = ContextPropagators.noop();
|
||||||
private TracerProvider tracerProvider;
|
private TracerProvider tracerProvider;
|
||||||
|
@ -55,7 +55,8 @@ public final class DefaultOpenTelemetryBuilder {
|
||||||
public OpenTelemetry build() {
|
public OpenTelemetry build() {
|
||||||
TracerProvider tracerProvider = this.tracerProvider;
|
TracerProvider tracerProvider = this.tracerProvider;
|
||||||
if (tracerProvider == null) {
|
if (tracerProvider == null) {
|
||||||
TracerProviderFactory tracerProviderFactory = Utils.loadSpi(TracerProviderFactory.class);
|
io.opentelemetry.spi.trace.TracerProviderFactory tracerProviderFactory =
|
||||||
|
Utils.loadSpi(io.opentelemetry.spi.trace.TracerProviderFactory.class);
|
||||||
if (tracerProviderFactory != null) {
|
if (tracerProviderFactory != null) {
|
||||||
tracerProvider = tracerProviderFactory.create();
|
tracerProvider = tracerProviderFactory.create();
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -8,8 +8,6 @@ package io.opentelemetry.api;
|
||||||
import io.opentelemetry.api.trace.Tracer;
|
import io.opentelemetry.api.trace.Tracer;
|
||||||
import io.opentelemetry.api.trace.TracerProvider;
|
import io.opentelemetry.api.trace.TracerProvider;
|
||||||
import io.opentelemetry.context.propagation.ContextPropagators;
|
import io.opentelemetry.context.propagation.ContextPropagators;
|
||||||
import io.opentelemetry.spi.OpenTelemetryFactory;
|
|
||||||
import io.opentelemetry.spi.trace.TracerProviderFactory;
|
|
||||||
import java.lang.reflect.InvocationTargetException;
|
import java.lang.reflect.InvocationTargetException;
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
@ -20,11 +18,6 @@ import javax.annotation.Nullable;
|
||||||
* A global singleton for the entrypoint to telemetry functionality for tracing, metrics and
|
* A global singleton for the entrypoint to telemetry functionality for tracing, metrics and
|
||||||
* baggage.
|
* baggage.
|
||||||
*
|
*
|
||||||
* <p>The global singleton can be retrieved by {@link #get()}. The default for the returned {@link
|
|
||||||
* OpenTelemetry}, if none has been set via {@link #set(OpenTelemetry)}, will be created with any
|
|
||||||
* {@link OpenTelemetryFactory}, or {@link TracerProviderFactory} found on the classpath, or
|
|
||||||
* otherwise will be default, with no-op behavior.
|
|
||||||
*
|
|
||||||
* <p>If using the OpenTelemetry SDK, you may want to instantiate the {@link OpenTelemetry} to
|
* <p>If using the OpenTelemetry SDK, you may want to instantiate the {@link OpenTelemetry} to
|
||||||
* provide configuration, for example of {@code Resource} or {@code Sampler}. See {@code
|
* provide configuration, for example of {@code Resource} or {@code Sampler}. See {@code
|
||||||
* OpenTelemetrySdk} and {@code OpenTelemetrySdk.builder} for information on how to construct the
|
* OpenTelemetrySdk} and {@code OpenTelemetrySdk.builder} for information on how to construct the
|
||||||
|
@ -33,6 +26,7 @@ import javax.annotation.Nullable;
|
||||||
* @see TracerProvider
|
* @see TracerProvider
|
||||||
* @see ContextPropagators
|
* @see ContextPropagators
|
||||||
*/
|
*/
|
||||||
|
@SuppressWarnings("deprecation") // Remove after deleting OpenTelemetry SPI
|
||||||
public final class GlobalOpenTelemetry {
|
public final class GlobalOpenTelemetry {
|
||||||
|
|
||||||
private static final Logger logger = Logger.getLogger(GlobalOpenTelemetry.class.getName());
|
private static final Logger logger = Logger.getLogger(GlobalOpenTelemetry.class.getName());
|
||||||
|
@ -44,10 +38,7 @@ public final class GlobalOpenTelemetry {
|
||||||
private GlobalOpenTelemetry() {}
|
private GlobalOpenTelemetry() {}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the registered global {@link OpenTelemetry}. If no call to {@link #set(OpenTelemetry)}
|
* Returns the registered global {@link OpenTelemetry}.
|
||||||
* has been made so far, a default {@link OpenTelemetry} composed of functionality any {@link
|
|
||||||
* OpenTelemetryFactory}, or {@link TracerProviderFactory} found on the classpath, or otherwise
|
|
||||||
* will be default, with no-op behavior.
|
|
||||||
*
|
*
|
||||||
* @throws IllegalStateException if a provider has been specified by system property using the
|
* @throws IllegalStateException if a provider has been specified by system property using the
|
||||||
* interface FQCN but the specified provider cannot be found.
|
* interface FQCN but the specified provider cannot be found.
|
||||||
|
@ -63,7 +54,8 @@ public final class GlobalOpenTelemetry {
|
||||||
return autoConfigured;
|
return autoConfigured;
|
||||||
}
|
}
|
||||||
|
|
||||||
OpenTelemetryFactory openTelemetryFactory = Utils.loadSpi(OpenTelemetryFactory.class);
|
io.opentelemetry.spi.OpenTelemetryFactory openTelemetryFactory =
|
||||||
|
Utils.loadSpi(io.opentelemetry.spi.OpenTelemetryFactory.class);
|
||||||
if (openTelemetryFactory != null) {
|
if (openTelemetryFactory != null) {
|
||||||
set(openTelemetryFactory.create());
|
set(openTelemetryFactory.create());
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -14,7 +14,12 @@ import io.opentelemetry.api.OpenTelemetry;
|
||||||
*
|
*
|
||||||
* <p>A specific implementation can be selected by setting the system property {@code
|
* <p>A specific implementation can be selected by setting the system property {@code
|
||||||
* io.opentelemetry.spi.OpenTelemetryFactory} with the value of the fully qualified class name.
|
* io.opentelemetry.spi.OpenTelemetryFactory} with the value of the fully qualified class name.
|
||||||
|
*
|
||||||
|
* @deprecated Use {@link io.opentelemetry.api.DefaultOpenTelemetry#builder} to initialize
|
||||||
|
* OpenTelemetry with a custom provider, or {@code OpenTelemetrySdk#builder} or {@code
|
||||||
|
* opentelemetry-sdk-extension-autoconfigure} to configure the default SDK.
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
public interface OpenTelemetryFactory {
|
public interface OpenTelemetryFactory {
|
||||||
|
|
||||||
/** Returns a new {@link OpenTelemetry} instance. */
|
/** Returns a new {@link OpenTelemetry} instance. */
|
||||||
|
|
|
@ -18,8 +18,12 @@ import javax.annotation.concurrent.ThreadSafe;
|
||||||
* io.opentelemetry.trace.spi.TracerProviderFactory} with value of fully qualified class name.
|
* io.opentelemetry.trace.spi.TracerProviderFactory} with value of fully qualified class name.
|
||||||
*
|
*
|
||||||
* @see OpenTelemetry
|
* @see OpenTelemetry
|
||||||
|
* @deprecated Use {@link io.opentelemetry.api.DefaultOpenTelemetry#builder} to initialize
|
||||||
|
* OpenTelemetry with a custom provider, or {@code OpenTelemetrySdk#builder} or {@code
|
||||||
|
* opentelemetry-sdk-extension-autoconfigure} to configure the default SDK.
|
||||||
*/
|
*/
|
||||||
@ThreadSafe
|
@ThreadSafe
|
||||||
|
@Deprecated
|
||||||
public interface TracerProviderFactory {
|
public interface TracerProviderFactory {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -14,7 +14,6 @@ import io.opentelemetry.api.trace.SpanBuilder;
|
||||||
import io.opentelemetry.api.trace.Tracer;
|
import io.opentelemetry.api.trace.Tracer;
|
||||||
import io.opentelemetry.api.trace.TracerProvider;
|
import io.opentelemetry.api.trace.TracerProvider;
|
||||||
import io.opentelemetry.context.propagation.ContextPropagators;
|
import io.opentelemetry.context.propagation.ContextPropagators;
|
||||||
import io.opentelemetry.spi.trace.TracerProviderFactory;
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileWriter;
|
import java.io.FileWriter;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
@ -25,6 +24,7 @@ import org.junit.jupiter.api.AfterEach;
|
||||||
import org.junit.jupiter.api.BeforeAll;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
@SuppressWarnings("deprecation") // Remove after deleting OpenTelemetry SPI
|
||||||
class OpenTelemetryTest {
|
class OpenTelemetryTest {
|
||||||
|
|
||||||
@BeforeAll
|
@BeforeAll
|
||||||
|
@ -35,7 +35,7 @@ class OpenTelemetryTest {
|
||||||
@AfterEach
|
@AfterEach
|
||||||
void after() {
|
void after() {
|
||||||
GlobalOpenTelemetry.reset();
|
GlobalOpenTelemetry.reset();
|
||||||
System.clearProperty(TracerProviderFactory.class.getName());
|
System.clearProperty(io.opentelemetry.spi.trace.TracerProviderFactory.class.getName());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -66,7 +66,7 @@ class OpenTelemetryTest {
|
||||||
void testTracerLoadArbitrary() throws IOException {
|
void testTracerLoadArbitrary() throws IOException {
|
||||||
File serviceFile =
|
File serviceFile =
|
||||||
createService(
|
createService(
|
||||||
TracerProviderFactory.class,
|
io.opentelemetry.spi.trace.TracerProviderFactory.class,
|
||||||
FirstTracerProviderFactory.class,
|
FirstTracerProviderFactory.class,
|
||||||
SecondTracerProviderFactory.class);
|
SecondTracerProviderFactory.class);
|
||||||
try {
|
try {
|
||||||
|
@ -85,11 +85,12 @@ class OpenTelemetryTest {
|
||||||
void testTracerSystemProperty() throws IOException {
|
void testTracerSystemProperty() throws IOException {
|
||||||
File serviceFile =
|
File serviceFile =
|
||||||
createService(
|
createService(
|
||||||
TracerProviderFactory.class,
|
io.opentelemetry.spi.trace.TracerProviderFactory.class,
|
||||||
FirstTracerProviderFactory.class,
|
FirstTracerProviderFactory.class,
|
||||||
SecondTracerProviderFactory.class);
|
SecondTracerProviderFactory.class);
|
||||||
System.setProperty(
|
System.setProperty(
|
||||||
TracerProviderFactory.class.getName(), SecondTracerProviderFactory.class.getName());
|
io.opentelemetry.spi.trace.TracerProviderFactory.class.getName(),
|
||||||
|
SecondTracerProviderFactory.class.getName());
|
||||||
try {
|
try {
|
||||||
assertThat(GlobalOpenTelemetry.getTracerProvider().get(""))
|
assertThat(GlobalOpenTelemetry.getTracerProvider().get(""))
|
||||||
.isInstanceOf(SecondTracerProviderFactory.class);
|
.isInstanceOf(SecondTracerProviderFactory.class);
|
||||||
|
@ -100,7 +101,8 @@ class OpenTelemetryTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testTracerNotFound() {
|
void testTracerNotFound() {
|
||||||
System.setProperty(TracerProviderFactory.class.getName(), "io.does.not.exists");
|
System.setProperty(
|
||||||
|
io.opentelemetry.spi.trace.TracerProviderFactory.class.getName(), "io.does.not.exists");
|
||||||
assertThatThrownBy(() -> GlobalOpenTelemetry.getTracer("testTracer"))
|
assertThatThrownBy(() -> GlobalOpenTelemetry.getTracer("testTracer"))
|
||||||
.isInstanceOf(IllegalStateException.class);
|
.isInstanceOf(IllegalStateException.class);
|
||||||
}
|
}
|
||||||
|
@ -169,7 +171,7 @@ class OpenTelemetryTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class FirstTracerProviderFactory
|
public static class FirstTracerProviderFactory
|
||||||
implements Tracer, TracerProvider, TracerProviderFactory {
|
implements Tracer, TracerProvider, io.opentelemetry.spi.trace.TracerProviderFactory {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Tracer get(String instrumentationName) {
|
public Tracer get(String instrumentationName) {
|
||||||
|
|
|
@ -6,13 +6,13 @@
|
||||||
package io.opentelemetry.sdk;
|
package io.opentelemetry.sdk;
|
||||||
|
|
||||||
import io.opentelemetry.api.OpenTelemetry;
|
import io.opentelemetry.api.OpenTelemetry;
|
||||||
import io.opentelemetry.spi.OpenTelemetryFactory;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Factory SPI implementation to register a {@link OpenTelemetrySdk} as the default {@link
|
* Factory SPI implementation to register a {@link OpenTelemetrySdk} as the default {@link
|
||||||
* OpenTelemetry}.
|
* OpenTelemetry}.
|
||||||
*/
|
*/
|
||||||
public final class OpenTelemetrySdkFactory implements OpenTelemetryFactory {
|
@SuppressWarnings("deprecation") // Remove after deleting OpenTelemetry SPI
|
||||||
|
public final class OpenTelemetrySdkFactory implements io.opentelemetry.spi.OpenTelemetryFactory {
|
||||||
@Override
|
@Override
|
||||||
public OpenTelemetry create() {
|
public OpenTelemetry create() {
|
||||||
return OpenTelemetrySdk.builder().build();
|
return OpenTelemetrySdk.builder().build();
|
||||||
|
|
|
@ -7,10 +7,11 @@ package io.opentelemetry.sdk.trace.spi;
|
||||||
|
|
||||||
import io.opentelemetry.api.trace.TracerProvider;
|
import io.opentelemetry.api.trace.TracerProvider;
|
||||||
import io.opentelemetry.sdk.trace.SdkTracerProvider;
|
import io.opentelemetry.sdk.trace.SdkTracerProvider;
|
||||||
import io.opentelemetry.spi.trace.TracerProviderFactory;
|
|
||||||
|
|
||||||
/** SDK implementation of the {@link TracerProviderFactory} for SPI. */
|
/** SDK implementation of tracing. */
|
||||||
public final class SdkTracerProviderFactory implements TracerProviderFactory {
|
@SuppressWarnings("deprecation") // Remove after deleting OpenTelemetry SPI
|
||||||
|
public final class SdkTracerProviderFactory
|
||||||
|
implements io.opentelemetry.spi.trace.TracerProviderFactory {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TracerProvider create() {
|
public TracerProvider create() {
|
||||||
|
|
Loading…
Reference in New Issue