diff options
Diffstat (limited to 'kamon-core/src/main/scala/kamon/Kamon.scala')
-rw-r--r-- | kamon-core/src/main/scala/kamon/Kamon.scala | 16 |
1 files changed, 5 insertions, 11 deletions
diff --git a/kamon-core/src/main/scala/kamon/Kamon.scala b/kamon-core/src/main/scala/kamon/Kamon.scala index 118239f7..fb1b2393 100644 --- a/kamon-core/src/main/scala/kamon/Kamon.scala +++ b/kamon-core/src/main/scala/kamon/Kamon.scala @@ -6,6 +6,7 @@ import scala.concurrent.duration.FiniteDuration import com.newrelic.api.agent.NewRelic import scala.collection.concurrent.TrieMap import kamon.instrumentation.{SimpleContextPassingInstrumentation, ActorInstrumentationConfiguration} +import scala.util.DynamicVariable object Instrument { @@ -32,20 +33,13 @@ object Kamon { object Tracer { - val ctx = new ThreadLocal[Option[TraceContext]] { - override def initialValue() = None - } + val traceContext = new DynamicVariable[Option[TraceContext]](None) - def context() = ctx.get() - def clear = ctx.remove() - def set(traceContext: TraceContext) = ctx.set(Some(traceContext)) - def start = set(newTraceContext) - def stop = ctx.get match { - case Some(context) => context.close - case None => - } + def context() = traceContext.value + def set(ctx: TraceContext) = traceContext.value = Some(ctx) + def start = set(newTraceContext) def newTraceContext(): TraceContext = TraceContext()(Kamon.actorSystem) } |