aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Topolnjak <ivantopo@gmail.com>2017-07-18 09:29:19 +0200
committerIvan Topolnjak <ivantopo@gmail.com>2017-07-18 09:29:19 +0200
commit364216f15fcffd9ed4925c8279adaa5055ce9fef (patch)
treea42581a83e3af324b0d4f3769ab0858252b5e8bf
parent75198eb327823cd31e90a5ff53414de501b1e071 (diff)
downloadKamon-364216f15fcffd9ed4925c8279adaa5055ce9fef.tar.gz
Kamon-364216f15fcffd9ed4925c8279adaa5055ce9fef.tar.bz2
Kamon-364216f15fcffd9ed4925c8279adaa5055ce9fef.zip
make the remote parent join mode configurable
-rw-r--r--kamon-core/src/main/resources/reference.conf7
-rw-r--r--kamon-core/src/main/scala/kamon/trace/Tracer.scala6
2 files changed, 11 insertions, 2 deletions
diff --git a/kamon-core/src/main/resources/reference.conf b/kamon-core/src/main/resources/reference.conf
index 06da8e18..cd8fa379 100644
--- a/kamon-core/src/main/resources/reference.conf
+++ b/kamon-core/src/main/resources/reference.conf
@@ -85,6 +85,13 @@ kamon {
reporter-queue-size = 1024
+ # Decide whether a new, locally created Span should have the same Span Identifier as it's remote parent (if any) or
+ # get a new local identifier. Certain tracing systems use the same Span Identifier to represent both sides (client
+ # and server) of a RPC call, if you are reporting data to such systems then this option should be enabled.
+ #
+ # If you are using Zipkin, keep this option enabled. If you are using Jaeger, disable it.
+ join-remote-parents-with-same-span-id = true
+
# Configures a sample that decides which traces should be reported to the trace backends. The possible values are:
# - always: report all traces.
# - never: don't report any trace.
diff --git a/kamon-core/src/main/scala/kamon/trace/Tracer.scala b/kamon-core/src/main/scala/kamon/trace/Tracer.scala
index 1aa07be1..c10974f5 100644
--- a/kamon-core/src/main/scala/kamon/trace/Tracer.scala
+++ b/kamon-core/src/main/scala/kamon/trace/Tracer.scala
@@ -50,7 +50,7 @@ object Tracer {
}
private[Tracer] val tracerMetrics = new TracerMetrics(metrics)
- @volatile private[Tracer] var joinRemoteSpansWithSameID: Boolean = false
+ @volatile private[Tracer] var joinRemoteParentsWithSameSpanID: Boolean = true
@volatile private[Tracer] var configuredSampler: Sampler = Sampler.Never
@volatile private[Tracer] var identityProvider: IdentityProvider = IdentityProvider.Default()
@volatile private[Tracer] var textMapSpanContextCodec: SpanContextCodec[TextMap] = SpanContextCodec.ExtendedB3(identityProvider)
@@ -101,6 +101,8 @@ object Tracer {
case "random" => Sampler.random(traceConfig.getDouble("random-sampler.probability"))
case other => sys.error(s"Unexpected sampler name $other.")
}
+
+ joinRemoteParentsWithSameSpanID = traceConfig.getBoolean("join-remote-parents-with-same-span-id")
}
}
@@ -160,7 +162,7 @@ object Tracer {
}
private def joinParentContext(parent: SpanContext, samplingDecision: SamplingDecision): SpanContext =
- if(parent.source == Source.Remote && tracer.joinRemoteSpansWithSameID)
+ if(parent.source == Source.Remote && tracer.joinRemoteParentsWithSameSpanID)
parent.copy(samplingDecision = samplingDecision)
else
parent.createChild(tracer.identityProvider.spanIdentifierGenerator().generate(), samplingDecision)