Class ObservationAwareSpanThreadLocalAccessor

java.lang.Object
io.micrometer.tracing.contextpropagation.ObservationAwareSpanThreadLocalAccessor
All Implemented Interfaces:
io.micrometer.context.ThreadLocalAccessor<Span>

public class ObservationAwareSpanThreadLocalAccessor extends Object implements io.micrometer.context.ThreadLocalAccessor<Span>
A ThreadLocalAccessor to put and restore current Span depending on whether ObservationThreadLocalAccessor did some work or not (if ObservationThreadLocalAccessor opened a scope, then this class doesn't want to create yet another span).

In essence logic of this class is as follows:

  • If ObservationThreadLocalAccessor created a Span via the TracingObservationHandler - do nothing
  • else - take care of the creation of a Span and putting it in thread local
IMPORTANT: ObservationAwareSpanThreadLocalAccessor must be registered AFTER the ObservationThreadLocalAccessor. The easiest way to achieve that is to call ContextRegistry.registerThreadLocalAccessor(ThreadLocalAccessor) manually.
Since:
1.0.4
  • Field Details

  • Constructor Details

    • ObservationAwareSpanThreadLocalAccessor

      public ObservationAwareSpanThreadLocalAccessor(Tracer tracer)
      Creates a new instance of ObservationThreadLocalAccessor.
      Parameters:
      tracer - tracer
  • Method Details

    • key

      public Object key()
      Specified by:
      key in interface io.micrometer.context.ThreadLocalAccessor<Span>
    • getValue

      public Span getValue()
      Specified by:
      getValue in interface io.micrometer.context.ThreadLocalAccessor<Span>
    • setValue

      public void setValue(Span value)
      Specified by:
      setValue in interface io.micrometer.context.ThreadLocalAccessor<Span>
    • setValue

      public void setValue()
      Specified by:
      setValue in interface io.micrometer.context.ThreadLocalAccessor<Span>
    • restore

      public void restore(Span previousValue)
      Specified by:
      restore in interface io.micrometer.context.ThreadLocalAccessor<Span>
    • restore

      public void restore()
      Specified by:
      restore in interface io.micrometer.context.ThreadLocalAccessor<Span>