diff --git a/api/src/jmh/java/io/opentelemetry/trace/propagation/HttpTraceContextInjectBenchmark.java b/api/src/jmh/java/io/opentelemetry/trace/propagation/HttpTraceContextInjectBenchmark.java index 63169d339df..2bc8cc69e96 100644 --- a/api/src/jmh/java/io/opentelemetry/trace/propagation/HttpTraceContextInjectBenchmark.java +++ b/api/src/jmh/java/io/opentelemetry/trace/propagation/HttpTraceContextInjectBenchmark.java @@ -7,7 +7,7 @@ import io.opentelemetry.context.Context; import io.opentelemetry.context.propagation.TextMapPropagator.Setter; -import io.opentelemetry.trace.DefaultSpan; +import io.opentelemetry.trace.Span; import io.opentelemetry.trace.SpanContext; import io.opentelemetry.trace.TraceFlags; import io.opentelemetry.trace.TraceState; @@ -75,7 +75,7 @@ private static SpanContext createTestSpanContext(String traceId, String spanId) private static List createContexts(List spanContexts) { List contexts = new ArrayList<>(); for (SpanContext context : spanContexts) { - contexts.add(TracingContextUtils.withSpan(DefaultSpan.create(context), Context.root())); + contexts.add(TracingContextUtils.withSpan(Span.wrap(context), Context.root())); } return contexts; } diff --git a/api/src/main/java/io/opentelemetry/trace/DefaultTracer.java b/api/src/main/java/io/opentelemetry/trace/DefaultTracer.java index ae44195853d..04e6b7a5f5a 100644 --- a/api/src/main/java/io/opentelemetry/trace/DefaultTracer.java +++ b/api/src/main/java/io/opentelemetry/trace/DefaultTracer.java @@ -59,9 +59,7 @@ public Span startSpan() { spanContext = TracingContextUtils.getCurrentSpan().getContext(); } - return spanContext != null && !SpanContext.getInvalid().equals(spanContext) - ? new DefaultSpan(spanContext) - : DefaultSpan.getInvalid(); + return Span.wrap(spanContext); } @Override diff --git a/api/src/main/java/io/opentelemetry/trace/DefaultSpan.java b/api/src/main/java/io/opentelemetry/trace/PropagatedSpan.java similarity index 71% rename from api/src/main/java/io/opentelemetry/trace/DefaultSpan.java rename to api/src/main/java/io/opentelemetry/trace/PropagatedSpan.java index 64308ee5638..bdbb25d5b48 100644 --- a/api/src/main/java/io/opentelemetry/trace/DefaultSpan.java +++ b/api/src/main/java/io/opentelemetry/trace/PropagatedSpan.java @@ -12,36 +12,15 @@ /** * The {@code DefaultSpan} is the default {@link Span} that is used when no {@code Span} * implementation is available. All operations are no-op except context propagation. - * - *

Used also to stop tracing, see {@link Tracer#withSpan}. */ @Immutable -public final class DefaultSpan implements Span { +final class PropagatedSpan implements Span { - private static final DefaultSpan INVALID = new DefaultSpan(SpanContext.getInvalid()); - - /** - * Returns a {@link DefaultSpan} with an invalid {@link SpanContext}. - * - * @return a {@code DefaultSpan} with an invalid {@code SpanContext}. - */ - public static Span getInvalid() { - return INVALID; - } - - /** - * Creates an instance of this class with the {@link SpanContext}. - * - * @param spanContext the {@code SpanContext}. - * @return a {@link DefaultSpan}. - */ - public static Span create(SpanContext spanContext) { - return new DefaultSpan(spanContext); - } + static final PropagatedSpan INVALID = new PropagatedSpan(SpanContext.getInvalid()); private final SpanContext spanContext; - DefaultSpan(SpanContext spanContext) { + PropagatedSpan(SpanContext spanContext) { this.spanContext = spanContext; } diff --git a/api/src/main/java/io/opentelemetry/trace/Span.java b/api/src/main/java/io/opentelemetry/trace/Span.java index e8cccfaedbb..fa3540f9cf1 100644 --- a/api/src/main/java/io/opentelemetry/trace/Span.java +++ b/api/src/main/java/io/opentelemetry/trace/Span.java @@ -21,6 +21,26 @@ @ThreadSafe public interface Span { + /** + * Returns an invalid {@link Span}. An invalid {@link Span} is used when tracing is disabled, + * usually because there is no OpenTelemetry SDK installed. + */ + static Span getInvalid() { + return PropagatedSpan.INVALID; + } + + /** + * Returns a non-recording {@link Span} that holds the provided {@link SpanContext} but has no + * functionality. It will not be exported and all tracing operations are no-op, but it can be used + * to propagate a valid {@link SpanContext} downstream. + */ + static Span wrap(SpanContext spanContext) { + if (spanContext == null || !spanContext.isValid()) { + return getInvalid(); + } + return new PropagatedSpan(spanContext); + } + /** * Type of span. Can be used to specify additional relationships between spans in addition to a * parent/child relationship. diff --git a/api/src/main/java/io/opentelemetry/trace/Tracer.java b/api/src/main/java/io/opentelemetry/trace/Tracer.java index 83e1a4c4ec8..71ad062a15f 100644 --- a/api/src/main/java/io/opentelemetry/trace/Tracer.java +++ b/api/src/main/java/io/opentelemetry/trace/Tracer.java @@ -78,7 +78,8 @@ public interface Tracer { * *

Supports try-with-resource idiom. * - *

Can be called with {@link DefaultSpan} to enter a scope of code where tracing is stopped. + *

Can be called with {@code Span.getPropagated(span.getContext())} to enter a scope of code + * where tracing is stopped. * *

Example of usage: * diff --git a/api/src/main/java/io/opentelemetry/trace/TracingContextUtils.java b/api/src/main/java/io/opentelemetry/trace/TracingContextUtils.java index 6bb7d27efef..5e0af1161c5 100644 --- a/api/src/main/java/io/opentelemetry/trace/TracingContextUtils.java +++ b/api/src/main/java/io/opentelemetry/trace/TracingContextUtils.java @@ -47,7 +47,7 @@ public static Span getCurrentSpan() { */ public static Span getSpan(Context context) { Span span = context.getValue(CONTEXT_SPAN_KEY); - return span == null ? DefaultSpan.getInvalid() : span; + return span == null ? Span.getInvalid() : span; } /** diff --git a/api/src/main/java/io/opentelemetry/trace/propagation/HttpTraceContext.java b/api/src/main/java/io/opentelemetry/trace/propagation/HttpTraceContext.java index 1a725e99cfc..d05757c5219 100644 --- a/api/src/main/java/io/opentelemetry/trace/propagation/HttpTraceContext.java +++ b/api/src/main/java/io/opentelemetry/trace/propagation/HttpTraceContext.java @@ -10,7 +10,7 @@ import io.opentelemetry.context.Context; import io.opentelemetry.context.propagation.TextMapPropagator; import io.opentelemetry.internal.TemporaryBuffers; -import io.opentelemetry.trace.DefaultSpan; +import io.opentelemetry.trace.Span; import io.opentelemetry.trace.SpanContext; import io.opentelemetry.trace.SpanId; import io.opentelemetry.trace.TraceFlags; @@ -149,7 +149,7 @@ public void inject(Context context, C carrier, Setter setter) { return context; } - return TracingContextUtils.withSpan(DefaultSpan.create(spanContext), context); + return TracingContextUtils.withSpan(Span.wrap(spanContext), context); } private static SpanContext extractImpl(C carrier, Getter getter) { diff --git a/api/src/test/java/io/opentelemetry/trace/DefaultTracerTest.java b/api/src/test/java/io/opentelemetry/trace/DefaultTracerTest.java index 6b31805d60f..52a74c8a3d9 100644 --- a/api/src/test/java/io/opentelemetry/trace/DefaultTracerTest.java +++ b/api/src/test/java/io/opentelemetry/trace/DefaultTracerTest.java @@ -31,16 +31,16 @@ class DefaultTracerTest { @Test void defaultGetCurrentSpan() { - assertThat(defaultTracer.getCurrentSpan()).isInstanceOf(DefaultSpan.class); + assertThat(defaultTracer.getCurrentSpan().getContext().isValid()).isFalse(); } @Test void getCurrentSpan_WithSpan() { - assertThat(defaultTracer.getCurrentSpan()).isInstanceOf(DefaultSpan.class); - try (Scope ws = defaultTracer.withSpan(DefaultSpan.getInvalid())) { - assertThat(defaultTracer.getCurrentSpan()).isInstanceOf(DefaultSpan.class); + assertThat(defaultTracer.getCurrentSpan().getContext().isValid()).isFalse(); + try (Scope ws = defaultTracer.withSpan(Span.getInvalid())) { + assertThat(defaultTracer.getCurrentSpan().getContext().isValid()).isFalse(); } - assertThat(defaultTracer.getCurrentSpan()).isInstanceOf(DefaultSpan.class); + assertThat(defaultTracer.getCurrentSpan().getContext().isValid()).isFalse(); } @Test @@ -50,7 +50,7 @@ void spanBuilderWithName_NullName() { @Test void defaultSpanBuilderWithName() { - assertThat(defaultTracer.spanBuilder(SPAN_NAME).startSpan()).isInstanceOf(DefaultSpan.class); + assertThat(defaultTracer.spanBuilder(SPAN_NAME).startSpan().getContext().isValid()).isFalse(); } @Test @@ -65,7 +65,7 @@ void testInProcessContext() { assertThat(defaultTracer.getCurrentSpan()).isEqualTo(span); } } - assertThat(defaultTracer.getCurrentSpan()).isInstanceOf(DefaultSpan.class); + assertThat(defaultTracer.getCurrentSpan().getContext().isValid()).isFalse(); } @Test @@ -73,15 +73,14 @@ void testSpanContextPropagationExplicitParent() { Span span = defaultTracer .spanBuilder(SPAN_NAME) - .setParent( - TracingContextUtils.withSpan(DefaultSpan.create(spanContext), Context.root())) + .setParent(TracingContextUtils.withSpan(Span.wrap(spanContext), Context.root())) .startSpan(); assertThat(span.getContext()).isSameAs(spanContext); } @Test void testSpanContextPropagation() { - DefaultSpan parent = new DefaultSpan(spanContext); + Span parent = Span.wrap(spanContext); Span span = defaultTracer @@ -106,7 +105,7 @@ void testSpanContextPropagation_nullContext() { @Test void testSpanContextPropagation_fromContext() { - Context context = TracingContextUtils.withSpan(new DefaultSpan(spanContext), Context.current()); + Context context = TracingContextUtils.withSpan(Span.wrap(spanContext), Context.current()); Span span = defaultTracer.spanBuilder(SPAN_NAME).setParent(context).startSpan(); assertThat(span.getContext()).isSameAs(spanContext); @@ -114,7 +113,7 @@ void testSpanContextPropagation_fromContext() { @Test void testSpanContextPropagation_fromContextAfterNoParent() { - Context context = TracingContextUtils.withSpan(new DefaultSpan(spanContext), Context.current()); + Context context = TracingContextUtils.withSpan(Span.wrap(spanContext), Context.current()); Span span = defaultTracer.spanBuilder(SPAN_NAME).setNoParent().setParent(context).startSpan(); assertThat(span.getContext()).isSameAs(spanContext); @@ -122,7 +121,7 @@ void testSpanContextPropagation_fromContextAfterNoParent() { @Test void testSpanContextPropagation_fromContextThenNoParent() { - Context context = TracingContextUtils.withSpan(new DefaultSpan(spanContext), Context.current()); + Context context = TracingContextUtils.withSpan(Span.wrap(spanContext), Context.current()); Span span = defaultTracer.spanBuilder(SPAN_NAME).setParent(context).setNoParent().startSpan(); assertThat(span.getContext()).isEqualTo(SpanContext.getInvalid()); @@ -130,7 +129,7 @@ void testSpanContextPropagation_fromContextThenNoParent() { @Test void testSpanContextPropagationCurrentSpan() { - DefaultSpan parent = new DefaultSpan(spanContext); + Span parent = Span.wrap(spanContext); try (Scope scope = defaultTracer.withSpan(parent)) { Span span = defaultTracer.spanBuilder(SPAN_NAME).startSpan(); assertThat(span.getContext()).isSameAs(spanContext); @@ -139,8 +138,7 @@ void testSpanContextPropagationCurrentSpan() { @Test void testSpanContextPropagationCurrentSpanContext() { - Context context = - TracingContextUtils.withSpan(DefaultSpan.create(spanContext), Context.current()); + Context context = TracingContextUtils.withSpan(Span.wrap(spanContext), Context.current()); try (Scope scope = context.makeCurrent()) { Span span = defaultTracer.spanBuilder(SPAN_NAME).startSpan(); assertThat(span.getContext()).isSameAs(spanContext); diff --git a/api/src/test/java/io/opentelemetry/trace/DefaultSpanTest.java b/api/src/test/java/io/opentelemetry/trace/PropagatedSpanTest.java similarity index 91% rename from api/src/test/java/io/opentelemetry/trace/DefaultSpanTest.java rename to api/src/test/java/io/opentelemetry/trace/PropagatedSpanTest.java index 17203520c98..25206561156 100644 --- a/api/src/test/java/io/opentelemetry/trace/DefaultSpanTest.java +++ b/api/src/test/java/io/opentelemetry/trace/PropagatedSpanTest.java @@ -17,19 +17,18 @@ import io.opentelemetry.common.Attributes; import org.junit.jupiter.api.Test; -/** Unit tests for {@link DefaultSpan}. */ -class DefaultSpanTest { +class PropagatedSpanTest { @Test void hasInvalidContextAndDefaultSpanOptions() { - SpanContext context = DefaultSpan.getInvalid().getContext(); + SpanContext context = Span.getInvalid().getContext(); assertThat(context.getTraceFlags()).isEqualTo(TraceFlags.getDefault()); assertThat(context.getTraceState()).isEqualTo(TraceState.getDefault()); } @Test void doNotCrash() { - Span span = DefaultSpan.getInvalid(); + Span span = Span.getInvalid(); span.setAttribute(stringKey("MyStringAttributeKey"), "MyStringAttributeValue"); span.setAttribute(booleanKey("MyBooleanAttributeKey"), true); span.setAttribute(longKey("MyLongAttributeKey"), 123L); @@ -56,7 +55,7 @@ void doNotCrash() { @Test void defaultSpan_ToString() { - Span span = DefaultSpan.getInvalid(); + Span span = Span.getInvalid(); assertThat(span.toString()).isEqualTo("DefaultSpan"); } } diff --git a/api/src/test/java/io/opentelemetry/trace/SpanBuilderTest.java b/api/src/test/java/io/opentelemetry/trace/SpanBuilderTest.java index 7671f5ae8d2..f4009302f41 100644 --- a/api/src/test/java/io/opentelemetry/trace/SpanBuilderTest.java +++ b/api/src/test/java/io/opentelemetry/trace/SpanBuilderTest.java @@ -22,18 +22,18 @@ class SpanBuilderTest { void doNotCrash_NoopImplementation() { Span.Builder spanBuilder = tracer.spanBuilder("MySpanName"); spanBuilder.setSpanKind(Kind.SERVER); - spanBuilder.setParent(TracingContextUtils.withSpan(DefaultSpan.create(null), Context.root())); + spanBuilder.setParent(TracingContextUtils.withSpan(Span.wrap(null), Context.root())); spanBuilder.setParent(Context.root()); spanBuilder.setNoParent(); - spanBuilder.addLink(DefaultSpan.getInvalid().getContext()); - spanBuilder.addLink(DefaultSpan.getInvalid().getContext(), Attributes.empty()); + spanBuilder.addLink(Span.getInvalid().getContext()); + spanBuilder.addLink(Span.getInvalid().getContext(), Attributes.empty()); spanBuilder.setAttribute("key", "value"); spanBuilder.setAttribute("key", 12345L); spanBuilder.setAttribute("key", .12345); spanBuilder.setAttribute("key", true); spanBuilder.setAttribute(stringKey("key"), "value"); spanBuilder.setStartTimestamp(12345L); - assertThat(spanBuilder.startSpan()).isInstanceOf(DefaultSpan.class); + assertThat(spanBuilder.startSpan().getContext().isValid()).isFalse(); } @Test diff --git a/api/src/test/java/io/opentelemetry/trace/TracingContextUtilsTest.java b/api/src/test/java/io/opentelemetry/trace/TracingContextUtilsTest.java index b44561ffbc9..b67f295bfa3 100644 --- a/api/src/test/java/io/opentelemetry/trace/TracingContextUtilsTest.java +++ b/api/src/test/java/io/opentelemetry/trace/TracingContextUtilsTest.java @@ -16,12 +16,12 @@ class TracingContextUtilsTest { @Test void testGetCurrentSpan_Default() { Span span = TracingContextUtils.getCurrentSpan(); - assertThat(span).isSameAs(DefaultSpan.getInvalid()); + assertThat(span).isSameAs(Span.getInvalid()); } @Test void testGetCurrentSpan_SetSpan() { - Span span = DefaultSpan.create(SpanContext.getInvalid()); + Span span = Span.wrap(SpanContext.getInvalid()); try (Scope ignored = TracingContextUtils.withSpan(span, Context.current()).makeCurrent()) { assertThat(TracingContextUtils.getCurrentSpan()).isSameAs(span); } @@ -30,12 +30,12 @@ void testGetCurrentSpan_SetSpan() { @Test void testGetSpan_DefaultContext() { Span span = TracingContextUtils.getSpan(Context.current()); - assertThat(span).isSameAs(DefaultSpan.getInvalid()); + assertThat(span).isSameAs(Span.getInvalid()); } @Test void testGetSpan_ExplicitContext() { - Span span = DefaultSpan.create(SpanContext.getInvalid()); + Span span = Span.wrap(SpanContext.getInvalid()); Context context = TracingContextUtils.withSpan(span, Context.current()); assertThat(TracingContextUtils.getSpan(context)).isSameAs(span); } @@ -48,7 +48,7 @@ void testGetSpanWithoutDefault_DefaultContext() { @Test void testGetSpanWithoutDefault_ExplicitContext() { - Span span = DefaultSpan.create(SpanContext.getInvalid()); + Span span = Span.wrap(SpanContext.getInvalid()); Context context = TracingContextUtils.withSpan(span, Context.current()); assertThat(TracingContextUtils.getSpanWithoutDefault(context)).isSameAs(span); } diff --git a/api/src/test/java/io/opentelemetry/trace/propagation/HttpTraceContextTest.java b/api/src/test/java/io/opentelemetry/trace/propagation/HttpTraceContextTest.java index 47ca8bae4f7..4c2f5a2f9d5 100644 --- a/api/src/test/java/io/opentelemetry/trace/propagation/HttpTraceContextTest.java +++ b/api/src/test/java/io/opentelemetry/trace/propagation/HttpTraceContextTest.java @@ -13,7 +13,7 @@ import io.opentelemetry.context.Context; import io.opentelemetry.context.propagation.TextMapPropagator.Getter; import io.opentelemetry.context.propagation.TextMapPropagator.Setter; -import io.opentelemetry.trace.DefaultSpan; +import io.opentelemetry.trace.Span; import io.opentelemetry.trace.SpanContext; import io.opentelemetry.trace.SpanId; import io.opentelemetry.trace.TraceFlags; @@ -52,7 +52,7 @@ private static SpanContext getSpanContext(Context context) { } private static Context withSpanContext(SpanContext spanContext, Context context) { - return TracingContextUtils.withSpan(DefaultSpan.create(spanContext), context); + return TracingContextUtils.withSpan(Span.wrap(spanContext), context); } @Test diff --git a/extensions/trace_propagators/src/jmh/java/io/opentelemetry/extensions/trace/propagation/PropagatorContextInjectBenchmark.java b/extensions/trace_propagators/src/jmh/java/io/opentelemetry/extensions/trace/propagation/PropagatorContextInjectBenchmark.java index c591a2361b8..7431a43ce5b 100644 --- a/extensions/trace_propagators/src/jmh/java/io/opentelemetry/extensions/trace/propagation/PropagatorContextInjectBenchmark.java +++ b/extensions/trace_propagators/src/jmh/java/io/opentelemetry/extensions/trace/propagation/PropagatorContextInjectBenchmark.java @@ -7,7 +7,7 @@ import io.opentelemetry.context.Context; import io.opentelemetry.context.propagation.TextMapPropagator; -import io.opentelemetry.trace.DefaultSpan; +import io.opentelemetry.trace.Span; import io.opentelemetry.trace.SpanContext; import io.opentelemetry.trace.TraceFlags; import io.opentelemetry.trace.TraceState; @@ -62,8 +62,7 @@ public abstract static class AbstractContextInjectBenchmark { @BenchmarkMode(Mode.AverageTime) @Fork(1) public Map measureInject() { - Context context = - TracingContextUtils.withSpan(DefaultSpan.create(contextToTest), Context.current()); + Context context = TracingContextUtils.withSpan(Span.wrap(contextToTest), Context.current()); doInject(context, carrier); return carrier; } diff --git a/extensions/trace_propagators/src/main/java/io/opentelemetry/extensions/trace/propagation/AwsXRayPropagator.java b/extensions/trace_propagators/src/main/java/io/opentelemetry/extensions/trace/propagation/AwsXRayPropagator.java index bff169da186..7ca3a61f331 100644 --- a/extensions/trace_propagators/src/main/java/io/opentelemetry/extensions/trace/propagation/AwsXRayPropagator.java +++ b/extensions/trace_propagators/src/main/java/io/opentelemetry/extensions/trace/propagation/AwsXRayPropagator.java @@ -7,7 +7,6 @@ import io.opentelemetry.context.Context; import io.opentelemetry.context.propagation.TextMapPropagator; -import io.opentelemetry.trace.DefaultSpan; import io.opentelemetry.trace.Span; import io.opentelemetry.trace.SpanContext; import io.opentelemetry.trace.SpanId; @@ -128,7 +127,7 @@ public Context extract(Context context, C carrier, Getter getter) { return context; } - return TracingContextUtils.withSpan(DefaultSpan.create(spanContext), context); + return TracingContextUtils.withSpan(Span.wrap(spanContext), context); } private static SpanContext getSpanContextFromHeader(C carrier, Getter getter) { diff --git a/extensions/trace_propagators/src/main/java/io/opentelemetry/extensions/trace/propagation/B3PropagatorExtractorMultipleHeaders.java b/extensions/trace_propagators/src/main/java/io/opentelemetry/extensions/trace/propagation/B3PropagatorExtractorMultipleHeaders.java index 501a168150c..8a83305637f 100644 --- a/extensions/trace_propagators/src/main/java/io/opentelemetry/extensions/trace/propagation/B3PropagatorExtractorMultipleHeaders.java +++ b/extensions/trace_propagators/src/main/java/io/opentelemetry/extensions/trace/propagation/B3PropagatorExtractorMultipleHeaders.java @@ -11,7 +11,7 @@ import io.opentelemetry.context.Context; import io.opentelemetry.context.propagation.TextMapPropagator; -import io.opentelemetry.trace.DefaultSpan; +import io.opentelemetry.trace.Span; import io.opentelemetry.trace.SpanContext; import io.opentelemetry.trace.TracingContextUtils; import java.util.Objects; @@ -34,7 +34,7 @@ public Optional extract( return Optional.empty(); } - return Optional.of(TracingContextUtils.withSpan(DefaultSpan.create(spanContext), context)); + return Optional.of(TracingContextUtils.withSpan(Span.wrap(spanContext), context)); } private static SpanContext getSpanContextFromMultipleHeaders( diff --git a/extensions/trace_propagators/src/main/java/io/opentelemetry/extensions/trace/propagation/B3PropagatorExtractorSingleHeader.java b/extensions/trace_propagators/src/main/java/io/opentelemetry/extensions/trace/propagation/B3PropagatorExtractorSingleHeader.java index 6b593636d7d..286eeb3ada0 100644 --- a/extensions/trace_propagators/src/main/java/io/opentelemetry/extensions/trace/propagation/B3PropagatorExtractorSingleHeader.java +++ b/extensions/trace_propagators/src/main/java/io/opentelemetry/extensions/trace/propagation/B3PropagatorExtractorSingleHeader.java @@ -10,7 +10,7 @@ import io.opentelemetry.context.Context; import io.opentelemetry.context.propagation.TextMapPropagator; -import io.opentelemetry.trace.DefaultSpan; +import io.opentelemetry.trace.Span; import io.opentelemetry.trace.SpanContext; import io.opentelemetry.trace.TracingContextUtils; import java.util.Objects; @@ -33,7 +33,7 @@ public Optional extract( return Optional.empty(); } - return Optional.of(TracingContextUtils.withSpan(DefaultSpan.create(spanContext), context)); + return Optional.of(TracingContextUtils.withSpan(Span.wrap(spanContext), context)); } @SuppressWarnings("StringSplitter") diff --git a/extensions/trace_propagators/src/main/java/io/opentelemetry/extensions/trace/propagation/JaegerPropagator.java b/extensions/trace_propagators/src/main/java/io/opentelemetry/extensions/trace/propagation/JaegerPropagator.java index bb47fe1c169..1248f545952 100644 --- a/extensions/trace_propagators/src/main/java/io/opentelemetry/extensions/trace/propagation/JaegerPropagator.java +++ b/extensions/trace_propagators/src/main/java/io/opentelemetry/extensions/trace/propagation/JaegerPropagator.java @@ -7,7 +7,7 @@ import io.opentelemetry.context.Context; import io.opentelemetry.context.propagation.TextMapPropagator; -import io.opentelemetry.trace.DefaultSpan; +import io.opentelemetry.trace.Span; import io.opentelemetry.trace.SpanContext; import io.opentelemetry.trace.SpanId; import io.opentelemetry.trace.TraceFlags; @@ -118,7 +118,7 @@ public Context extract(Context context, C carrier, Getter getter) { return context; } - return TracingContextUtils.withSpan(DefaultSpan.create(spanContext), context); + return TracingContextUtils.withSpan(Span.wrap(spanContext), context); } @SuppressWarnings("StringSplitter") diff --git a/extensions/trace_propagators/src/main/java/io/opentelemetry/extensions/trace/propagation/OtTracerPropagator.java b/extensions/trace_propagators/src/main/java/io/opentelemetry/extensions/trace/propagation/OtTracerPropagator.java index 50baa75095d..2283c017cb5 100644 --- a/extensions/trace_propagators/src/main/java/io/opentelemetry/extensions/trace/propagation/OtTracerPropagator.java +++ b/extensions/trace_propagators/src/main/java/io/opentelemetry/extensions/trace/propagation/OtTracerPropagator.java @@ -9,7 +9,7 @@ import io.opentelemetry.context.Context; import io.opentelemetry.context.propagation.TextMapPropagator; -import io.opentelemetry.trace.DefaultSpan; +import io.opentelemetry.trace.Span; import io.opentelemetry.trace.SpanContext; import io.opentelemetry.trace.TraceId; import io.opentelemetry.trace.TracingContextUtils; @@ -79,7 +79,7 @@ public Context extract(Context context, C carrier, Getter getter) { if (!spanContext.isValid()) { return context; } - return TracingContextUtils.withSpan(DefaultSpan.create(spanContext), context); + return TracingContextUtils.withSpan(Span.wrap(spanContext), context); } static SpanContext buildSpanContext(String traceId, String spanId, String sampled) { diff --git a/extensions/trace_propagators/src/test/java/io/opentelemetry/extensions/trace/propagation/AwsXRayPropagatorTest.java b/extensions/trace_propagators/src/test/java/io/opentelemetry/extensions/trace/propagation/AwsXRayPropagatorTest.java index 6d7cbe6a884..8f0912cc340 100644 --- a/extensions/trace_propagators/src/test/java/io/opentelemetry/extensions/trace/propagation/AwsXRayPropagatorTest.java +++ b/extensions/trace_propagators/src/test/java/io/opentelemetry/extensions/trace/propagation/AwsXRayPropagatorTest.java @@ -10,7 +10,7 @@ import io.opentelemetry.context.Context; import io.opentelemetry.context.propagation.TextMapPropagator; -import io.opentelemetry.trace.DefaultSpan; +import io.opentelemetry.trace.Span; import io.opentelemetry.trace.SpanContext; import io.opentelemetry.trace.TraceFlags; import io.opentelemetry.trace.TraceState; @@ -244,7 +244,7 @@ void extract_InvalidFlags_NonNumeric() { } private static Context withSpanContext(SpanContext spanContext, Context context) { - return TracingContextUtils.withSpan(DefaultSpan.create(spanContext), context); + return TracingContextUtils.withSpan(Span.wrap(spanContext), context); } private static SpanContext getSpanContext(Context context) { diff --git a/extensions/trace_propagators/src/test/java/io/opentelemetry/extensions/trace/propagation/B3PropagatorTest.java b/extensions/trace_propagators/src/test/java/io/opentelemetry/extensions/trace/propagation/B3PropagatorTest.java index 89e425e0d1f..50f33071347 100644 --- a/extensions/trace_propagators/src/test/java/io/opentelemetry/extensions/trace/propagation/B3PropagatorTest.java +++ b/extensions/trace_propagators/src/test/java/io/opentelemetry/extensions/trace/propagation/B3PropagatorTest.java @@ -10,7 +10,7 @@ import io.opentelemetry.context.Context; import io.opentelemetry.context.propagation.TextMapPropagator.Getter; import io.opentelemetry.context.propagation.TextMapPropagator.Setter; -import io.opentelemetry.trace.DefaultSpan; +import io.opentelemetry.trace.Span; import io.opentelemetry.trace.SpanContext; import io.opentelemetry.trace.SpanId; import io.opentelemetry.trace.TraceFlags; @@ -54,7 +54,7 @@ private static SpanContext getSpanContext(Context context) { } private static Context withSpanContext(SpanContext spanContext, Context context) { - return TracingContextUtils.withSpan(DefaultSpan.create(spanContext), context); + return TracingContextUtils.withSpan(Span.wrap(spanContext), context); } @Test diff --git a/extensions/trace_propagators/src/test/java/io/opentelemetry/extensions/trace/propagation/JaegerPropagatorTest.java b/extensions/trace_propagators/src/test/java/io/opentelemetry/extensions/trace/propagation/JaegerPropagatorTest.java index 3f9731a1469..2c2e2b88cb7 100644 --- a/extensions/trace_propagators/src/test/java/io/opentelemetry/extensions/trace/propagation/JaegerPropagatorTest.java +++ b/extensions/trace_propagators/src/test/java/io/opentelemetry/extensions/trace/propagation/JaegerPropagatorTest.java @@ -15,7 +15,7 @@ import io.opentelemetry.context.Context; import io.opentelemetry.context.propagation.TextMapPropagator; import io.opentelemetry.context.propagation.TextMapPropagator.Setter; -import io.opentelemetry.trace.DefaultSpan; +import io.opentelemetry.trace.Span; import io.opentelemetry.trace.SpanContext; import io.opentelemetry.trace.SpanId; import io.opentelemetry.trace.TraceFlags; @@ -64,7 +64,7 @@ private static SpanContext getSpanContext(Context context) { } private static Context withSpanContext(SpanContext spanContext, Context context) { - return TracingContextUtils.withSpan(DefaultSpan.create(spanContext), context); + return TracingContextUtils.withSpan(Span.wrap(spanContext), context); } @Test diff --git a/extensions/trace_propagators/src/test/java/io/opentelemetry/extensions/trace/propagation/OtTracerPropagatorTest.java b/extensions/trace_propagators/src/test/java/io/opentelemetry/extensions/trace/propagation/OtTracerPropagatorTest.java index 2286dccfc58..363a0f743d4 100644 --- a/extensions/trace_propagators/src/test/java/io/opentelemetry/extensions/trace/propagation/OtTracerPropagatorTest.java +++ b/extensions/trace_propagators/src/test/java/io/opentelemetry/extensions/trace/propagation/OtTracerPropagatorTest.java @@ -10,7 +10,7 @@ import io.opentelemetry.context.Context; import io.opentelemetry.context.propagation.TextMapPropagator.Getter; import io.opentelemetry.context.propagation.TextMapPropagator.Setter; -import io.opentelemetry.trace.DefaultSpan; +import io.opentelemetry.trace.Span; import io.opentelemetry.trace.SpanContext; import io.opentelemetry.trace.SpanId; import io.opentelemetry.trace.TraceFlags; @@ -40,7 +40,7 @@ private static SpanContext getSpanContext(Context context) { } private static Context withSpanContext(SpanContext spanContext, Context context) { - return TracingContextUtils.withSpan(DefaultSpan.create(spanContext), context); + return TracingContextUtils.withSpan(Span.wrap(spanContext), context); } @Test diff --git a/extensions/trace_propagators/src/test/java/io/opentelemetry/extensions/trace/propagation/TraceMultiPropagatorTest.java b/extensions/trace_propagators/src/test/java/io/opentelemetry/extensions/trace/propagation/TraceMultiPropagatorTest.java index d6e7226fe62..fc2b984efd5 100644 --- a/extensions/trace_propagators/src/test/java/io/opentelemetry/extensions/trace/propagation/TraceMultiPropagatorTest.java +++ b/extensions/trace_propagators/src/test/java/io/opentelemetry/extensions/trace/propagation/TraceMultiPropagatorTest.java @@ -14,7 +14,6 @@ import io.opentelemetry.context.Context; import io.opentelemetry.context.propagation.TextMapPropagator; -import io.opentelemetry.trace.DefaultSpan; import io.opentelemetry.trace.Span; import io.opentelemetry.trace.SpanContext; import io.opentelemetry.trace.SpanId; @@ -38,7 +37,7 @@ class TraceMultiPropagatorTest { private static final TextMapPropagator PROPAGATOR3 = HttpTraceContext.getInstance(); private static final Span SPAN = - DefaultSpan.create( + Span.wrap( SpanContext.createFromRemoteParent( TraceId.fromLongs(1245, 67890), SpanId.fromLong(12345), diff --git a/extensions/trace_utils/src/test/java/io/opentelemetry/extensions/trace/CurrentSpanUtilsTest.java b/extensions/trace_utils/src/test/java/io/opentelemetry/extensions/trace/CurrentSpanUtilsTest.java index 10c5e23286c..166b92b0b1a 100644 --- a/extensions/trace_utils/src/test/java/io/opentelemetry/extensions/trace/CurrentSpanUtilsTest.java +++ b/extensions/trace_utils/src/test/java/io/opentelemetry/extensions/trace/CurrentSpanUtilsTest.java @@ -9,7 +9,6 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoInteractions; -import io.opentelemetry.trace.DefaultSpan; import io.opentelemetry.trace.Span; import io.opentelemetry.trace.StatusCanonicalCode; import io.opentelemetry.trace.TracingContextUtils; @@ -54,7 +53,7 @@ private void executeCallableAndExpectError(Callable callable, Throwable @Test void withSpanRunnable() { - assertThat(getCurrentSpan()).isInstanceOf(DefaultSpan.class); + assertThat(getCurrentSpan().getContext().isValid()).isFalse(); Runnable runnable = () -> { // When we run the runnable we will have the span in the current Context. @@ -62,12 +61,12 @@ void withSpanRunnable() { }; CurrentSpanUtils.withSpan(span, false, runnable).run(); verifyNoInteractions(span); - assertThat(getCurrentSpan()).isInstanceOf(DefaultSpan.class); + assertThat(getCurrentSpan().getContext().isValid()).isFalse(); } @Test void withSpanRunnable_EndSpan() { - assertThat(getCurrentSpan()).isInstanceOf(DefaultSpan.class); + assertThat(getCurrentSpan().getContext().isValid()).isFalse(); Runnable runnable = () -> { // When we run the runnable we will have the span in the current Context. @@ -75,13 +74,13 @@ void withSpanRunnable_EndSpan() { }; CurrentSpanUtils.withSpan(span, true, runnable).run(); verify(span).end(); - assertThat(getCurrentSpan()).isInstanceOf(DefaultSpan.class); + assertThat(getCurrentSpan().getContext().isValid()).isFalse(); } @Test void withSpanRunnable_WithError() { final AssertionError error = new AssertionError("MyError"); - assertThat(getCurrentSpan()).isInstanceOf(DefaultSpan.class); + assertThat(getCurrentSpan().getContext().isValid()).isFalse(); Runnable runnable = () -> { // When we run the runnable we will have the span in the current Context. @@ -91,13 +90,13 @@ void withSpanRunnable_WithError() { executeRunnableAndExpectError(runnable, error); verify(span).setStatus(StatusCanonicalCode.ERROR, "MyError"); verify(span).end(); - assertThat(getCurrentSpan()).isInstanceOf(DefaultSpan.class); + assertThat(getCurrentSpan().getContext().isValid()).isFalse(); } @Test void withSpanRunnable_WithErrorNoMessage() { final AssertionError error = new AssertionError(); - assertThat(getCurrentSpan()).isInstanceOf(DefaultSpan.class); + assertThat(getCurrentSpan().getContext().isValid()).isFalse(); Runnable runnable = () -> { // When we run the runnable we will have the span in the current Context. @@ -107,13 +106,13 @@ void withSpanRunnable_WithErrorNoMessage() { executeRunnableAndExpectError(runnable, error); verify(span).setStatus(StatusCanonicalCode.ERROR, "AssertionError"); verify(span).end(); - assertThat(getCurrentSpan()).isInstanceOf(DefaultSpan.class); + assertThat(getCurrentSpan().getContext().isValid()).isFalse(); } @Test void withSpanCallable() throws Exception { final Object ret = new Object(); - assertThat(getCurrentSpan()).isInstanceOf(DefaultSpan.class); + assertThat(getCurrentSpan().getContext().isValid()).isFalse(); Callable callable = () -> { // When we run the runnable we will have the span in the current Context. @@ -122,13 +121,13 @@ void withSpanCallable() throws Exception { }; assertThat(CurrentSpanUtils.withSpan(span, false, callable).call()).isEqualTo(ret); verifyNoInteractions(span); - assertThat(getCurrentSpan()).isInstanceOf(DefaultSpan.class); + assertThat(getCurrentSpan().getContext().isValid()).isFalse(); } @Test void withSpanCallable_EndSpan() throws Exception { final Object ret = new Object(); - assertThat(getCurrentSpan()).isInstanceOf(DefaultSpan.class); + assertThat(getCurrentSpan().getContext().isValid()).isFalse(); Callable callable = () -> { // When we run the runnable we will have the span in the current Context. @@ -137,13 +136,13 @@ void withSpanCallable_EndSpan() throws Exception { }; assertThat(CurrentSpanUtils.withSpan(span, true, callable).call()).isEqualTo(ret); verify(span).end(); - assertThat(getCurrentSpan()).isInstanceOf(DefaultSpan.class); + assertThat(getCurrentSpan().getContext().isValid()).isFalse(); } @Test void withSpanCallable_WithException() { final Exception exception = new Exception("MyException"); - assertThat(getCurrentSpan()).isInstanceOf(DefaultSpan.class); + assertThat(getCurrentSpan().getContext().isValid()).isFalse(); Callable callable = () -> { // When we run the runnable we will have the span in the current Context. @@ -153,13 +152,13 @@ void withSpanCallable_WithException() { executeCallableAndExpectError(callable, exception); verify(span).setStatus(StatusCanonicalCode.ERROR, "MyException"); verify(span).end(); - assertThat(getCurrentSpan()).isInstanceOf(DefaultSpan.class); + assertThat(getCurrentSpan().getContext().isValid()).isFalse(); } @Test void withSpanCallable_WithExceptionNoMessage() { final Exception exception = new Exception(); - assertThat(getCurrentSpan()).isInstanceOf(DefaultSpan.class); + assertThat(getCurrentSpan().getContext().isValid()).isFalse(); Callable callable = () -> { // When we run the runnable we will have the span in the current Context. @@ -169,13 +168,13 @@ void withSpanCallable_WithExceptionNoMessage() { executeCallableAndExpectError(callable, exception); verify(span).setStatus(StatusCanonicalCode.ERROR, "Exception"); verify(span).end(); - assertThat(getCurrentSpan()).isInstanceOf(DefaultSpan.class); + assertThat(getCurrentSpan().getContext().isValid()).isFalse(); } @Test void withSpanCallable_WithError() { final AssertionError error = new AssertionError("MyError"); - assertThat(getCurrentSpan()).isInstanceOf(DefaultSpan.class); + assertThat(getCurrentSpan().getContext().isValid()).isFalse(); Callable callable = () -> { // When we run the runnable we will have the span in the current Context. @@ -185,13 +184,13 @@ void withSpanCallable_WithError() { executeCallableAndExpectError(callable, error); verify(span).setStatus(StatusCanonicalCode.ERROR, "MyError"); verify(span).end(); - assertThat(getCurrentSpan()).isInstanceOf(DefaultSpan.class); + assertThat(getCurrentSpan().getContext().isValid()).isFalse(); } @Test void withSpanCallable_WithErrorNoMessage() { final AssertionError error = new AssertionError(); - assertThat(getCurrentSpan()).isInstanceOf(DefaultSpan.class); + assertThat(getCurrentSpan().getContext().isValid()).isFalse(); Callable callable = () -> { // When we run the runnable we will have the span in the current Context. @@ -201,7 +200,7 @@ void withSpanCallable_WithErrorNoMessage() { executeCallableAndExpectError(callable, error); verify(span).setStatus(StatusCanonicalCode.ERROR, "AssertionError"); verify(span).end(); - assertThat(getCurrentSpan()).isInstanceOf(DefaultSpan.class); + assertThat(getCurrentSpan().getContext().isValid()).isFalse(); } private static Span getCurrentSpan() { diff --git a/opentracing_shim/src/main/java/io/opentelemetry/opentracingshim/Propagation.java b/opentracing_shim/src/main/java/io/opentelemetry/opentracingshim/Propagation.java index 8a95ef8b338..c2b3ae4cff2 100644 --- a/opentracing_shim/src/main/java/io/opentelemetry/opentracingshim/Propagation.java +++ b/opentracing_shim/src/main/java/io/opentelemetry/opentracingshim/Propagation.java @@ -8,7 +8,6 @@ import io.opentelemetry.baggage.BaggageUtils; import io.opentelemetry.context.Context; import io.opentelemetry.context.propagation.TextMapPropagator; -import io.opentelemetry.trace.DefaultSpan; import io.opentelemetry.trace.Span; import io.opentelemetry.trace.TracingContextUtils; import io.opentracing.propagation.TextMapExtract; @@ -24,8 +23,7 @@ final class Propagation extends BaseShimObject { public void injectTextMap(SpanContextShim contextShim, TextMapInject carrier) { Context context = - TracingContextUtils.withSpan( - DefaultSpan.create(contextShim.getSpanContext()), Context.current()); + TracingContextUtils.withSpan(Span.wrap(contextShim.getSpanContext()), Context.current()); context = BaggageUtils.withBaggage(contextShim.getBaggage(), context); propagators().getTextMapPropagator().inject(context, carrier, TextMapSetter.INSTANCE); diff --git a/opentracing_shim/src/main/java/io/opentelemetry/opentracingshim/ScopeManagerShim.java b/opentracing_shim/src/main/java/io/opentelemetry/opentracingshim/ScopeManagerShim.java index 24d3c12ab80..c4b976d3070 100644 --- a/opentracing_shim/src/main/java/io/opentelemetry/opentracingshim/ScopeManagerShim.java +++ b/opentracing_shim/src/main/java/io/opentelemetry/opentracingshim/ScopeManagerShim.java @@ -5,7 +5,6 @@ package io.opentelemetry.opentracingshim; -import io.opentelemetry.trace.DefaultSpan; import io.opentracing.Scope; import io.opentracing.ScopeManager; import io.opentracing.Span; @@ -20,10 +19,9 @@ public ScopeManagerShim(TelemetryInfo telemetryInfo) { @SuppressWarnings("ReturnMissingNullable") public Span activeSpan() { // As OpenTracing simply returns null when no active instance is available, - // we need to do an explicit check against DefaultSpan, - // which is used in OpenTelemetry for this very case. + // we need to do map an invalid OpenTelemetry span to null here. io.opentelemetry.trace.Span span = tracer().getCurrentSpan(); - if (DefaultSpan.getInvalid().equals(span)) { + if (!span.getContext().isValid()) { return null; } diff --git a/opentracing_shim/src/main/java/io/opentelemetry/opentracingshim/SpanBuilderShim.java b/opentracing_shim/src/main/java/io/opentelemetry/opentracingshim/SpanBuilderShim.java index c8fcb0adec5..1eb0f0b774c 100644 --- a/opentracing_shim/src/main/java/io/opentelemetry/opentracingshim/SpanBuilderShim.java +++ b/opentracing_shim/src/main/java/io/opentelemetry/opentracingshim/SpanBuilderShim.java @@ -13,7 +13,6 @@ import io.opentelemetry.baggage.Baggage; import io.opentelemetry.common.AttributeKey; import io.opentelemetry.context.Context; -import io.opentelemetry.trace.DefaultSpan; import io.opentelemetry.trace.Span.Kind; import io.opentelemetry.trace.StatusCanonicalCode; import io.opentelemetry.trace.TracingContextUtils; @@ -190,7 +189,8 @@ public Span start() { } else if (parentSpanContext != null) { builder.setParent( TracingContextUtils.withSpan( - DefaultSpan.create(parentSpanContext.getSpanContext()), Context.root())); + io.opentelemetry.trace.Span.wrap(parentSpanContext.getSpanContext()), + Context.root())); baggage = parentSpanContext.getBaggage(); } diff --git a/opentracing_shim/src/test/java/io/opentelemetry/opentracingshim/TracerShimTest.java b/opentracing_shim/src/test/java/io/opentelemetry/opentracingshim/TracerShimTest.java index 7c55060ed64..69ac3bb0096 100644 --- a/opentracing_shim/src/test/java/io/opentelemetry/opentracingshim/TracerShimTest.java +++ b/opentracing_shim/src/test/java/io/opentelemetry/opentracingshim/TracerShimTest.java @@ -5,13 +5,12 @@ package io.opentelemetry.opentracingshim; +import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertNull; -import static org.junit.jupiter.api.Assertions.assertTrue; import io.opentelemetry.OpenTelemetry; -import io.opentelemetry.trace.DefaultSpan; import io.opentracing.Scope; import io.opentracing.Span; import io.opentracing.SpanContext; @@ -82,6 +81,6 @@ void close() { tracerShim.close(); Span otSpan = tracerShim.buildSpan(null).start(); io.opentelemetry.trace.Span span = ((SpanShim) otSpan).getSpan(); - assertTrue(span instanceof DefaultSpan); + assertThat(span.getContext().isValid()).isFalse(); } } diff --git a/opentracing_shim/src/test/java/io/opentelemetry/opentracingshim/testbed/OpenTelemetryInteroperabilityTest.java b/opentracing_shim/src/test/java/io/opentelemetry/opentracingshim/testbed/OpenTelemetryInteroperabilityTest.java index 64c487200bf..9a66728f162 100644 --- a/opentracing_shim/src/test/java/io/opentelemetry/opentracingshim/testbed/OpenTelemetryInteroperabilityTest.java +++ b/opentracing_shim/src/test/java/io/opentelemetry/opentracingshim/testbed/OpenTelemetryInteroperabilityTest.java @@ -5,6 +5,7 @@ package io.opentelemetry.opentracingshim.testbed; +import static org.assertj.core.api.AssertionsForClassTypes.assertThat; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNull; @@ -14,7 +15,6 @@ import io.opentelemetry.opentracingshim.TraceShim; import io.opentelemetry.sdk.OpenTelemetrySdk; import io.opentelemetry.sdk.trace.data.SpanData; -import io.opentelemetry.trace.DefaultSpan; import io.opentracing.Scope; import io.opentracing.Span; import io.opentracing.Tracer; @@ -45,7 +45,7 @@ void sdkContinuesOpenTracingTrace() { } finally { otSpan.finish(); } - assertEquals(tracer.getCurrentSpan().getClass(), DefaultSpan.class); + assertThat(tracer.getCurrentSpan().getContext().isValid()).isFalse(); assertNull(otTracer.activeSpan()); List finishedSpans = inMemoryTracing.getSpanExporter().getFinishedSpanItems(); @@ -62,7 +62,7 @@ void openTracingContinuesSdkTrace() { otelSpan.end(); } - assertEquals(tracer.getCurrentSpan().getClass(), DefaultSpan.class); + assertThat(tracer.getCurrentSpan().getContext().isValid()).isFalse(); assertNull(otTracer.activeSpan()); List finishedSpans = inMemoryTracing.getSpanExporter().getFinishedSpanItems(); diff --git a/sdk/tracing/src/main/java/io/opentelemetry/sdk/trace/SpanBuilderSdk.java b/sdk/tracing/src/main/java/io/opentelemetry/sdk/trace/SpanBuilderSdk.java index 8b229968738..4ab1cc3d41c 100644 --- a/sdk/tracing/src/main/java/io/opentelemetry/sdk/trace/SpanBuilderSdk.java +++ b/sdk/tracing/src/main/java/io/opentelemetry/sdk/trace/SpanBuilderSdk.java @@ -24,7 +24,6 @@ import io.opentelemetry.sdk.trace.config.TraceConfig; import io.opentelemetry.sdk.trace.data.SpanData; import io.opentelemetry.sdk.trace.data.SpanData.Link; -import io.opentelemetry.trace.DefaultSpan; import io.opentelemetry.trace.Span; import io.opentelemetry.trace.Span.Kind; import io.opentelemetry.trace.SpanContext; @@ -212,7 +211,7 @@ public Span startSpan() { traceId, spanId, samplingResultTraceState, Samplers.isSampled(samplingDecision)); if (!Samplers.isRecording(samplingDecision)) { - return DefaultSpan.create(spanContext); + return Span.wrap(spanContext); } ReadableAttributes samplingAttributes = samplingResult.getAttributes(); if (!samplingAttributes.isEmpty()) { diff --git a/sdk/tracing/src/test/java/io/opentelemetry/sdk/trace/SpanBuilderSdkTest.java b/sdk/tracing/src/test/java/io/opentelemetry/sdk/trace/SpanBuilderSdkTest.java index cc0d0f8108a..50e52781b84 100644 --- a/sdk/tracing/src/test/java/io/opentelemetry/sdk/trace/SpanBuilderSdkTest.java +++ b/sdk/tracing/src/test/java/io/opentelemetry/sdk/trace/SpanBuilderSdkTest.java @@ -26,7 +26,6 @@ import io.opentelemetry.sdk.trace.config.TraceConfig; import io.opentelemetry.sdk.trace.data.SpanData; import io.opentelemetry.sdk.trace.data.SpanData.Link; -import io.opentelemetry.trace.DefaultSpan; import io.opentelemetry.trace.Span; import io.opentelemetry.trace.Span.Kind; import io.opentelemetry.trace.SpanContext; @@ -81,8 +80,8 @@ void setParent_null() { void addLink() { // Verify methods do not crash. Span.Builder spanBuilder = tracerSdk.spanBuilder(SPAN_NAME); - spanBuilder.addLink(DefaultSpan.getInvalid().getContext()); - spanBuilder.addLink(DefaultSpan.getInvalid().getContext(), Attributes.empty()); + spanBuilder.addLink(Span.getInvalid().getContext()); + spanBuilder.addLink(Span.getInvalid().getContext(), Attributes.empty()); RecordEventsReadableSpan span = (RecordEventsReadableSpan) spanBuilder.startSpan(); try { @@ -188,8 +187,7 @@ void addLinkSpanContextAttributes_nullContext() { void addLinkSpanContextAttributes_nullAttributes() { assertThrows( NullPointerException.class, - () -> - tracerSdk.spanBuilder(SPAN_NAME).addLink(DefaultSpan.getInvalid().getContext(), null)); + () -> tracerSdk.spanBuilder(SPAN_NAME).addLink(Span.getInvalid().getContext(), null)); } @Test @@ -783,7 +781,7 @@ void parentCurrentSpan() { @Test void parent_invalidContext() { - Span parent = DefaultSpan.getInvalid(); + Span parent = Span.getInvalid(); final Context parentContext = TracingContextUtils.withSpan(parent, Context.current()); RecordEventsReadableSpan span = diff --git a/sdk/tracing/src/test/java/io/opentelemetry/sdk/trace/TracerSdkProviderTest.java b/sdk/tracing/src/test/java/io/opentelemetry/sdk/trace/TracerSdkProviderTest.java index 6ff6f672fb1..a17a905b526 100644 --- a/sdk/tracing/src/test/java/io/opentelemetry/sdk/trace/TracerSdkProviderTest.java +++ b/sdk/tracing/src/test/java/io/opentelemetry/sdk/trace/TracerSdkProviderTest.java @@ -15,7 +15,6 @@ import io.opentelemetry.sdk.common.InstrumentationLibraryInfo; import io.opentelemetry.sdk.resources.Resource; import io.opentelemetry.sdk.trace.config.TraceConfig; -import io.opentelemetry.trace.DefaultSpan; import io.opentelemetry.trace.Span; import io.opentelemetry.trace.Tracer; import org.junit.jupiter.api.BeforeEach; @@ -131,7 +130,7 @@ void shutdownTwice_OnlyFlushSpanProcessorOnce() { void returnNoopSpanAfterShutdown() { tracerFactory.shutdown(); Span span = tracerFactory.get("noop").spanBuilder("span").startSpan(); - assertThat(span).isInstanceOf(DefaultSpan.class); + assertThat(span.getContext().isValid()).isFalse(); span.end(); } } diff --git a/sdk/tracing/src/test/java/io/opentelemetry/sdk/trace/TracerSdkTest.java b/sdk/tracing/src/test/java/io/opentelemetry/sdk/trace/TracerSdkTest.java index 2261f038b81..4662a87d685 100644 --- a/sdk/tracing/src/test/java/io/opentelemetry/sdk/trace/TracerSdkTest.java +++ b/sdk/tracing/src/test/java/io/opentelemetry/sdk/trace/TracerSdkTest.java @@ -15,7 +15,6 @@ import io.opentelemetry.sdk.trace.data.SpanData; import io.opentelemetry.sdk.trace.export.BatchSpanProcessor; import io.opentelemetry.sdk.trace.export.SpanExporter; -import io.opentelemetry.trace.DefaultSpan; import io.opentelemetry.trace.Span; import io.opentelemetry.trace.TracingContextUtils; import java.util.Collection; @@ -52,7 +51,7 @@ void setUp() { @Test void defaultGetCurrentSpan() { - assertThat(tracer.getCurrentSpan()).isInstanceOf(DefaultSpan.class); + assertThat(tracer.getCurrentSpan().getContext().isValid()).isFalse(); } @Test @@ -62,30 +61,30 @@ void defaultSpanBuilder() { @Test void getCurrentSpan() { - assertThat(tracer.getCurrentSpan()).isInstanceOf(DefaultSpan.class); + assertThat(tracer.getCurrentSpan().getContext().isValid()).isFalse(); // Make sure context is detached even if test fails. try (Scope ignored = TracingContextUtils.withSpan(span, Context.current()).makeCurrent()) { assertThat(tracer.getCurrentSpan()).isSameAs(span); } - assertThat(tracer.getCurrentSpan()).isInstanceOf(DefaultSpan.class); + assertThat(tracer.getCurrentSpan().getContext().isValid()).isFalse(); } @Test void withSpan_NullSpan() { - assertThat(tracer.getCurrentSpan()).isInstanceOf(DefaultSpan.class); + assertThat(tracer.getCurrentSpan().getContext().isValid()).isFalse(); try (Scope ignored = tracer.withSpan(null)) { - assertThat(tracer.getCurrentSpan()).isInstanceOf(DefaultSpan.class); + assertThat(tracer.getCurrentSpan().getContext().isValid()).isFalse(); } - assertThat(tracer.getCurrentSpan()).isInstanceOf(DefaultSpan.class); + assertThat(tracer.getCurrentSpan().getContext().isValid()).isFalse(); } @Test void getCurrentSpan_WithSpan() { - assertThat(tracer.getCurrentSpan()).isInstanceOf(DefaultSpan.class); + assertThat(tracer.getCurrentSpan().getContext().isValid()).isFalse(); try (Scope ignored = tracer.withSpan(span)) { assertThat(tracer.getCurrentSpan()).isSameAs(span); } - assertThat(tracer.getCurrentSpan()).isInstanceOf(DefaultSpan.class); + assertThat(tracer.getCurrentSpan().getContext().isValid()).isFalse(); } @Test diff --git a/sdk_extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/activespanreplacement/ActiveSpanReplacementTest.java b/sdk_extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/activespanreplacement/ActiveSpanReplacementTest.java index 2b6b2f2814a..8d8a85151a9 100644 --- a/sdk_extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/activespanreplacement/ActiveSpanReplacementTest.java +++ b/sdk_extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/activespanreplacement/ActiveSpanReplacementTest.java @@ -15,7 +15,6 @@ import io.opentelemetry.exporters.inmemory.InMemoryTracing; import io.opentelemetry.sdk.trace.TracerSdkProvider; import io.opentelemetry.sdk.trace.data.SpanData; -import io.opentelemetry.trace.DefaultSpan; import io.opentelemetry.trace.Span; import io.opentelemetry.trace.SpanId; import io.opentelemetry.trace.Tracer; @@ -61,7 +60,7 @@ void test() { assertThat(spans.get(0).getTraceId()).isNotEqualTo(spans.get(1).getTraceId()); assertThat(spans.get(0).getParentSpanId()).isEqualTo(SpanId.getInvalid()); - assertThat(tracer.getCurrentSpan()).isSameAs(DefaultSpan.getInvalid()); + assertThat(tracer.getCurrentSpan()).isSameAs(Span.getInvalid()); } private void submitAnotherTask(final Span initialSpan) { diff --git a/sdk_extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/actorpropagation/ActorPropagationTest.java b/sdk_extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/actorpropagation/ActorPropagationTest.java index d87a21ab504..d3169276409 100644 --- a/sdk_extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/actorpropagation/ActorPropagationTest.java +++ b/sdk_extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/actorpropagation/ActorPropagationTest.java @@ -12,7 +12,6 @@ import io.opentelemetry.sdk.extensions.trace.testbed.TestUtils; import io.opentelemetry.sdk.trace.TracerSdkProvider; import io.opentelemetry.sdk.trace.data.SpanData; -import io.opentelemetry.trace.DefaultSpan; import io.opentelemetry.trace.Span; import io.opentelemetry.trace.Span.Kind; import io.opentelemetry.trace.Tracer; @@ -73,7 +72,7 @@ void testActorTell() { assertThat(TestUtils.getByKind(finished, Span.Kind.CONSUMER)).hasSize(2); assertThat(TestUtils.getOneByKind(finished, Span.Kind.PRODUCER)).isNotNull(); - assertThat(tracer.getCurrentSpan()).isSameAs(DefaultSpan.getInvalid()); + assertThat(tracer.getCurrentSpan()).isSameAs(Span.getInvalid()); } } @@ -114,7 +113,7 @@ void testActorAsk() throws ExecutionException, InterruptedException { assertThat(TestUtils.getByKind(finished, Span.Kind.CONSUMER)).hasSize(2); assertThat(TestUtils.getOneByKind(finished, Span.Kind.PRODUCER)).isNotNull(); - assertThat(tracer.getCurrentSpan()).isSameAs(DefaultSpan.getInvalid()); + assertThat(tracer.getCurrentSpan()).isSameAs(Span.getInvalid()); } } } diff --git a/sdk_extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/clientserver/TestClientServerTest.java b/sdk_extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/clientserver/TestClientServerTest.java index bd6698e06af..244035856c0 100644 --- a/sdk_extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/clientserver/TestClientServerTest.java +++ b/sdk_extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/clientserver/TestClientServerTest.java @@ -14,7 +14,7 @@ import io.opentelemetry.sdk.extensions.trace.testbed.TestUtils; import io.opentelemetry.sdk.trace.TracerSdkProvider; import io.opentelemetry.sdk.trace.data.SpanData; -import io.opentelemetry.trace.DefaultSpan; +import io.opentelemetry.trace.Span; import io.opentelemetry.trace.Span.Kind; import io.opentelemetry.trace.Tracer; import java.util.List; @@ -62,6 +62,6 @@ void test() throws Exception { assertThat(finished.get(0).getKind()).isEqualTo(Kind.CLIENT); assertThat(finished.get(1).getKind()).isEqualTo(Kind.SERVER); - assertThat(tracer.getCurrentSpan()).isSameAs(DefaultSpan.getInvalid()); + assertThat(tracer.getCurrentSpan()).isSameAs(Span.getInvalid()); } } diff --git a/sdk_extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/concurrentcommonrequesthandler/HandlerTest.java b/sdk_extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/concurrentcommonrequesthandler/HandlerTest.java index adc954bfbbc..9a14470c2f6 100644 --- a/sdk_extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/concurrentcommonrequesthandler/HandlerTest.java +++ b/sdk_extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/concurrentcommonrequesthandler/HandlerTest.java @@ -13,7 +13,6 @@ import io.opentelemetry.sdk.extensions.trace.testbed.TestUtils; import io.opentelemetry.sdk.trace.TracerSdkProvider; import io.opentelemetry.sdk.trace.data.SpanData; -import io.opentelemetry.trace.DefaultSpan; import io.opentelemetry.trace.Span; import io.opentelemetry.trace.SpanId; import io.opentelemetry.trace.Tracer; @@ -61,7 +60,7 @@ void two_requests() throws Exception { assertThat(finished.get(0).getParentSpanId()).isEqualTo(SpanId.getInvalid()); assertThat(finished.get(1).getParentSpanId()).isEqualTo(SpanId.getInvalid()); - assertThat(tracer.getCurrentSpan()).isSameAs(DefaultSpan.getInvalid()); + assertThat(tracer.getCurrentSpan()).isSameAs(Span.getInvalid()); } /** Active parent is not picked up by child. */ diff --git a/sdk_extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/errorreporting/ErrorReportingTest.java b/sdk_extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/errorreporting/ErrorReportingTest.java index 3a63f836059..141155a038f 100644 --- a/sdk_extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/errorreporting/ErrorReportingTest.java +++ b/sdk_extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/errorreporting/ErrorReportingTest.java @@ -16,7 +16,6 @@ import io.opentelemetry.sdk.trace.TracerSdkProvider; import io.opentelemetry.sdk.trace.data.SpanData; import io.opentelemetry.sdk.trace.data.SpanData.Event; -import io.opentelemetry.trace.DefaultSpan; import io.opentelemetry.trace.Span; import io.opentelemetry.trace.StatusCanonicalCode; import io.opentelemetry.trace.Tracer; @@ -47,7 +46,7 @@ void testSimpleError() { span.end(); } - assertThat(tracer.getCurrentSpan()).isSameAs(DefaultSpan.getInvalid()); + assertThat(tracer.getCurrentSpan()).isSameAs(Span.getInvalid()); List spans = inMemoryTracing.getSpanExporter().getFinishedSpanItems(); assertThat(spans).hasSize(1); @@ -98,7 +97,7 @@ void testErrorRecovery() { span.setStatus(StatusCanonicalCode.ERROR); // Could not fetch anything. span.end(); - assertThat(tracer.getCurrentSpan()).isSameAs(DefaultSpan.getInvalid()); + assertThat(tracer.getCurrentSpan()).isSameAs(Span.getInvalid()); List spans = inMemoryTracing.getSpanExporter().getFinishedSpanItems(); assertThat(spans).hasSize(1); diff --git a/sdk_extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/latespanfinish/LateSpanFinishTest.java b/sdk_extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/latespanfinish/LateSpanFinishTest.java index 51b40d32667..d1c97111314 100644 --- a/sdk_extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/latespanfinish/LateSpanFinishTest.java +++ b/sdk_extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/latespanfinish/LateSpanFinishTest.java @@ -12,7 +12,6 @@ import io.opentelemetry.sdk.extensions.trace.testbed.TestUtils; import io.opentelemetry.sdk.trace.TracerSdkProvider; import io.opentelemetry.sdk.trace.data.SpanData; -import io.opentelemetry.trace.DefaultSpan; import io.opentelemetry.trace.Span; import io.opentelemetry.trace.Tracer; import java.util.List; @@ -51,7 +50,7 @@ void test() throws Exception { TestUtils.assertSameTrace(spans); - assertThat(tracer.getCurrentSpan()).isSameAs(DefaultSpan.getInvalid()); + assertThat(tracer.getCurrentSpan()).isSameAs(Span.getInvalid()); } /* diff --git a/sdk_extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/listenerperrequest/ListenerTest.java b/sdk_extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/listenerperrequest/ListenerTest.java index e39e7b748c7..1362a6f797d 100644 --- a/sdk_extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/listenerperrequest/ListenerTest.java +++ b/sdk_extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/listenerperrequest/ListenerTest.java @@ -10,7 +10,7 @@ import io.opentelemetry.exporters.inmemory.InMemoryTracing; import io.opentelemetry.sdk.trace.TracerSdkProvider; import io.opentelemetry.sdk.trace.data.SpanData; -import io.opentelemetry.trace.DefaultSpan; +import io.opentelemetry.trace.Span; import io.opentelemetry.trace.Span.Kind; import io.opentelemetry.trace.Tracer; import java.util.List; @@ -33,6 +33,6 @@ void test() throws Exception { assertThat(finished).hasSize(1); assertThat(finished.get(0).getKind()).isEqualTo(Kind.CLIENT); - assertThat(tracer.getCurrentSpan()).isSameAs(DefaultSpan.getInvalid()); + assertThat(tracer.getCurrentSpan()).isSameAs(Span.getInvalid()); } } diff --git a/sdk_extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/multiplecallbacks/MultipleCallbacksTest.java b/sdk_extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/multiplecallbacks/MultipleCallbacksTest.java index 40f90461998..519ac19cd09 100644 --- a/sdk_extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/multiplecallbacks/MultipleCallbacksTest.java +++ b/sdk_extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/multiplecallbacks/MultipleCallbacksTest.java @@ -14,7 +14,6 @@ import io.opentelemetry.sdk.extensions.trace.testbed.TestUtils; import io.opentelemetry.sdk.trace.TracerSdkProvider; import io.opentelemetry.sdk.trace.data.SpanData; -import io.opentelemetry.trace.DefaultSpan; import io.opentelemetry.trace.Span; import io.opentelemetry.trace.Tracer; import java.util.List; @@ -64,6 +63,6 @@ void test() { assertThat(spans.get(i).getParentSpanId()).isEqualTo(parentSpan.getSpanId()); } - assertThat(tracer.getCurrentSpan()).isSameAs(DefaultSpan.getInvalid()); + assertThat(tracer.getCurrentSpan()).isSameAs(Span.getInvalid()); } } diff --git a/sdk_extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/nestedcallbacks/NestedCallbacksTest.java b/sdk_extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/nestedcallbacks/NestedCallbacksTest.java index 1469a06a35c..8303e4a07be 100644 --- a/sdk_extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/nestedcallbacks/NestedCallbacksTest.java +++ b/sdk_extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/nestedcallbacks/NestedCallbacksTest.java @@ -16,7 +16,6 @@ import io.opentelemetry.sdk.extensions.trace.testbed.TestUtils; import io.opentelemetry.sdk.trace.TracerSdkProvider; import io.opentelemetry.sdk.trace.data.SpanData; -import io.opentelemetry.trace.DefaultSpan; import io.opentelemetry.trace.Span; import io.opentelemetry.trace.Tracer; import java.util.List; @@ -54,7 +53,7 @@ void test() { assertThat(attrs.get(stringKey("key" + i))).isEqualTo(Integer.toString(i)); } - assertThat(tracer.getCurrentSpan()).isSameAs(DefaultSpan.getInvalid()); + assertThat(tracer.getCurrentSpan()).isSameAs(Span.getInvalid()); } private void submitCallbacks(final Span span) {