Skip to content

Commit

Permalink
Expose a new TracerSdkManagement interface on the OpenTelemetrySdk cl…
Browse files Browse the repository at this point in the history
…ass. (#1723)

* have the TracerSdkProvider return the public interface, rather than a package-access class.

* change the OpenTelemetrySdk to return a management interface, rather than the SDK implementation class directly.

* formatting fix

* rename methods/parameters for the new interface
get rid of almost all production-code references to the TracerSdkProvider

* update some docs that still refer to using the old method/class
  • Loading branch information
jkwatson authored Oct 2, 2020
1 parent 790018f commit 0746ddb
Show file tree
Hide file tree
Showing 50 changed files with 279 additions and 215 deletions.
14 changes: 7 additions & 7 deletions QUICKSTART.md
Original file line number Diff line number Diff line change
Expand Up @@ -388,29 +388,29 @@ a particular backend. OpenTelemetry offers four exporters out of the box:
Other exporters can be found in the [OpenTelemetry Registry].

```java
tracerProvider.addSpanProcessor(
tracerSdkManagement.addSpanProcessor(
SimpleSpanProcessor.newBuilder(InMemorySpanExporter.create()).build());
tracerProvider.addSpanProcessor(
tracerSdkManagement.addSpanProcessor(
SimpleSpanProcessor.newBuilder(new LoggingSpanExporter()).build());

ManagedChannel jaegerChannel =
ManagedChannelBuilder.forAddress([ip:String], [port:int]).usePlaintext().build();
JaegerGrpcSpanExporter jaegerExporter = JaegerGrpcSpanExporter.newBuilder()
.setServiceName("example").setChannel(jaegerChannel).setDeadline(30000)
.build();
tracerProvider.addSpanProcessor(BatchSpanProcessor.newBuilder(
tracerSdkManagement.addSpanProcessor(BatchSpanProcessor.newBuilder(
jaegerExporter
).build());
```

### TraceConfig

The `TraceConfig` associated with a `TracerSdkProvider` can be updated via system properties,
The `TraceConfig` associated with a Tracer SDK can be updated via system properties,
environment variables and builder `set*` methods.

```java
// Get TraceConfig associated with TracerSdkProvider
TraceConfig traceConfig = OpenTelemetrySdk.getTracerProvider().getActiveTraceConfig();
// Get TraceConfig associated with TracerSdk
TracerConfig traceConfig = OpenTelemetrySdk.getTracerSdkManagement().getActiveTraceConfig();

// Get TraceConfig Builder
Builder builder = traceConfig.toBuilder();
Expand All @@ -425,7 +425,7 @@ builder.readEnvironmentVariables()
builder.setMaxNumberOfLinks(10);

// Update the resulting TraceConfig instance
OpenTelemetrySdk.getTracerProvider().updateActiveTraceConfig(builder.build());
OpenTelemetrySdk.getTracerSdkManagement().updateActiveTraceConfig(builder.build());
```

Supported system properties and environment variables:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,15 @@
import com.google.auto.value.AutoValue;
import io.opentelemetry.OpenTelemetry;
import io.opentelemetry.context.propagation.DefaultContextPropagators;
import io.opentelemetry.sdk.trace.TracerSdkProvider;
import io.opentelemetry.sdk.trace.TracerSdkManagement;
import io.opentelemetry.sdk.trace.export.SimpleSpanProcessor;
import io.opentelemetry.trace.propagation.HttpTraceContext;
import javax.annotation.concurrent.Immutable;

/**
* InMemoryTracing is an utility class that helps installing the {@link SimpleSpanProcessor} and an
* instance of the {@link InMemorySpanExporter} to a given {@link TracerSdkProvider}. Can be used to
* test OpenTelemetry integration.
* instance of the {@link InMemorySpanExporter} to a given {@link TracerSdkManagement}. Can be used
* to test OpenTelemetry integration.
*
* <p>Example usage:
*
Expand All @@ -36,7 +36,7 @@
* public void testCondition() {
* TracerSdkProvider tracerSdkProvider = TracerSdkProvider.builder().build()
* InMemoryTracing tracing =
* InMemoryTracing.builder().setTracerSdkProvider(tracerSdkProvider).build();
* InMemoryTracing.builder().setTracerSdkManagement(tracerSdkProvider).build();
* Tracer tracer = tracerSdkProvider.getTracer("MyTestClass");
* tracer.spanBuilder("span").startSpan().end();
*
Expand All @@ -52,12 +52,12 @@
@Immutable
public abstract class InMemoryTracing {
/**
* Returns the {@code TracerSdkProvider} passed during construction.
* Returns the {@code TracerSdkManagement} passed during construction.
*
* @return the {@code TracerSdkProvider} passed during construction.
* @return the {@code TracerSdkManagement} passed during construction.
* @since 0.1.0
*/
abstract TracerSdkProvider getTracerProvider();
abstract TracerSdkManagement getTracerSdkManagement();

/**
* Returns the installed {@link InMemorySpanExporter}.
Expand All @@ -83,11 +83,11 @@ public static Builder builder() {
*/
@AutoValue.Builder
public abstract static class Builder {
public abstract Builder setTracerProvider(TracerSdkProvider tracerProvider);
public abstract Builder setTracerSdkManagement(TracerSdkManagement tracerSdkManagement);

abstract Builder setSpanExporter(InMemorySpanExporter exporter);

abstract TracerSdkProvider getTracerProvider();
abstract TracerSdkManagement getTracerSdkManagement();

abstract InMemoryTracing autoBuild();

Expand All @@ -104,7 +104,7 @@ public final InMemoryTracing build() {
.addTextMapPropagator(HttpTraceContext.getInstance())
.build());
InMemorySpanExporter exporter = InMemorySpanExporter.create();
getTracerProvider().addSpanProcessor(SimpleSpanProcessor.newBuilder(exporter).build());
getTracerSdkManagement().addSpanProcessor(SimpleSpanProcessor.newBuilder(exporter).build());
return setSpanExporter(exporter).autoBuild();
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,20 +31,20 @@
class InMemoryTracingTest {
private final TracerSdkProvider tracerSdkProvider = TracerSdkProvider.builder().build();
private final InMemoryTracing tracing =
InMemoryTracing.builder().setTracerProvider(tracerSdkProvider).build();
InMemoryTracing.builder().setTracerSdkManagement(tracerSdkProvider).build();
private final Tracer tracer = tracerSdkProvider.get("InMemoryTracing");

@Test
void defaultInstance() {
assertThat(tracing.getTracerProvider()).isSameAs(tracerSdkProvider);
assertThat(tracing.getTracerSdkManagement()).isSameAs(tracerSdkProvider);
assertThat(tracing.getSpanExporter().getFinishedSpanItems()).hasSize(0);
}

@Test
void ctor_nullTracer() {
assertThrows(
NullPointerException.class,
() -> InMemoryTracing.builder().setTracerProvider(null).build(),
() -> InMemoryTracing.builder().setTracerSdkManagement(null).build(),
"tracerProvider");
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ private static void setupJaegerExporter() {
.setChannel(jaegerChannel)
.setDeadlineMs(30000)
.build();
OpenTelemetrySdk.getTracerProvider()
OpenTelemetrySdk.getTracerManagement()
.addSpanProcessor(SimpleSpanProcessor.newBuilder(jaegerExporter).build());
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ private void setupJaegerExporter() {
.build();

// Set to process the spans by the Jaeger Exporter
OpenTelemetrySdk.getTracerProvider()
OpenTelemetrySdk.getTracerManagement()
.addSpanProcessor(SimpleSpanProcessor.newBuilder(jaegerExporter).build());
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,11 @@
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNull;

import io.opentelemetry.OpenTelemetry;
import io.opentelemetry.baggage.DefaultBaggageManager;
import io.opentelemetry.exporters.inmemory.InMemoryTracing;
import io.opentelemetry.opentracingshim.TraceShim;
import io.opentelemetry.sdk.trace.TracerSdkProvider;
import io.opentelemetry.sdk.OpenTelemetrySdk;
import io.opentelemetry.sdk.trace.data.SpanData;
import io.opentelemetry.trace.DefaultSpan;
import io.opentracing.Scope;
Expand All @@ -33,12 +34,14 @@
import org.junit.jupiter.api.Test;

class OpenTelemetryInteroperabilityTest {
private final TracerSdkProvider sdk = TracerSdkProvider.builder().build();
private final io.opentelemetry.trace.Tracer tracer = sdk.get("opentracingshim");
private final io.opentelemetry.trace.Tracer tracer = OpenTelemetry.getTracer("opentracingshim");
private final InMemoryTracing inMemoryTracing =
InMemoryTracing.builder().setTracerProvider(sdk).build();
InMemoryTracing.builder()
.setTracerSdkManagement(OpenTelemetrySdk.getTracerManagement())
.build();
private final Tracer otTracer =
TraceShim.createTracerShim(sdk, DefaultBaggageManager.getInstance());
TraceShim.createTracerShim(
OpenTelemetry.getTracerProvider(), DefaultBaggageManager.getInstance());

@BeforeEach
void before() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ class ActiveSpanReplacementTest {

private final TracerSdkProvider sdk = TracerSdkProvider.builder().build();
private final InMemoryTracing inMemoryTracing =
InMemoryTracing.builder().setTracerProvider(sdk).build();
InMemoryTracing.builder().setTracerSdkManagement(sdk).build();
private final Tracer tracer = TraceShim.createTracerShim(sdk, new BaggageManagerSdk());
private final ExecutorService executor = Executors.newCachedThreadPool();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@
class ActorPropagationTest {
private final TracerSdkProvider sdk = TracerSdkProvider.builder().build();
private final InMemoryTracing inMemoryTracing =
InMemoryTracing.builder().setTracerProvider(sdk).build();
InMemoryTracing.builder().setTracerSdkManagement(sdk).build();
private final Tracer tracer = TraceShim.createTracerShim(sdk, new BaggageManagerSdk());
private Phaser phaser;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
public final class BaggageHandlingTest {
private final TracerSdkProvider sdk = TracerSdkProvider.builder().build();
private final InMemoryTracing inMemoryTracing =
InMemoryTracing.builder().setTracerProvider(sdk).build();
InMemoryTracing.builder().setTracerSdkManagement(sdk).build();
private final Tracer tracer = TraceShim.createTracerShim(sdk, new BaggageManagerSdk());
private final ExecutorService executor = Executors.newCachedThreadPool();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ class TestClientServerTest {

private final TracerSdkProvider sdk = TracerSdkProvider.builder().build();
private final InMemoryTracing inMemoryTracing =
InMemoryTracing.builder().setTracerProvider(sdk).build();
InMemoryTracing.builder().setTracerSdkManagement(sdk).build();
private final Tracer tracer = TraceShim.createTracerShim(sdk, new BaggageManagerSdk());
private final ArrayBlockingQueue<Message> queue = new ArrayBlockingQueue<>(10);
private Server server;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ class HandlerTest {

private final TracerSdkProvider sdk = TracerSdkProvider.builder().build();
private final InMemoryTracing inMemoryTracing =
InMemoryTracing.builder().setTracerProvider(sdk).build();
InMemoryTracing.builder().setTracerSdkManagement(sdk).build();
private final Tracer tracer = TraceShim.createTracerShim(sdk, new BaggageManagerSdk());
private final Client client = new Client(new RequestHandler(tracer));

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ public final class ErrorReportingTest {

private final TracerSdkProvider sdk = TracerSdkProvider.builder().build();
private final InMemoryTracing inMemoryTracing =
InMemoryTracing.builder().setTracerProvider(sdk).build();
InMemoryTracing.builder().setTracerSdkManagement(sdk).build();
private final Tracer tracer = TraceShim.createTracerShim(sdk, new BaggageManagerSdk());
private final ExecutorService executor = Executors.newCachedThreadPool();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@
public final class LateSpanFinishTest {
private final TracerSdkProvider sdk = TracerSdkProvider.builder().build();
private final InMemoryTracing inMemoryTracing =
InMemoryTracing.builder().setTracerProvider(sdk).build();
InMemoryTracing.builder().setTracerSdkManagement(sdk).build();
private final Tracer tracer = TraceShim.createTracerShim(sdk, new BaggageManagerSdk());
private final ExecutorService executor = Executors.newCachedThreadPool();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
class ListenerTest {
private final TracerSdkProvider sdk = TracerSdkProvider.builder().build();
private final InMemoryTracing inMemoryTracing =
InMemoryTracing.builder().setTracerProvider(sdk).build();
InMemoryTracing.builder().setTracerSdkManagement(sdk).build();
private final Tracer tracer = TraceShim.createTracerShim(sdk, new BaggageManagerSdk());

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@
class MultipleCallbacksTest {
private final TracerSdkProvider sdk = TracerSdkProvider.builder().build();
private final InMemoryTracing inMemoryTracing =
InMemoryTracing.builder().setTracerProvider(sdk).build();
InMemoryTracing.builder().setTracerSdkManagement(sdk).build();
private final Tracer tracer = TraceShim.createTracerShim(sdk, new BaggageManagerSdk());

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ public final class NestedCallbacksTest {

private final TracerSdkProvider sdk = TracerSdkProvider.builder().build();
private final InMemoryTracing inMemoryTracing =
InMemoryTracing.builder().setTracerProvider(sdk).build();
InMemoryTracing.builder().setTracerSdkManagement(sdk).build();
private final Tracer tracer = TraceShim.createTracerShim(sdk, new BaggageManagerSdk());
private final ExecutorService executor = Executors.newCachedThreadPool();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@
class PromisePropagationTest {
private final TracerSdkProvider sdk = TracerSdkProvider.builder().build();
private final InMemoryTracing inMemoryTracing =
InMemoryTracing.builder().setTracerProvider(sdk).build();
InMemoryTracing.builder().setTracerSdkManagement(sdk).build();
private final Tracer tracer = TraceShim.createTracerShim(sdk, new BaggageManagerSdk());
private Phaser phaser;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ public final class HandlerTest {

private final TracerSdkProvider sdk = TracerSdkProvider.builder().build();
private final InMemoryTracing inMemoryTracing =
InMemoryTracing.builder().setTracerProvider(sdk).build();
InMemoryTracing.builder().setTracerSdkManagement(sdk).build();
private final Tracer tracer = TraceShim.createTracerShim(sdk, new BaggageManagerSdk());
private final Client client = new Client(new RequestHandler(tracer));

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@
class SuspendResumePropagationTest {
private final TracerSdkProvider sdk = TracerSdkProvider.builder().build();
private final InMemoryTracing inMemoryTracing =
InMemoryTracing.builder().setTracerProvider(sdk).build();
InMemoryTracing.builder().setTracerSdkManagement(sdk).build();
private final Tracer tracer = TraceShim.createTracerShim(sdk, new BaggageManagerSdk());

@BeforeEach
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,11 @@

package io.opentelemetry.sdk.trace;

import io.opentelemetry.OpenTelemetry;
import io.opentelemetry.sdk.OpenTelemetrySdk;
import io.opentelemetry.sdk.trace.config.TraceConfig;
import io.opentelemetry.trace.Span.Kind;
import io.opentelemetry.trace.Tracer;
import java.util.concurrent.TimeUnit;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.Fork;
Expand All @@ -35,7 +37,7 @@
@State(Scope.Benchmark)
public class SpanAttributeTruncateBenchmark {

private final TracerSdk tracerSdk = OpenTelemetrySdk.getTracerProvider().get("benchmarkTracer");
private final Tracer tracerSdk = OpenTelemetry.getTracer("benchmarkTracer");
private SpanBuilderSdk spanBuilderSdk;

public String shortValue = "short";
Expand All @@ -48,12 +50,12 @@ public class SpanAttributeTruncateBenchmark {
@Setup(Level.Trial)
public final void setup() {
TraceConfig config =
OpenTelemetrySdk.getTracerProvider()
OpenTelemetrySdk.getTracerManagement()
.getActiveTraceConfig()
.toBuilder()
.setMaxLengthOfAttributeValues(maxLength)
.build();
OpenTelemetrySdk.getTracerProvider().updateActiveTraceConfig(config);
OpenTelemetrySdk.getTracerManagement().updateActiveTraceConfig(config);
spanBuilderSdk =
(SpanBuilderSdk)
tracerSdk
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,10 @@

package io.opentelemetry.sdk.trace;

import io.opentelemetry.sdk.OpenTelemetrySdk;
import io.opentelemetry.OpenTelemetry;
import io.opentelemetry.trace.Span.Kind;
import io.opentelemetry.trace.Status;
import io.opentelemetry.trace.Tracer;
import java.util.concurrent.TimeUnit;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.Fork;
Expand All @@ -34,7 +35,7 @@
@State(Scope.Benchmark)
public class SpanBenchmark {

private final TracerSdk tracerSdk = OpenTelemetrySdk.getTracerProvider().get("benchmarkTracer");
private final Tracer tracerSdk = OpenTelemetry.getTracer("benchmarkTracer");
private RecordEventsReadableSpan span;

@Setup(Level.Trial)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import static io.opentelemetry.common.AttributesKeys.longKey;
import static io.opentelemetry.common.AttributesKeys.stringKey;

import io.opentelemetry.OpenTelemetry;
import io.opentelemetry.common.AttributeKey;
import io.opentelemetry.common.Attributes;
import io.opentelemetry.sdk.OpenTelemetrySdk;
Expand All @@ -31,6 +32,7 @@
import io.opentelemetry.trace.Span;
import io.opentelemetry.trace.Span.Kind;
import io.opentelemetry.trace.Status;
import io.opentelemetry.trace.Tracer;
import java.util.Collection;
import java.util.concurrent.TimeUnit;
import org.openjdk.jmh.annotations.Benchmark;
Expand All @@ -52,12 +54,12 @@ public class SpanPipelineBenchmark {
private static final AttributeKey<String> STRING_ATTRIBUTE_KEY = stringKey("stringAttribute");
private static final AttributeKey<Double> DOUBLE_ATTRIBUTE_KEY = doubleKey("doubleAttribute");
private static final AttributeKey<Boolean> BOOLEAN_ATTRIBUTE_KEY = booleanKey("booleanAttribute");
private final TracerSdk tracerSdk = OpenTelemetrySdk.getTracerProvider().get("benchmarkTracer");
private final Tracer tracer = OpenTelemetry.getTracerProvider().get("benchmarkTracer");

@Setup(Level.Trial)
public final void setup() {
SpanExporter exporter = new NoOpSpanExporter();
OpenTelemetrySdk.getTracerProvider()
OpenTelemetrySdk.getTracerManagement()
.addSpanProcessor(SimpleSpanProcessor.newBuilder(exporter).build());
}

Expand All @@ -73,7 +75,7 @@ public void runThePipeline_05Threads() {

private void doWork() {
Span span =
tracerSdk
tracer
.spanBuilder("benchmarkSpan")
.setSpanKind(Kind.CLIENT)
.setAttribute("key", "value")
Expand Down
Loading

0 comments on commit 0746ddb

Please sign in to comment.