aboutsummaryrefslogtreecommitdiff
path: root/kamon-core/src/main/scala/kamon
diff options
context:
space:
mode:
authorIvan Topolnjak <ivantopo@gmail.com>2017-06-09 14:21:01 +0200
committerIvan Topolnjak <ivantopo@gmail.com>2017-06-09 14:21:01 +0200
commitde3e823cec6ec12d551f568b73d2ad1061944222 (patch)
tree1842ec7c7f1d704721cb68c6d3b082667fc435fa /kamon-core/src/main/scala/kamon
parent9d07669dae3ea1bc74b1d21e65618581292a6079 (diff)
downloadKamon-de3e823cec6ec12d551f568b73d2ad1061944222.tar.gz
Kamon-de3e823cec6ec12d551f568b73d2ad1061944222.tar.bz2
Kamon-de3e823cec6ec12d551f568b73d2ad1061944222.zip
only report sampled spans
Diffstat (limited to 'kamon-core/src/main/scala/kamon')
-rw-r--r--kamon-core/src/main/scala/kamon/Kamon.scala2
-rw-r--r--kamon-core/src/main/scala/kamon/trace/Span.scala9
-rw-r--r--kamon-core/src/main/scala/kamon/trace/Tracer.scala13
3 files changed, 12 insertions, 12 deletions
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