Let Tracer.activeSpan() be a shorthand for ScopeManager's active Span.#228
Conversation
| ScopeManager scopeManager(); | ||
|
|
||
| /** | ||
| * @return the active {@link Span}, if any. This is a shorthand for {@link Tracer#scopeManager()#active()#span()}. |
There was a problem hiding this comment.
Please also document the null check.
Otherwise people may either think this method could be unsafe to call in absence of active scope, or (worse) may think it's safe to unconditionally dereference active() scope in any situation.
There was a problem hiding this comment.
Good catch, will do.
|
|
||
| @Override | ||
| public Span activeSpan() { | ||
| return NoopSpan.INSTANCE; |
There was a problem hiding this comment.
IIRC in 0.30.0 this returned null which could cause NPEs
It's probably better to return something.
There was a problem hiding this comment.
Agree - although it might also be good to have some way to determine if there is an active span, in case an instrumentation wants to avoid doing unnecessary work. Possibly an additional method on the ScopeManager.hasActiveSpan()?
There was a problem hiding this comment.
good point.
Possibly an additional method on the ScopeManager.hasActiveSpan()?
This seems like a duplicate of Span activeSpan().
There was a problem hiding this comment.
It's related to #134. Maybe it's better to return null and in future add a convenient Optional-like method.
There was a problem hiding this comment.
Or we could make noop to use span manager and return what is actually there.
|
Updated this PR - added a null case note for |
| ScopeManager scopeManager(); | ||
|
|
||
| /** | ||
| * @return the active {@link Span}. This is a shorthand for {@link Tracer#scopeManager()#active()#span()}, |
There was a problem hiding this comment.
Just curious: Do these @link javadoc tags actually work?
'Nested' links do not happen to exist under javadoc, so Tracer.scopeManager().active().span() is now not a link.
|
@sjoerdtalsma Oh, indeed. Removed the link for |
|
@sjoerdtalsma @pavolloffay @objectiser Any objections to have this PR merged? |
|
@carlosalberto I have no objections |
|
@carlosalberto No objections. |
opentracing#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.
* Code cleanup (opentracing#199) - Propagate @deprecated annotation to implementations - Remove redundant "static final" definition from interface - Use Collections.emptyMap instead of Collections.EMPTY_MAP to preserve type * Add support for multi reference and expose references context and type from MockSpan. (opentracing#213) * Publish test artifact for Globaltracer testutil (opentracing#209) * Fix MockTracer.ChildOf not fail if there is a null argument passed (opentracing#226) * Make ChildOf not fail if there is a null argument passed * Moved tracer test to where it belongs. Fixed typo. * Use correct reference in Javadoc (opentracing#230) * MockTracer use text map propag in the default constructor (opentracing#179) * Implement a simpler Span propagation without lifetime handling. (opentracing#188) - Scope replaces ActiveSpan, without sharing a common ancestor with Span. - ScopeManager replaces ActiveSpanSource. - No reference-count to handle Span's lifetime. - A simple thread-local based ScopeManager. * travis publish.sh allow releases from branches (opentracing#191) * Travis allow release from non master branches (opentracing#192) * Travis allow release from non master branches Publis script compares remote branch with current checkout. This passes travis_branch into git checkout command so it will compare the same branches. * Fix comments * Travis publish script, remove -RC on git checkout (opentracing#193) * Update the Travis script to allow publishing from v.0.0.0 branches. (opentracing#195) Thing is, we cannot publish from 0.0.0-style branches as they are excluded, based on the current global Travis configuration, thus we try to publish from branches following a v.0.0.0 style, if any. * Readme document release process for release candidates (opentracing#198) * Readme document release process for release candidates * Adjust publish.sh to work with release from master branch * Add Examples for async use cases (opentracing#197) * Add examples for async as test cases This includes execution flow similar to: * Actor ask/tell * Promises with callbacks * Work interleaved on a thread using suspend/resume. The implementations of these execution models are obviously very simplistic, but intended to emphasize the tracing aspect. * Update README files to reflect the Scope concept. (opentracing#217) * Let Tracer.activeSpan() be a shorthand for ScopeManager's active Span. (opentracing#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. * Change BINARY to be resizable and stream-oriented. (opentracing#223) * Change BINARY to be resizable and stream-oriented. * Abstract the Binary adapter and have an Adapters class to return it. * Remove the isInbound/isOutbound methods from BinaryAdapter. * Make Binary use the Channel paradigm for injection/extraction * Have binary methods in Adapters named after inject/extract. * Add a BINARY propagator for MockTracer. * Throw RuntimeException in case of errors during BINARY's injection. * Put braces around if-blocks for Adapters/BinaryAdapter. * Use verbose messages for null parameters in Adapters. * SpanBuilder deprecate startManual (opentracing#225) * SpanBuilder deprecate startManual * Fix review comments * Remove default finish behaviour for `activate()` (opentracing#219) * Do not auto finish on scope.close * Fix review comments * Fix review comments * Add explanatory statement about not auto-finishing * Define only activate(s, bool) * Use the parameterless startActive() in a forgotten test in MockTracerTest.
This is a small PR intended to address #227 as a way to provide a shorthand for getting the active span from a
Tracer.One alternative would have been to have
Tracer.activeScope()but that would only save us from typingscopeManager(), so not much save here.