Class ThreadLocalCurrentTraceContext
- Direct Known Subclasses:
CurrentTraceContext.Default,StrictCurrentTraceContext
public class ThreadLocalCurrentTraceContext extends CurrentTraceContext
Design notes
A static thread local ensures we have one context per thread, as opposed to one per thread- tracer. This means all tracer instances will be able to see any tracer's contexts.
The trade-off of this (instance-based reference) vs the reverse: trace contexts are not separated by tracer by default. For example, to make a trace invisible to another tracer, you have to use a non-default implementation.
Sometimes people make different instances of the tracer just to change configuration like
the local service name. If we used a thread-instance approach, none of these would be able to see
eachother's scopes. This would break Tracing.currentTracer() scope visibility in a way
few would want to debug. It might be phrased as "MySQL always starts a new trace and I don't know
why."
If you want a different behavior, use a different subtype of CurrentTraceContext,
possibly your own, or raise an issue and explain what your use case is.
-
Nested Class Summary
Nested classes/interfaces inherited from class brave.propagation.CurrentTraceContext
CurrentTraceContext.Default, CurrentTraceContext.Scope, CurrentTraceContext.ScopeDecorator -
Method Summary
Modifier and Type Method Description static CurrentTraceContextcreate()TraceContextget()Returns the current span in scope or null if there isn't one.static CurrentTraceContext.BuildernewBuilder()CurrentTraceContext.ScopenewScope(TraceContext currentSpan)Sets the current span in scope until the returned object is closed.Methods inherited from class brave.propagation.CurrentTraceContext
decorateScope, executor, executorService, maybeScope, wrap, wrap
-
Method Details
-
create
-
newBuilder
-
get
Description copied from class:CurrentTraceContextReturns the current span in scope or null if there isn't one.- Specified by:
getin classCurrentTraceContext
-
newScope
Description copied from class:CurrentTraceContextSets the current span in scope until the returned object is closed. It is a programming error to drop or never close the result. Using try-with-resources is preferred for this reason.- Specified by:
newScopein classCurrentTraceContext- Parameters:
currentSpan- span to place into scope or null to clear the scope
-