From de3e823cec6ec12d551f568b73d2ad1061944222 Mon Sep 17 00:00:00 2001 From: Ivan Topolnjak Date: Fri, 9 Jun 2017 14:21:01 +0200 Subject: only report sampled spans --- kamon-core/src/main/scala/kamon/Kamon.scala | 2 +- kamon-core/src/main/scala/kamon/trace/Span.scala | 9 ++++++--- kamon-core/src/main/scala/kamon/trace/Tracer.scala | 13 +++++-------- 3 files changed, 12 insertions(+), 12 deletions(-) (limited to 'kamon-core/src/main/scala') diff --git a/kamon-core/src/main/scala/kamon/Kamon.scala b/kamon-core/src/main/scala/kamon/Kamon.scala index 29c85559..a7df6a1b 100644 --- a/kamon-core/src/main/scala/kamon/Kamon.scala +++ b/kamon-core/src/main/scala/kamon/Kamon.scala @@ -33,7 +33,7 @@ object Kamon extends MetricLookup with ReporterRegistry with io.opentracing.Trac private val metricRegistry = new MetricRegistry(initialConfig) private val reporterRegistry = new ReporterRegistryImpl(metricRegistry, initialConfig) - private val tracer = new Tracer(Kamon, reporterRegistry) + private val tracer = new Tracer(Kamon, reporterRegistry, initialConfig) private val env = new AtomicReference[Environment](Environment.fromConfig(ConfigFactory.load())) def environment: Environment = diff --git a/kamon-core/src/main/scala/kamon/trace/Span.scala b/kamon-core/src/main/scala/kamon/trace/Span.scala index e012d46a..a23c1f49 100644 --- a/kamon-core/src/main/scala/kamon/trace/Span.scala +++ b/kamon-core/src/main/scala/kamon/trace/Span.scala @@ -136,13 +136,16 @@ class Span(spanContext: SpanContext, initialOperationName: String, initialTags: override def finish(): Unit = finish(Clock.microTimestamp()) - override def finish(finishMicros: Long): Unit = - if(isOpen) { + override def finish(finishMicros: Long): Unit = synchronized { + if (isOpen) { isOpen = false endTimestampMicros = finishMicros recordSpanMetrics() - reporterRegistry.reportSpan(completedSpan) + + if(sampled) + reporterRegistry.reportSpan(completedSpan) } + } private def completedSpan: Span.CompletedSpan = Span.CompletedSpan(spanContext, operationName, startTimestampMicros, endTimestampMicros, tags, logs) diff --git a/kamon-core/src/main/scala/kamon/trace/Tracer.scala b/kamon-core/src/main/scala/kamon/trace/Tracer.scala index 734f82b2..65d8edb7 100644 --- a/kamon-core/src/main/scala/kamon/trace/Tracer.scala +++ b/kamon-core/src/main/scala/kamon/trace/Tracer.scala @@ -28,15 +28,18 @@ import kamon.metric.MetricLookup import kamon.util.Clock -class Tracer(metrics: MetricLookup, reporterRegistry: ReporterRegistryImpl) extends io.opentracing.Tracer { +class Tracer(metrics: MetricLookup, reporterRegistry: ReporterRegistryImpl, initialConfig: Config) + extends ThreadLocalActiveSpanSource with io.opentracing.Tracer { + private val logger = Logger(classOf[Tracer]) private val tracerMetrics = new TracerMetrics(metrics) - private val activeSpanSource = new ThreadLocalActiveSpanSource() @volatile private var configuredSampler: Sampler = Sampler.never @volatile private var textMapSpanContextCodec = SpanContextCodec.TextMap @volatile private var httpHeaderSpanContextCodec = SpanContextCodec.ZipkinB3 + reconfigure(initialConfig) + override def buildSpan(operationName: String): io.opentracing.Tracer.SpanBuilder = new SpanBuilder(operationName) @@ -57,12 +60,6 @@ class Tracer(metrics: MetricLookup, reporterRegistry: ReporterRegistryImpl) exte def sampler: Sampler = configuredSampler - override def activeSpan(): io.opentracing.ActiveSpan = - activeSpanSource.activeSpan() - - override def makeActive(span: io.opentracing.Span): io.opentracing.ActiveSpan = - activeSpanSource.makeActive(span) - def setTextMapSpanContextCodec(codec: SpanContextCodec[TextMap]): Unit = this.textMapSpanContextCodec = codec -- cgit v1.2.3