diff options
author | Ivan Topolnak <ivantopo@gmail.com> | 2013-10-02 19:01:00 -0300 |
---|---|---|
committer | Ivan Topolnak <ivantopo@gmail.com> | 2013-10-02 19:01:00 -0300 |
commit | 4045ba1274fe6ba51ab071de6e2a5e1b31cef668 (patch) | |
tree | e5f1e7f2493b3c624aee824d70f14c383a1e2eac /kamon-core/src/main/scala/kamon/Kamon.scala | |
parent | e9a4828ae75b19d63090825fa556596e433d2383 (diff) | |
download | Kamon-4045ba1274fe6ba51ab071de6e2a5e1b31cef668.tar.gz Kamon-4045ba1274fe6ba51ab071de6e2a5e1b31cef668.tar.bz2 Kamon-4045ba1274fe6ba51ab071de6e2a5e1b31cef668.zip |
Switched to DynamicVariables, solve context passing issue produced by runnable batching
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) } |