diff options
author | Ivan Topolnjak <ivantopo@gmail.com> | 2017-12-12 15:00:59 +0100 |
---|---|---|
committer | Ivan Topolnjak <ivantopo@gmail.com> | 2017-12-13 00:48:38 +0100 |
commit | 686040cb569283667b967494be4a7088ef35964c (patch) | |
tree | 95873e59bad8c859a14f55a1cc42758c87901d26 /kamon-core/src/main/scala/kamon/trace | |
parent | 66cf166772712267aac922c51ded90c7dec3bdd5 (diff) | |
download | Kamon-686040cb569283667b967494be4a7088ef35964c.tar.gz Kamon-686040cb569283667b967494be4a7088ef35964c.tar.bz2 Kamon-686040cb569283667b967494be4a7088ef35964c.zip |
use a specialized java.time.Clock exposed through the Kamon companion object
Diffstat (limited to 'kamon-core/src/main/scala/kamon/trace')
-rw-r--r-- | kamon-core/src/main/scala/kamon/trace/Span.scala | 17 | ||||
-rw-r--r-- | kamon-core/src/main/scala/kamon/trace/Tracer.scala | 25 |
2 files changed, 28 insertions, 14 deletions
diff --git a/kamon-core/src/main/scala/kamon/trace/Span.scala b/kamon-core/src/main/scala/kamon/trace/Span.scala index d8d11589..545a3f64 100644 --- a/kamon-core/src/main/scala/kamon/trace/Span.scala +++ b/kamon-core/src/main/scala/kamon/trace/Span.scala @@ -57,9 +57,7 @@ sealed abstract class Span { def finish(finishTimestampMicros: Long): Unit - def finish(): Unit = - finish(Clock.microTimestamp()) - + def finish(): Unit } object Span { @@ -81,6 +79,7 @@ object Span { override def setOperationName(name: String): Span = this override def enableMetrics(): Span = this override def disableMetrics(): Span = this + override def finish(): Unit = {} override def finish(finishTimestampMicros: Long): Unit = {} } @@ -93,7 +92,7 @@ object Span { * @param spanSink */ final class Local(spanContext: SpanContext, parent: Option[Span], initialOperationName: String, initialSpanTags: Map[String, Span.TagValue], - initialMetricTags: Map[String, String], startTimestampMicros: Long, spanSink: SpanSink, trackMetrics: Boolean, scopeSpanMetrics: Boolean) extends Span { + initialMetricTags: Map[String, String], startTimestampMicros: Long, spanSink: SpanSink, trackMetrics: Boolean, scopeSpanMetrics: Boolean, clock: Clock) extends Span { private var collectMetrics: Boolean = trackMetrics private var open: Boolean = true @@ -139,7 +138,7 @@ object Span { } override def mark(key: String): Span = { - mark(Clock.microTimestamp(), key) + mark(clock.micros(), key) } override def mark(timestampMicros: Long, key: String): Span = synchronized { @@ -188,6 +187,9 @@ object Span { this } + override def finish(): Unit = + finish(clock.micros()) + override def finish(finishMicros: Long): Unit = synchronized { if (open) { open = false @@ -222,8 +224,8 @@ object Span { object Local { def apply(spanContext: SpanContext, parent: Option[Span], initialOperationName: String, initialSpanTags: Map[String, Span.TagValue], initialMetricTags: Map[String, String], startTimestampMicros: Long, spanSink: SpanSink, - trackMetrics: Boolean, scopeSpanMetrics: Boolean): Local = - new Local(spanContext, parent, initialOperationName, initialSpanTags, initialMetricTags, startTimestampMicros, spanSink, trackMetrics, scopeSpanMetrics) + trackMetrics: Boolean, scopeSpanMetrics: Boolean, clock: Clock): Local = + new Local(spanContext, parent, initialOperationName, initialSpanTags, initialMetricTags, startTimestampMicros, spanSink, trackMetrics, scopeSpanMetrics, clock) } @@ -241,6 +243,7 @@ object Span { override def setOperationName(name: String): Span = this override def enableMetrics(): Span = this override def disableMetrics(): Span = this + override def finish(): Unit = {} override def finish(finishTimestampMicros: Long): Unit = {} } diff --git a/kamon-core/src/main/scala/kamon/trace/Tracer.scala b/kamon-core/src/main/scala/kamon/trace/Tracer.scala index addeddf6..4950a700 100644 --- a/kamon-core/src/main/scala/kamon/trace/Tracer.scala +++ b/kamon-core/src/main/scala/kamon/trace/Tracer.scala @@ -35,7 +35,7 @@ trait Tracer { object Tracer { - final class Default(metrics: MetricLookup, spanSink: SpanSink, initialConfig: Config) extends Tracer { + final class Default(metrics: MetricLookup, spanSink: SpanSink, initialConfig: Config, clock: Clock) extends Tracer { private val logger = LoggerFactory.getLogger(classOf[Tracer]) private[Tracer] val tracerMetrics = new TracerMetrics(metrics) @@ -47,7 +47,7 @@ object Tracer { reconfigure(initialConfig) override def buildSpan(operationName: String): SpanBuilder = - new SpanBuilder(operationName, this, spanSink) + new SpanBuilder(operationName, this, spanSink, clock) override def identityProvider: IdentityProvider = this._identityProvider @@ -85,11 +85,11 @@ object Tracer { } object Default { - def apply(metrics: MetricLookup, spanSink: SpanSink, initialConfig: Config): Default = - new Default(metrics, spanSink, initialConfig) + def apply(metrics: MetricLookup, spanSink: SpanSink, initialConfig: Config, clock: Clock): Default = + new Default(metrics, spanSink, initialConfig, clock) } - final class SpanBuilder(operationName: String, tracer: Tracer.Default, spanSink: SpanSink) { + final class SpanBuilder(operationName: String, tracer: Tracer.Default, spanSink: SpanSink, clock: Clock) { private var parentSpan: Span = _ private var initialOperationName: String = operationName private var startTimestamp = 0L @@ -158,7 +158,7 @@ object Tracer { def start(): Span = { - val startTimestampMicros = if(startTimestamp != 0L) startTimestamp else Clock.microTimestamp() + val startTimestampMicros = if(startTimestamp != 0L) startTimestamp else clock.micros() val parentSpan: Option[Span] = Option(this.parentSpan) .orElse(if(useParentFromContext) Some(Kamon.currentContext().get(Span.ContextKey)) else None) @@ -177,7 +177,18 @@ object Tracer { } tracer.tracerMetrics.createdSpans.increment() - Span.Local(spanContext, nonRemoteParent, initialOperationName, initialSpanTags, initialMetricTags, startTimestampMicros, spanSink, trackMetrics, tracer.scopeSpanMetrics) + Span.Local( + spanContext, + nonRemoteParent, + initialOperationName, + initialSpanTags, + initialMetricTags, + startTimestampMicros, + spanSink, + trackMetrics, + tracer.scopeSpanMetrics, + clock + ) } private def joinParentContext(parent: Span, samplingDecision: SamplingDecision): SpanContext = |