Skip to content
This repository has been archived by the owner on May 23, 2023. It is now read-only.

Commit

Permalink
Let Tracer.activeSpan() be a shorthand for ScopeManager's active Span. (
Browse files Browse the repository at this point in the history
#228)

* Let Tracer.activeSpan() be a shorthand for ScopeManager's active Span.

* Document the null case for Tracer.activeSpan().

* Have Tracer.activeSpan() return null.

* Remove @link for Tracer.activeSpan().

'Nested' links do not happen to exist under javadoc,
so Tracer.scopeManager().active().span() is now
not a link.
  • Loading branch information
carlosalberto authored and tedsuo committed Dec 6, 2017
1 parent b9feb48 commit d8f3384
Show file tree
Hide file tree
Showing 5 changed files with 41 additions and 0 deletions.
6 changes: 6 additions & 0 deletions opentracing-api/src/main/java/io/opentracing/Tracer.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,12 @@ public interface Tracer {
*/
ScopeManager scopeManager();

/**
* @return the active {@link Span}. This is a shorthand for Tracer.scopeManager().active().span(),
* and null will be returned if {@link Scope#active()} is null.
*/
Span activeSpan();

/**
* Return a new SpanBuilder for a Span with the given `operationName`.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -182,6 +182,12 @@ public <C> SpanContext extract(Format<C> format, C carrier) {
return this.propagator.extract(format, carrier);
}

@Override
public Span activeSpan() {
Scope scope = this.scopeManager.active();
return scope == null ? null : scope.span();
}

synchronized void appendFinishedSpan(MockSpan mockSpan) {
this.finishedSpans.add(mockSpan);
this.onSpanFinished(mockSpan);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotEquals;

import io.opentracing.Scope;
import io.opentracing.Span;
import io.opentracing.SpanContext;
import io.opentracing.Tracer;
Expand Down Expand Up @@ -197,6 +198,22 @@ public void testTextMapPropagatorHttpHeaders() {
Assert.assertEquals(finishedSpans.get(0).context().spanId(), finishedSpans.get(1).parentId());
}

@Test
public void testActiveSpan() {
MockTracer mockTracer = new MockTracer();
Assert.assertNull(mockTracer.activeSpan());

Scope scope = null;
try {
scope = mockTracer.buildSpan("foo").startActive(true);
Assert.assertEquals(mockTracer.scopeManager().active().span(), mockTracer.activeSpan());
} finally {
scope.close();
}

Assert.assertNull(mockTracer.activeSpan());
}

@Test
public void testReset() {
MockTracer mockTracer = new MockTracer();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
package io.opentracing.noop;

import io.opentracing.ScopeManager;
import io.opentracing.Span;
import io.opentracing.SpanContext;
import io.opentracing.Tracer;
import io.opentracing.propagation.Format;
Expand All @@ -29,6 +30,11 @@ public ScopeManager scopeManager() {
return NoopScopeManager.INSTANCE;
}

@Override
public Span activeSpan() {
return null;
}

@Override
public SpanBuilder buildSpan(String operationName) { return NoopSpanBuilderImpl.INSTANCE; }

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
package io.opentracing.util;

import io.opentracing.ScopeManager;
import io.opentracing.Span;
import io.opentracing.noop.NoopTracer;
import io.opentracing.noop.NoopTracerFactory;
import io.opentracing.SpanContext;
Expand Down Expand Up @@ -142,6 +143,11 @@ public <C> SpanContext extract(Format<C> format, C carrier) {
return tracer.extract(format, carrier);
}

@Override
public Span activeSpan() {
return tracer.activeSpan();
}

@Override
public String toString() {
return GlobalTracer.class.getSimpleName() + '{' + tracer + '}';
Expand Down

0 comments on commit d8f3384

Please sign in to comment.