diff options
author | Ivan Topolnjak <ivantopo@gmail.com> | 2017-05-23 19:06:32 +0200 |
---|---|---|
committer | Ivan Topolnjak <ivantopo@gmail.com> | 2017-05-23 19:06:32 +0200 |
commit | 22379d3f318b2cd3a4c995ff1c45bda33d935a46 (patch) | |
tree | 7c47e99a9b6fd89ce3e2d4efa85c5ca17c2d3db4 /kamon-core/src/main/scala/kamon/trace/Span.scala | |
parent | 2ba647d87e1bb09a4f70eb8c1d5c67af050525ce (diff) | |
download | Kamon-22379d3f318b2cd3a4c995ff1c45bda33d935a46.tar.gz Kamon-22379d3f318b2cd3a4c995ff1c45bda33d935a46.tar.bz2 Kamon-22379d3f318b2cd3a4c995ff1c45bda33d935a46.zip |
get some basic sampling going
Diffstat (limited to 'kamon-core/src/main/scala/kamon/trace/Span.scala')
-rw-r--r-- | kamon-core/src/main/scala/kamon/trace/Span.scala | 53 |
1 files changed, 21 insertions, 32 deletions
diff --git a/kamon-core/src/main/scala/kamon/trace/Span.scala b/kamon-core/src/main/scala/kamon/trace/Span.scala index 804627dc..904c0a22 100644 --- a/kamon-core/src/main/scala/kamon/trace/Span.scala +++ b/kamon-core/src/main/scala/kamon/trace/Span.scala @@ -28,16 +28,16 @@ object Span { } -class Span(spanContext: SpanContext, initialOperationName: String, startTimestampMicros: Long, +class Span(spanContext: SpanContext, initialOperationName: String, initialTags: Map[String, String], startTimestampMicros: Long, recorderRegistry: RecorderRegistry, reporterRegistry: ReporterRegistryImpl) extends io.opentracing.Span { private var isOpen: Boolean = true - private val isSampled: Boolean = true // TODO: User a proper sampler + private val sampled: Boolean = spanContext.sampled private var operationName: String = initialOperationName private var endTimestampMicros: Long = 0 + private var tags = initialTags private var logs = List.empty[Span.LogEntry] - private var tags = Map.empty[String, String] private var metricTags = Map.empty[String, String] @@ -45,47 +45,41 @@ class Span(spanContext: SpanContext, initialOperationName: String, startTimestam log(fields.asScala.asInstanceOf[Map[String, _]]) def log(fields: Map[String, _]): Span = synchronized { - if (isSampled && isOpen) { + if (sampled && isOpen) logs = Span.LogEntry(Clock.microTimestamp(), fields) :: logs - } this } - override def log(timestampMicroseconds: Long, fields: java.util.Map[String, _]): Span = - log(timestampMicroseconds, fields.asScala.asInstanceOf[Map[String, _]]) - def log(timestampMicroseconds: Long, fields: Map[String, _]): Span = synchronized { - if(isSampled && isOpen) { + if(sampled && isOpen) logs = Span.LogEntry(timestampMicroseconds, fields) :: logs - } this } + override def log(timestampMicroseconds: Long, fields: java.util.Map[String, _]): Span = + log(timestampMicroseconds, fields.asScala.asInstanceOf[Map[String, _]]) + override def log(event: String): Span = synchronized { - if(isSampled && isOpen) { + if(sampled && isOpen) logs = Span.LogEntry(Clock.microTimestamp(), Map("event" -> event)) :: logs - } this } override def log(timestampMicroseconds: Long, event: String): Span = synchronized { - if(isSampled && isOpen) { + if(sampled && isOpen) logs = Span.LogEntry(timestampMicroseconds, Map("event" -> event)) :: logs - } this } override def log(eventName: String, payload: scala.Any): Span = synchronized { - if(isSampled && isOpen) { + if(sampled && isOpen) logs = Span.LogEntry(Clock.microTimestamp(), Map(eventName -> payload)) :: logs - } this } override def log(timestampMicroseconds: Long, eventName: String, payload: scala.Any): Span = synchronized { - if(isSampled && isOpen) { + if(sampled && isOpen) logs = Span.LogEntry(timestampMicroseconds, Map(eventName -> payload)) :: logs - } this } @@ -98,7 +92,7 @@ class Span(spanContext: SpanContext, initialOperationName: String, startTimestam override def setTag(key: String, value: String): Span = synchronized { if (isOpen) { extractMetricTag(key, value) - if(isSampled) + if(sampled) tags = tags ++ Map(key -> value) } this @@ -108,7 +102,7 @@ class Span(spanContext: SpanContext, initialOperationName: String, startTimestam if (isOpen) { val tagValue = if(value) Span.BooleanTagTrueValue else Span.BooleanTagFalseValue extractMetricTag(key, tagValue) - if(isSampled) + if(sampled) tags = tags + (key -> tagValue) } this @@ -118,38 +112,33 @@ class Span(spanContext: SpanContext, initialOperationName: String, startTimestam if (isOpen) { val tagValue = String.valueOf(value) extractMetricTag(key, tagValue) - if(isSampled) + if(sampled) tags = tags + (key -> tagValue) } this } def setMetricTag(key: String, value: String): Span = synchronized { - if (isOpen) { + if (isOpen) metricTags = metricTags ++ Map(key -> value) - } this } override def setBaggageItem(key: String, value: String): Span = synchronized { - if (isOpen) { + if (isOpen) spanContext.addBaggageItem(key, value) - } this } - override def setOperationName(operationName: String): Span = { - if(isOpen) { + override def setOperationName(operationName: String): Span = synchronized { + if(isOpen) this.operationName = operationName - } this } - private def extractMetricTag(tag: String, value: String): Unit = { - if(tag.startsWith(Span.MetricTagPrefix)) { + private def extractMetricTag(tag: String, value: String): Unit = + if(tag.startsWith(Span.MetricTagPrefix)) metricTags = metricTags ++ Map(tag.substring(Span.MetricTagPrefix.length) -> value) - } - } override def finish(): Unit = finish(Clock.microTimestamp()) |