diff options
author | Ivan Topolnjak <ivantopo@gmail.com> | 2017-07-25 16:21:13 +0200 |
---|---|---|
committer | Ivan Topolnjak <ivantopo@gmail.com> | 2017-07-25 16:21:13 +0200 |
commit | 0930e36def6ce62c55d30d744b41ef475374a541 (patch) | |
tree | b3699d8932608ad48cdc8e91a16b0d5ee7541e4d /kamon-core/src/main/scala/kamon/Kamon.scala | |
parent | 5c8a8d169858b83a059c89e48cb43a41040788b8 (diff) | |
download | Kamon-0930e36def6ce62c55d30d744b41ef475374a541.tar.gz Kamon-0930e36def6ce62c55d30d744b41ef475374a541.tar.bz2 Kamon-0930e36def6ce62c55d30d744b41ef475374a541.zip |
try an alternative approach to active span management
Diffstat (limited to 'kamon-core/src/main/scala/kamon/Kamon.scala')
-rw-r--r-- | kamon-core/src/main/scala/kamon/Kamon.scala | 46 |
1 files changed, 11 insertions, 35 deletions
diff --git a/kamon-core/src/main/scala/kamon/Kamon.scala b/kamon-core/src/main/scala/kamon/Kamon.scala index fa9e78fe..6de45e25 100644 --- a/kamon-core/src/main/scala/kamon/Kamon.scala +++ b/kamon-core/src/main/scala/kamon/Kamon.scala @@ -17,7 +17,7 @@ package kamon import com.typesafe.config.{Config, ConfigFactory} import kamon.metric._ -import kamon.trace.{ActiveSpan, Span, SpanContext, Tracer, Continuation} +import kamon.trace._ import kamon.util.{Filters, MeasurementUnit, Registration} import scala.concurrent.Future @@ -102,52 +102,28 @@ object Kamon extends MetricLookup with ReporterRegistry with Tracer { override def inject[C](spanContext: SpanContext, format: Format[C]): C = _tracer.inject(spanContext, format) - override def activeSpan(): ActiveSpan = + override def activeSpan(): Span = _tracer.activeSpan() - override def makeActive(span: Span): ActiveSpan = - _tracer.makeActive(span) + override def activate(span: Span): Scope = + _tracer.activate(span) + override def activate(span: Span, finishOnClose: Boolean): Scope = + _tracer.activate(span, finishOnClose) /** * Makes the provided Span active before code is evaluated and deactivates it afterwards. */ - def withSpan[T](span: Span)(code: => T): T = { - val activeSpan = makeActive(span) - val evaluatedCode = code - activeSpan.deactivate() - evaluatedCode - } + def withActiveSpan[T](span: Span)(code: => T): T = { + val scope = activate(span) - /** - * Actives the provided Continuation before code is evaluated and deactivates it afterwards. - */ - def withContinuation[T](continuation: Continuation)(code: => T): T = { - if(continuation == null) + try { code - else { - val activeSpan = continuation.activate() - val evaluatedCode = code - activeSpan.deactivate() - evaluatedCode + } finally { + scope.close() } } - /** - * Captures a continuation from the currently active Span (if any). - */ - def activeSpanContinuation(): Continuation = - activeSpan().capture() - - /** - * Runs the provided closure with the currently active Span (if any). - */ - def onActiveSpan[T](code: ActiveSpan => T): Unit = { - val activeSpan = Kamon.activeSpan() - if(activeSpan != null) - code(activeSpan) - } - override def loadReportersFromConfig(): Unit = _reporters.loadReportersFromConfig() |