aboutsummaryrefslogtreecommitdiff
path: root/kamon-core/src/main/scala/kamon/Kamon.scala
diff options
context:
space:
mode:
Diffstat (limited to 'kamon-core/src/main/scala/kamon/Kamon.scala')
-rw-r--r--kamon-core/src/main/scala/kamon/Kamon.scala16
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)
}