aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--kamon-akka-remote/src/main/scala/kamon/akka/instrumentation/RemotingInstrumentation.scala6
-rw-r--r--kamon-akka-remote/src/test/scala/kamon/akka/instrumentation/RemotingInstrumentationSpec.scala18
-rw-r--r--kamon-akka/src/main/scala/kamon/akka/instrumentation/ActorCellInstrumentation.scala4
-rw-r--r--kamon-akka/src/main/scala/kamon/akka/instrumentation/ActorLoggingInstrumentation.scala4
-rw-r--r--kamon-akka/src/main/scala/kamon/akka/instrumentation/ActorSystemMessageInstrumentation.scala6
-rw-r--r--kamon-akka/src/main/scala/kamon/akka/instrumentation/AskPatternInstrumentation.scala7
-rw-r--r--kamon-akka/src/test/scala/kamon/akka/instrumentation/ActorCellInstrumentationSpec.scala28
-rw-r--r--kamon-akka/src/test/scala/kamon/akka/instrumentation/ActorLoggingInstrumentationSpec.scala10
-rw-r--r--kamon-akka/src/test/scala/kamon/akka/instrumentation/ActorSystemMessageInstrumentationSpec.scala46
-rw-r--r--kamon-akka/src/test/scala/kamon/akka/instrumentation/AskPatternInstrumentationSpec.scala14
-rw-r--r--kamon-core/src/main/scala/kamon/trace/TraceContext.scala37
-rw-r--r--kamon-core/src/main/scala/kamon/trace/TraceLocal.scala4
-rw-r--r--kamon-core/src/main/scala/kamon/trace/Tracer.scala22
-rw-r--r--kamon-core/src/main/scala/kamon/trace/logging/LogbackTraceTokenConverter.scala12
-rw-r--r--kamon-core/src/main/scala/kamon/trace/logging/MdcKeysSupport.scala4
-rw-r--r--kamon-core/src/test/scala/kamon/metric/TraceMetricsSpec.scala18
-rw-r--r--kamon-core/src/test/scala/kamon/trace/SimpleTraceSpec.scala16
-rw-r--r--kamon-core/src/test/scala/kamon/trace/TraceContextManipulationSpec.scala44
-rw-r--r--kamon-core/src/test/scala/kamon/trace/TraceLocalSpec.scala14
-rw-r--r--kamon-jdbc/src/main/scala/kamon/jdbc/instrumentation/StatementInstrumentation.scala4
-rw-r--r--kamon-jdbc/src/test/scala/kamon/jdbc/instrumentation/StatementInstrumentationSpec.scala26
-rw-r--r--kamon-newrelic/src/main/scala/kamon/newrelic/NewRelicErrorLogger.scala4
-rw-r--r--kamon-play/src/main/scala/kamon/play/action/KamonTraceActions.scala4
-rw-r--r--kamon-play/src/main/scala/kamon/play/instrumentation/RequestInstrumentation.scala11
-rw-r--r--kamon-play/src/main/scala/kamon/play/instrumentation/WSInstrumentation.scala4
-rw-r--r--kamon-play/src/test/scala/kamon/play/RequestInstrumentationSpec.scala6
-rw-r--r--kamon-play/src/test/scala/kamon/play/WSInstrumentationSpec.scala6
-rw-r--r--kamon-playground/src/main/scala/test/SimpleRequestProcessor.scala6
-rw-r--r--kamon-scala/src/main/scala/kamon/scala/instrumentation/FutureInstrumentation.scala4
-rw-r--r--kamon-scala/src/main/scala/kamon/scalaz/instrumentation/FutureInstrumentation.scala4
-rw-r--r--kamon-scala/src/test/scala/kamon/scala/instrumentation/FutureInstrumentationSpec.scala14
-rw-r--r--kamon-scala/src/test/scala/kamon/scalaz/instrumentation/FutureInstrumentationSpec.scala14
-rw-r--r--kamon-spray/src/main/scala/kamon/spray/KamonTraceDirectives.scala4
-rw-r--r--kamon-spray/src/main/scala/kamon/spray/instrumentation/ClientRequestInstrumentation.scala10
-rw-r--r--kamon-spray/src/main/scala/kamon/spray/instrumentation/ServerRequestInstrumentation.scala9
-rw-r--r--kamon-spray/src/test/scala/kamon/spray/ClientRequestInstrumentationSpec.scala30
-rw-r--r--kamon-testkit/src/main/scala/testkit/TestProbeInstrumentation.scala4
37 files changed, 237 insertions, 241 deletions
diff --git a/kamon-akka-remote/src/main/scala/kamon/akka/instrumentation/RemotingInstrumentation.scala b/kamon-akka-remote/src/main/scala/kamon/akka/instrumentation/RemotingInstrumentation.scala
index 32a3bcc9..50fbc815 100644
--- a/kamon-akka-remote/src/main/scala/kamon/akka/instrumentation/RemotingInstrumentation.scala
+++ b/kamon-akka-remote/src/main/scala/kamon/akka/instrumentation/RemotingInstrumentation.scala
@@ -6,7 +6,7 @@ import akka.remote.{ RemoteActorRefProvider, Ack, SeqNo }
import akka.remote.WireFormats._
import akka.util.ByteString
import kamon.Kamon
-import kamon.trace.TraceContext
+import kamon.trace.{ Tracer, TraceContext }
import kamon.util.MilliTimestamp
import org.aspectj.lang.ProceedingJoinPoint
import org.aspectj.lang.annotation._
@@ -33,7 +33,7 @@ class RemotingInstrumentation {
envelopeBuilder.setMessage(serializedMessage)
// Attach the TraceContext info, if available.
- TraceContext.map { context ⇒
+ Tracer.currentContext.collect { context ⇒
envelopeBuilder.setTraceContext(RemoteTraceContext.newBuilder()
.setTraceName(context.name)
@@ -93,7 +93,7 @@ class RemotingInstrumentation {
remoteTraceContext.getIsOpen,
isLocal = false)
- TraceContext.setCurrentContext(ctx)
+ Tracer.setCurrentContext(ctx)
}
pjp.proceed()
diff --git a/kamon-akka-remote/src/test/scala/kamon/akka/instrumentation/RemotingInstrumentationSpec.scala b/kamon-akka-remote/src/test/scala/kamon/akka/instrumentation/RemotingInstrumentationSpec.scala
index ccfde35a..d8535ff8 100644
--- a/kamon-akka-remote/src/test/scala/kamon/akka/instrumentation/RemotingInstrumentationSpec.scala
+++ b/kamon-akka-remote/src/test/scala/kamon/akka/instrumentation/RemotingInstrumentationSpec.scala
@@ -9,7 +9,7 @@ import akka.testkit.{ ImplicitSender, TestKitBase }
import akka.util.Timeout
import com.typesafe.config.ConfigFactory
import kamon.Kamon
-import kamon.trace.TraceContext
+import kamon.trace.Tracer
import org.scalatest.{ Matchers, WordSpecLike }
import scala.concurrent.duration._
@@ -61,7 +61,7 @@ class RemotingInstrumentationSpec extends TestKitBase with WordSpecLike with Mat
"The Remoting instrumentation" should {
"propagate the TraceContext when creating a new remote actor" in {
- TraceContext.withContext(tracer.newContext("deploy-remote-actor", "deploy-remote-actor-1")) {
+ Tracer.withContext(tracer.newContext("deploy-remote-actor", "deploy-remote-actor-1")) {
system.actorOf(TraceTokenReplier.remoteProps(Some(testActor), RemoteSystemAddress), "remote-deploy-fixture")
}
@@ -71,7 +71,7 @@ class RemotingInstrumentationSpec extends TestKitBase with WordSpecLike with Mat
"propagate the TraceContext when sending a message to a remotely deployed actor" in {
val remoteRef = system.actorOf(TraceTokenReplier.remoteProps(None, RemoteSystemAddress), "remote-message-fixture")
- TraceContext.withContext(tracer.newContext("message-remote-actor", "message-remote-actor-1")) {
+ Tracer.withContext(tracer.newContext("message-remote-actor", "message-remote-actor-1")) {
remoteRef ! "reply-trace-token"
}
@@ -83,7 +83,7 @@ class RemotingInstrumentationSpec extends TestKitBase with WordSpecLike with Mat
implicit val askTimeout = Timeout(10 seconds)
val remoteRef = system.actorOf(TraceTokenReplier.remoteProps(None, RemoteSystemAddress), "remote-ask-and-pipe-fixture")
- TraceContext.withContext(tracer.newContext("ask-and-pipe-remote-actor", "ask-and-pipe-remote-actor-1")) {
+ Tracer.withContext(tracer.newContext("ask-and-pipe-remote-actor", "ask-and-pipe-remote-actor-1")) {
(remoteRef ? "reply-trace-token") pipeTo (testActor)
}
@@ -95,7 +95,7 @@ class RemotingInstrumentationSpec extends TestKitBase with WordSpecLike with Mat
remoteSystem.actorOf(TraceTokenReplier.props(None), "actor-selection-target-b")
val selection = system.actorSelection(RemoteSystemAddress + "/user/actor-selection-target-*")
- TraceContext.withContext(tracer.newContext("message-remote-actor-selection", "message-remote-actor-selection-1")) {
+ Tracer.withContext(tracer.newContext("message-remote-actor-selection", "message-remote-actor-selection-1")) {
selection ! "reply-trace-token"
}
@@ -107,7 +107,7 @@ class RemotingInstrumentationSpec extends TestKitBase with WordSpecLike with Mat
"propagate the TraceContext a remotely supervised child fails" in {
val supervisor = system.actorOf(Props(new SupervisorOfRemote(testActor, RemoteSystemAddress)))
- TraceContext.withContext(tracer.newContext("remote-supervision", "remote-supervision-1")) {
+ Tracer.withContext(tracer.newContext("remote-supervision", "remote-supervision-1")) {
supervisor ! "fail"
}
@@ -118,7 +118,7 @@ class RemotingInstrumentationSpec extends TestKitBase with WordSpecLike with Mat
remoteSystem.actorOf(TraceTokenReplier.props(None), "remote-routee")
val router = system.actorOf(RoundRobinGroup(List(RemoteSystemAddress + "/user/actor-selection-target-*")).props(), "router")
- TraceContext.withContext(tracer.newContext("remote-routee", "remote-routee-1")) {
+ Tracer.withContext(tracer.newContext("remote-routee", "remote-routee-1")) {
router ! "reply-trace-token"
}
@@ -141,7 +141,7 @@ class TraceTokenReplier(creationTraceContextListener: Option[ActorRef]) extends
}
def currentTraceContextInfo: String = {
- val ctx = TraceContext.currentContext
+ val ctx = Tracer.currentContext
s"name=${ctx.name}|token=${ctx.token}|isOpen=${ctx.isOpen}"
}
}
@@ -170,7 +170,7 @@ class SupervisorOfRemote(traceContextListener: ActorRef, remoteAddress: Address)
}
def currentTraceContextInfo: String = {
- val ctx = TraceContext.currentContext
+ val ctx = Tracer.currentContext
s"name=${ctx.name}|token=${ctx.token}|isOpen=${ctx.isOpen}"
}
}
diff --git a/kamon-akka/src/main/scala/kamon/akka/instrumentation/ActorCellInstrumentation.scala b/kamon-akka/src/main/scala/kamon/akka/instrumentation/ActorCellInstrumentation.scala
index 7c722569..4783484f 100644
--- a/kamon-akka/src/main/scala/kamon/akka/instrumentation/ActorCellInstrumentation.scala
+++ b/kamon-akka/src/main/scala/kamon/akka/instrumentation/ActorCellInstrumentation.scala
@@ -53,7 +53,7 @@ class ActorCellInstrumentation {
val contextAndTimestamp = envelope.asInstanceOf[TimestampedTraceContextAware]
try {
- TraceContext.withContext(contextAndTimestamp.traceContext) {
+ Tracer.withContext(contextAndTimestamp.traceContext) {
pjp.proceed()
}
} finally {
@@ -142,7 +142,7 @@ class RoutedActorCellInstrumentation {
val contextAndTimestamp = envelope.asInstanceOf[TimestampedTraceContextAware]
try {
- TraceContext.withContext(contextAndTimestamp.traceContext) {
+ Tracer.withContext(contextAndTimestamp.traceContext) {
// The router metrics recorder will only be picked up if the message is sent from a tracked router.
RouterAwareEnvelope.dynamicRouterMetricsRecorder.withValue(cellMetrics.routerRecorder) {
diff --git a/kamon-akka/src/main/scala/kamon/akka/instrumentation/ActorLoggingInstrumentation.scala b/kamon-akka/src/main/scala/kamon/akka/instrumentation/ActorLoggingInstrumentation.scala
index dd998c6b..f17c4976 100644
--- a/kamon-akka/src/main/scala/kamon/akka/instrumentation/ActorLoggingInstrumentation.scala
+++ b/kamon-akka/src/main/scala/kamon/akka/instrumentation/ActorLoggingInstrumentation.scala
@@ -17,7 +17,7 @@
package akka.kamon.instrumentation
import kamon.trace.logging.MdcKeysSupport
-import kamon.trace.{ TraceContext, TraceContextAware }
+import kamon.trace.{ Tracer, TraceContextAware }
import org.aspectj.lang.ProceedingJoinPoint
import org.aspectj.lang.annotation._
@@ -41,7 +41,7 @@ class ActorLoggingInstrumentation extends MdcKeysSupport {
@Around("withMdcInvocation(logSource, logEvent, logStatement)")
def aroundWithMdcInvocation(pjp: ProceedingJoinPoint, logSource: String, logEvent: TraceContextAware, logStatement: () ⇒ _): Unit = {
- TraceContext.withContext(logEvent.traceContext) {
+ Tracer.withContext(logEvent.traceContext) {
withMdc {
pjp.proceed()
}
diff --git a/kamon-akka/src/main/scala/kamon/akka/instrumentation/ActorSystemMessageInstrumentation.scala b/kamon-akka/src/main/scala/kamon/akka/instrumentation/ActorSystemMessageInstrumentation.scala
index 0cb4ef13..c123ee04 100644
--- a/kamon-akka/src/main/scala/kamon/akka/instrumentation/ActorSystemMessageInstrumentation.scala
+++ b/kamon-akka/src/main/scala/kamon/akka/instrumentation/ActorSystemMessageInstrumentation.scala
@@ -17,7 +17,7 @@
package akka.kamon.instrumentation
import akka.dispatch.sysmsg.EarliestFirstSystemMessageList
-import kamon.trace.{ TraceContext, TraceContextAware }
+import kamon.trace.{ Tracer, TraceContextAware }
import org.aspectj.lang.ProceedingJoinPoint
import org.aspectj.lang.annotation._
@@ -31,7 +31,7 @@ class ActorSystemMessageInstrumentation {
def aroundSystemMessageInvoke(pjp: ProceedingJoinPoint, messages: EarliestFirstSystemMessageList): Any = {
if (messages.nonEmpty) {
val ctx = messages.head.asInstanceOf[TraceContextAware].traceContext
- TraceContext.withContext(ctx)(pjp.proceed())
+ Tracer.withContext(ctx)(pjp.proceed())
} else pjp.proceed()
}
@@ -73,7 +73,7 @@ class TraceContextIntoRepointableActorRefMixin {
@Around("repointableActorRefCreation(repointableActorRef)")
def afterRepointableActorRefCreation(pjp: ProceedingJoinPoint, repointableActorRef: TraceContextAware): Any = {
- TraceContext.withContext(repointableActorRef.traceContext) {
+ Tracer.withContext(repointableActorRef.traceContext) {
pjp.proceed()
}
}
diff --git a/kamon-akka/src/main/scala/kamon/akka/instrumentation/AskPatternInstrumentation.scala b/kamon-akka/src/main/scala/kamon/akka/instrumentation/AskPatternInstrumentation.scala
index e1dcdf32..42edf4db 100644
--- a/kamon-akka/src/main/scala/kamon/akka/instrumentation/AskPatternInstrumentation.scala
+++ b/kamon-akka/src/main/scala/kamon/akka/instrumentation/AskPatternInstrumentation.scala
@@ -19,16 +19,15 @@ package akka.kamon.instrumentation
import akka.util.Timeout
import kamon.Kamon
import kamon.akka.Akka
-import kamon.trace.{ TraceContext, EmptyTraceContext, TraceContextAware }
+import kamon.trace.Tracer
import akka.actor.{ InternalActorRef, ActorSystem, ActorRef }
import akka.event.Logging.Warning
-import akka.pattern.{ PromiseActorRef, AskTimeoutException }
+import akka.pattern.AskTimeoutException
import org.aspectj.lang.ProceedingJoinPoint
import org.aspectj.lang.annotation._
import org.aspectj.lang.reflect.SourceLocation
import scala.concurrent.Future
import scala.compat.Platform.EOL
-import scala.concurrent.duration.FiniteDuration
@Aspect
class AskPatternInstrumentation {
@@ -40,7 +39,7 @@ class AskPatternInstrumentation {
@Around("askableActorRefAsk(actor, timeout)")
def hookAskTimeoutWarning(pjp: ProceedingJoinPoint, actor: ActorRef, timeout: Timeout): AnyRef =
- TraceContext.map { ctx ⇒
+ Tracer.currentContext.collect { ctx ⇒
actor match {
// the AskPattern will only work for InternalActorRef's with these conditions.
case ref: InternalActorRef if !ref.isTerminated && timeout.duration.length > 0 ⇒
diff --git a/kamon-akka/src/test/scala/kamon/akka/instrumentation/ActorCellInstrumentationSpec.scala b/kamon-akka/src/test/scala/kamon/akka/instrumentation/ActorCellInstrumentationSpec.scala
index 8f7ae613..457b8351 100644
--- a/kamon-akka/src/test/scala/kamon/akka/instrumentation/ActorCellInstrumentationSpec.scala
+++ b/kamon-akka/src/test/scala/kamon/akka/instrumentation/ActorCellInstrumentationSpec.scala
@@ -20,7 +20,7 @@ import akka.pattern.{ ask, pipe }
import akka.routing._
import akka.util.Timeout
import kamon.testkit.BaseKamonSpec
-import kamon.trace.TraceContext
+import kamon.trace.Tracer
import scala.concurrent.duration._
@@ -29,18 +29,18 @@ class ActorCellInstrumentationSpec extends BaseKamonSpec("actor-cell-instrumenta
"the message passing instrumentation" should {
"propagate the TraceContext using bang" in new EchoActorFixture {
- val testTraceContext = TraceContext.withContext(newContext("bang-reply")) {
+ val testTraceContext = Tracer.withContext(newContext("bang-reply")) {
ctxEchoActor ! "test"
- TraceContext.currentContext
+ Tracer.currentContext
}
expectMsg(testTraceContext)
}
"propagate the TraceContext using tell" in new EchoActorFixture {
- val testTraceContext = TraceContext.withContext(newContext("tell-reply")) {
+ val testTraceContext = Tracer.withContext(newContext("tell-reply")) {
ctxEchoActor.tell("test", testActor)
- TraceContext.currentContext
+ Tracer.currentContext
}
expectMsg(testTraceContext)
@@ -48,37 +48,37 @@ class ActorCellInstrumentationSpec extends BaseKamonSpec("actor-cell-instrumenta
"propagate the TraceContext using ask" in new EchoActorFixture {
implicit val timeout = Timeout(1 seconds)
- val testTraceContext = TraceContext.withContext(newContext("ask-reply")) {
+ val testTraceContext = Tracer.withContext(newContext("ask-reply")) {
// The pipe pattern use Futures internally, so FutureTracing test should cover the underpinnings of it.
(ctxEchoActor ? "test") pipeTo (testActor)
- TraceContext.currentContext
+ Tracer.currentContext
}
expectMsg(testTraceContext)
}
"propagate the TraceContext to actors behind a simple router" in new EchoSimpleRouterFixture {
- val testTraceContext = TraceContext.withContext(newContext("router-reply")) {
+ val testTraceContext = Tracer.withContext(newContext("router-reply")) {
router.route("test", testActor)
- TraceContext.currentContext
+ Tracer.currentContext
}
expectMsg(testTraceContext)
}
"propagate the TraceContext to actors behind a pool router" in new EchoPoolRouterFixture {
- val testTraceContext = TraceContext.withContext(newContext("router-reply")) {
+ val testTraceContext = Tracer.withContext(newContext("router-reply")) {
pool ! "test"
- TraceContext.currentContext
+ Tracer.currentContext
}
expectMsg(testTraceContext)
}
"propagate the TraceContext to actors behind a group router" in new EchoGroupRouterFixture {
- val testTraceContext = TraceContext.withContext(newContext("router-reply")) {
+ val testTraceContext = Tracer.withContext(newContext("router-reply")) {
group ! "test"
- TraceContext.currentContext
+ Tracer.currentContext
}
expectMsg(testTraceContext)
@@ -116,7 +116,7 @@ class ActorCellInstrumentationSpec extends BaseKamonSpec("actor-cell-instrumenta
class TraceContextEcho extends Actor {
def receive = {
- case msg: String ⇒ sender ! TraceContext.currentContext
+ case msg: String ⇒ sender ! Tracer.currentContext
}
}
diff --git a/kamon-akka/src/test/scala/kamon/akka/instrumentation/ActorLoggingInstrumentationSpec.scala b/kamon-akka/src/test/scala/kamon/akka/instrumentation/ActorLoggingInstrumentationSpec.scala
index 21706af9..42a26cdd 100644
--- a/kamon-akka/src/test/scala/kamon/akka/instrumentation/ActorLoggingInstrumentationSpec.scala
+++ b/kamon-akka/src/test/scala/kamon/akka/instrumentation/ActorLoggingInstrumentationSpec.scala
@@ -21,7 +21,7 @@ import com.typesafe.config.ConfigFactory
import kamon.testkit.BaseKamonSpec
import kamon.trace.TraceLocal.AvailableToMdc
import kamon.trace.logging.MdcKeysSupport
-import kamon.trace.{ TraceContextAware, TraceLocal, TraceContext }
+import kamon.trace.{Tracer, TraceContextAware, TraceLocal}
import org.scalatest.Inspectors
import org.slf4j.MDC
@@ -39,9 +39,9 @@ class ActorLoggingInstrumentationSpec extends BaseKamonSpec("actor-logging-instr
val loggerActor = system.actorOf(Props[LoggerActor])
system.eventStream.subscribe(testActor, classOf[LogEvent])
- val testTraceContext = TraceContext.withContext(newContext("logging")) {
+ val testTraceContext = Tracer.withContext(newContext("logging")) {
loggerActor ! "info"
- TraceContext.currentContext
+ Tracer.currentContext
}
fishForMessage() {
@@ -55,7 +55,7 @@ class ActorLoggingInstrumentationSpec extends BaseKamonSpec("actor-logging-instr
"allow retrieve a value from the MDC when was created a key of type AvailableToMdc" in {
val testString = "Hello World"
- TraceContext.withContext(newContext("logging-with-mdc")) {
+ Tracer.withContext(newContext("logging-with-mdc")) {
TraceLocal.store(AvailableToMdc("some-cool-key"))(testString)
withMdc {
@@ -71,6 +71,6 @@ class ActorLoggingInstrumentationSpec extends BaseKamonSpec("actor-logging-instr
class LoggerActor extends Actor with ActorLogging {
def receive = {
- case "info" ⇒ log.info("TraceContext(name = {}, token = {})", TraceContext.currentContext.name, TraceContext.currentContext.token)
+ case "info" ⇒ log.info("TraceContext(name = {}, token = {})", Tracer.currentContext.name, Tracer.currentContext.token)
}
}
diff --git a/kamon-akka/src/test/scala/kamon/akka/instrumentation/ActorSystemMessageInstrumentationSpec.scala b/kamon-akka/src/test/scala/kamon/akka/instrumentation/ActorSystemMessageInstrumentationSpec.scala
index 808473cd..fd9f58d0 100644
--- a/kamon-akka/src/test/scala/kamon/akka/instrumentation/ActorSystemMessageInstrumentationSpec.scala
+++ b/kamon-akka/src/test/scala/kamon/akka/instrumentation/ActorSystemMessageInstrumentationSpec.scala
@@ -21,7 +21,7 @@ import akka.actor._
import akka.testkit.ImplicitSender
import com.typesafe.config.ConfigFactory
import kamon.testkit.BaseKamonSpec
-import kamon.trace.{ EmptyTraceContext, TraceContext }
+import kamon.trace.{Tracer, EmptyTraceContext}
import org.scalatest.WordSpecLike
import scala.concurrent.duration._
@@ -40,31 +40,31 @@ class ActorSystemMessageInstrumentationSpec extends BaseKamonSpec("actor-system-
"the system message passing instrumentation" should {
"keep the TraceContext while processing the Create message in top level actors" in {
- val testTraceContext = TraceContext.withContext(newContext("creating-top-level-actor")) {
+ val testTraceContext = Tracer.withContext(newContext("creating-top-level-actor")) {
system.actorOf(Props(new Actor {
- testActor ! TraceContext.currentContext
+ testActor ! Tracer.currentContext
def receive: Actor.Receive = { case any ⇒ }
}))
- TraceContext.currentContext
+ Tracer.currentContext
}
expectMsg(testTraceContext)
}
"keep the TraceContext while processing the Create message in non top level actors" in {
- val testTraceContext = TraceContext.withContext(newContext("creating-non-top-level-actor")) {
+ val testTraceContext = Tracer.withContext(newContext("creating-non-top-level-actor")) {
system.actorOf(Props(new Actor {
def receive: Actor.Receive = {
case any ⇒
context.actorOf(Props(new Actor {
- testActor ! TraceContext.currentContext
+ testActor ! Tracer.currentContext
def receive: Actor.Receive = { case any ⇒ }
}))
}
})) ! "any"
- TraceContext.currentContext
+ Tracer.currentContext
}
expectMsg(testTraceContext)
@@ -74,9 +74,9 @@ class ActorSystemMessageInstrumentationSpec extends BaseKamonSpec("actor-system-
"the actor is resumed" in {
val supervisor = supervisorWithDirective(Resume)
- val testTraceContext = TraceContext.withContext(newContext("fail-and-resume")) {
+ val testTraceContext = Tracer.withContext(newContext("fail-and-resume")) {
supervisor ! "fail"
- TraceContext.currentContext
+ Tracer.currentContext
}
expectMsg(testTraceContext) // From the parent executing the supervision strategy
@@ -89,9 +89,9 @@ class ActorSystemMessageInstrumentationSpec extends BaseKamonSpec("actor-system-
"the actor is restarted" in {
val supervisor = supervisorWithDirective(Restart, sendPreRestart = true, sendPostRestart = true)
- val testTraceContext = TraceContext.withContext(newContext("fail-and-restart")) {
+ val testTraceContext = Tracer.withContext(newContext("fail-and-restart")) {
supervisor ! "fail"
- TraceContext.currentContext
+ Tracer.currentContext
}
expectMsg(testTraceContext) // From the parent executing the supervision strategy
@@ -106,9 +106,9 @@ class ActorSystemMessageInstrumentationSpec extends BaseKamonSpec("actor-system-
"the actor is stopped" in {
val supervisor = supervisorWithDirective(Stop, sendPostStop = true)
- val testTraceContext = TraceContext.withContext(newContext("fail-and-stop")) {
+ val testTraceContext = Tracer.withContext(newContext("fail-and-stop")) {
supervisor ! "fail"
- TraceContext.currentContext
+ Tracer.currentContext
}
expectMsg(testTraceContext) // From the parent executing the supervision strategy
@@ -119,9 +119,9 @@ class ActorSystemMessageInstrumentationSpec extends BaseKamonSpec("actor-system-
"the failure is escalated" in {
val supervisor = supervisorWithDirective(Escalate, sendPostStop = true)
- val testTraceContext = TraceContext.withContext(newContext("fail-and-escalate")) {
+ val testTraceContext = Tracer.withContext(newContext("fail-and-escalate")) {
supervisor ! "fail"
- TraceContext.currentContext
+ Tracer.currentContext
}
expectMsg(testTraceContext) // From the parent executing the supervision strategy
@@ -139,7 +139,7 @@ class ActorSystemMessageInstrumentationSpec extends BaseKamonSpec("actor-system-
val child = context.actorOf(Props(new Parent))
override def supervisorStrategy: SupervisorStrategy = OneForOneStrategy() {
- case NonFatal(throwable) ⇒ testActor ! TraceContext.currentContext; Stop
+ case NonFatal(throwable) ⇒ testActor ! Tracer.currentContext; Stop
}
def receive = {
@@ -151,7 +151,7 @@ class ActorSystemMessageInstrumentationSpec extends BaseKamonSpec("actor-system-
val child = context.actorOf(Props(new Child))
override def supervisorStrategy: SupervisorStrategy = OneForOneStrategy() {
- case NonFatal(throwable) ⇒ testActor ! TraceContext.currentContext; directive
+ case NonFatal(throwable) ⇒ testActor ! Tracer.currentContext; directive
}
def receive: Actor.Receive = {
@@ -159,7 +159,7 @@ class ActorSystemMessageInstrumentationSpec extends BaseKamonSpec("actor-system-
}
override def postStop(): Unit = {
- if (sendPostStop) testActor ! TraceContext.currentContext
+ if (sendPostStop) testActor ! Tracer.currentContext
super.postStop()
}
}
@@ -167,26 +167,26 @@ class ActorSystemMessageInstrumentationSpec extends BaseKamonSpec("actor-system-
class Child extends Actor {
def receive = {
case "fail" ⇒ throw new ArithmeticException("Division by zero.")
- case "context" ⇒ sender ! TraceContext.currentContext
+ case "context" ⇒ sender ! Tracer.currentContext
}
override def preRestart(reason: Throwable, message: Option[Any]): Unit = {
- if (sendPreRestart) testActor ! TraceContext.currentContext
+ if (sendPreRestart) testActor ! Tracer.currentContext
super.preRestart(reason, message)
}
override def postRestart(reason: Throwable): Unit = {
- if (sendPostRestart) testActor ! TraceContext.currentContext
+ if (sendPostRestart) testActor ! Tracer.currentContext
super.postRestart(reason)
}
override def postStop(): Unit = {
- if (sendPostStop) testActor ! TraceContext.currentContext
+ if (sendPostStop) testActor ! Tracer.currentContext
super.postStop()
}
override def preStart(): Unit = {
- if (sendPreStart) testActor ! TraceContext.currentContext
+ if (sendPreStart) testActor ! Tracer.currentContext
super.preStart()
}
}
diff --git a/kamon-akka/src/test/scala/kamon/akka/instrumentation/AskPatternInstrumentationSpec.scala b/kamon-akka/src/test/scala/kamon/akka/instrumentation/AskPatternInstrumentationSpec.scala
index 44b90642..a44945ea 100644
--- a/kamon-akka/src/test/scala/kamon/akka/instrumentation/AskPatternInstrumentationSpec.scala
+++ b/kamon-akka/src/test/scala/kamon/akka/instrumentation/AskPatternInstrumentationSpec.scala
@@ -27,7 +27,7 @@ import com.typesafe.config.ConfigFactory
import kamon.Kamon
import kamon.akka.Akka
import kamon.testkit.BaseKamonSpec
-import kamon.trace.{ TraceContext, TraceContextAware }
+import kamon.trace.{Tracer, TraceContext, TraceContextAware}
import scala.concurrent.duration._
@@ -51,9 +51,9 @@ class AskPatternInstrumentationSpec extends BaseKamonSpec("ask-pattern-tracing-s
setAskPatternTimeoutWarningMode("heavyweight")
expectTimeoutWarning() {
- TraceContext.withContext(newContext("ask-timeout-warning")) {
+ Tracer.withContext(newContext("ask-timeout-warning")) {
noReplyActorRef ? "hello"
- TraceContext.currentContext
+ Tracer.currentContext
}
}
}
@@ -64,9 +64,9 @@ class AskPatternInstrumentationSpec extends BaseKamonSpec("ask-pattern-tracing-s
setAskPatternTimeoutWarningMode("lightweight")
expectTimeoutWarning(messageSizeLimit = Some(1)) {
- TraceContext.withContext(newContext("ask-timeout-warning")) {
+ Tracer.withContext(newContext("ask-timeout-warning")) {
noReplyActorRef ? "hello"
- TraceContext.currentContext
+ Tracer.currentContext
}
}
}
@@ -77,9 +77,9 @@ class AskPatternInstrumentationSpec extends BaseKamonSpec("ask-pattern-tracing-s
setAskPatternTimeoutWarningMode("off")
expectTimeoutWarning(expectWarning = false) {
- TraceContext.withContext(newContext("ask-timeout-warning")) {
+ Tracer.withContext(newContext("ask-timeout-warning")) {
noReplyActorRef ? "hello"
- TraceContext.currentContext
+ Tracer.currentContext
}
}
}
diff --git a/kamon-core/src/main/scala/kamon/trace/TraceContext.scala b/kamon-core/src/main/scala/kamon/trace/TraceContext.scala
index 48e56153..613e97e6 100644
--- a/kamon-core/src/main/scala/kamon/trace/TraceContext.scala
+++ b/kamon-core/src/main/scala/kamon/trace/TraceContext.scala
@@ -17,6 +17,7 @@
package kamon.trace
import java.io.ObjectStreamException
+import java.util.function.Function
import kamon.trace.TraceContextAware.DefaultTraceContextAware
import kamon.util.RelativeNanoTimestamp
@@ -35,36 +36,16 @@ trait TraceContext {
def addMetadata(key: String, value: String)
def startTimestamp: RelativeNanoTimestamp
-}
-
-object TraceContext {
- private[kamon] val _traceContextStorage = new ThreadLocal[TraceContext] {
- override def initialValue(): TraceContext = EmptyTraceContext
- }
-
- def currentContext: TraceContext =
- _traceContextStorage.get()
-
- def setCurrentContext(context: TraceContext): Unit =
- _traceContextStorage.set(context)
-
- def clearCurrentContext: Unit =
- _traceContextStorage.remove()
- def withContext[T](context: TraceContext)(code: ⇒ T): T = {
- val oldContext = _traceContextStorage.get()
- _traceContextStorage.set(context)
-
- try code finally _traceContextStorage.set(oldContext)
- }
-
- def map[T](f: TraceContext ⇒ T): Option[T] = {
- val current = currentContext
- if (current.nonEmpty)
- Some(f(current))
+ def collect[T](f: TraceContext ⇒ T): Option[T] =
+ if (nonEmpty)
+ Some(f(this))
else None
- }
+ def collect[T](f: Function[TraceContext, T]): Option[T] =
+ if (nonEmpty)
+ Some(f(this))
+ else None
}
trait Segment {
@@ -132,7 +113,7 @@ object TraceContextAware {
def default: TraceContextAware = new DefaultTraceContextAware
class DefaultTraceContextAware extends TraceContextAware {
- @transient val traceContext = TraceContext.currentContext
+ @transient val traceContext = Tracer.currentContext
//
// Beware of this hack, it might bite us in the future!
diff --git a/kamon-core/src/main/scala/kamon/trace/TraceLocal.scala b/kamon-core/src/main/scala/kamon/trace/TraceLocal.scala
index 057f564e..0a0a120a 100644
--- a/kamon-core/src/main/scala/kamon/trace/TraceLocal.scala
+++ b/kamon-core/src/main/scala/kamon/trace/TraceLocal.scala
@@ -42,12 +42,12 @@ object TraceLocal {
object HttpContextKey extends TraceLocal.TraceLocalKey { type ValueType = HttpContext }
- def store(key: TraceLocalKey)(value: key.ValueType): Unit = TraceContext.currentContext match {
+ def store(key: TraceLocalKey)(value: key.ValueType): Unit = Tracer.currentContext match {
case ctx: MetricsOnlyContext ⇒ ctx.traceLocalStorage.store(key)(value)
case EmptyTraceContext ⇒ // Can't store in the empty context.
}
- def retrieve(key: TraceLocalKey): Option[key.ValueType] = TraceContext.currentContext match {
+ def retrieve(key: TraceLocalKey): Option[key.ValueType] = Tracer.currentContext match {
case ctx: MetricsOnlyContext ⇒ ctx.traceLocalStorage.retrieve(key)
case EmptyTraceContext ⇒ None // Can't retrieve anything from the empty context.
}
diff --git a/kamon-core/src/main/scala/kamon/trace/Tracer.scala b/kamon-core/src/main/scala/kamon/trace/Tracer.scala
index 49ab518f..cf83b36b 100644
--- a/kamon-core/src/main/scala/kamon/trace/Tracer.scala
+++ b/kamon-core/src/main/scala/kamon/trace/Tracer.scala
@@ -35,6 +35,28 @@ trait Tracer {
def unsubscribe(subscriber: ActorRef): Unit
}
+object Tracer {
+ private[kamon] val _traceContextStorage = new ThreadLocal[TraceContext] {
+ override def initialValue(): TraceContext = EmptyTraceContext
+ }
+
+ def currentContext: TraceContext =
+ _traceContextStorage.get()
+
+ def setCurrentContext(context: TraceContext): Unit =
+ _traceContextStorage.set(context)
+
+ def clearCurrentContext: Unit =
+ _traceContextStorage.remove()
+
+ def withContext[T](context: TraceContext)(code: ⇒ T): T = {
+ val oldContext = _traceContextStorage.get()
+ _traceContextStorage.set(context)
+
+ try code finally _traceContextStorage.set(oldContext)
+ }
+}
+
private[kamon] class TracerImpl(metricsExtension: Metrics, config: Config) extends Tracer {
private val _settings = TraceSettings(config)
private val _hostnamePrefix = Try(InetAddress.getLocalHost.getHostName).getOrElse("unknown-localhost")
diff --git a/kamon-core/src/main/scala/kamon/trace/logging/LogbackTraceTokenConverter.scala b/kamon-core/src/main/scala/kamon/trace/logging/LogbackTraceTokenConverter.scala
index 961c3099..8177ed14 100644
--- a/kamon-core/src/main/scala/kamon/trace/logging/LogbackTraceTokenConverter.scala
+++ b/kamon-core/src/main/scala/kamon/trace/logging/LogbackTraceTokenConverter.scala
@@ -17,14 +17,10 @@ package kamon.trace.logging
import ch.qos.logback.classic.pattern.ClassicConverter
import ch.qos.logback.classic.spi.ILoggingEvent
-import kamon.trace.TraceContext
+import kamon.trace.Tracer
class LogbackTraceTokenConverter extends ClassicConverter {
- def convert(event: ILoggingEvent): String = {
- val ctx = TraceContext.currentContext
- if (ctx.isEmpty)
- "undefined"
- else
- ctx.token
- }
+
+ def convert(event: ILoggingEvent): String =
+ Tracer.currentContext.collect(_.token).getOrElse("undefined")
}
diff --git a/kamon-core/src/main/scala/kamon/trace/logging/MdcKeysSupport.scala b/kamon-core/src/main/scala/kamon/trace/logging/MdcKeysSupport.scala
index 4970d97e..5097fe6b 100644
--- a/kamon-core/src/main/scala/kamon/trace/logging/MdcKeysSupport.scala
+++ b/kamon-core/src/main/scala/kamon/trace/logging/MdcKeysSupport.scala
@@ -17,14 +17,14 @@
package kamon.trace.logging
import kamon.trace.TraceLocal.AvailableToMdc
-import kamon.trace.{ EmptyTraceContext, MetricsOnlyContext, TraceContext }
+import kamon.trace.{ Tracer, EmptyTraceContext, MetricsOnlyContext, TraceContext }
import org.slf4j.MDC
trait MdcKeysSupport {
def withMdc[A](thunk: ⇒ A): A = {
- val keys = copyToMdc(TraceContext.currentContext)
+ val keys = copyToMdc(Tracer.currentContext)
try thunk finally keys.foreach(key ⇒ MDC.remove(key))
}
diff --git a/kamon-core/src/test/scala/kamon/metric/TraceMetricsSpec.scala b/kamon-core/src/test/scala/kamon/metric/TraceMetricsSpec.scala
index 6c13cdb6..03a09b7f 100644
--- a/kamon-core/src/test/scala/kamon/metric/TraceMetricsSpec.scala
+++ b/kamon-core/src/test/scala/kamon/metric/TraceMetricsSpec.scala
@@ -19,7 +19,7 @@ package kamon.metric
import akka.testkit.ImplicitSender
import com.typesafe.config.ConfigFactory
import kamon.testkit.BaseKamonSpec
-import kamon.trace.TraceContext
+import kamon.trace.Tracer
import kamon.metric.instrument.Histogram
class TraceMetricsSpec extends BaseKamonSpec("trace-metrics-spec") with ImplicitSender {
@@ -44,8 +44,8 @@ class TraceMetricsSpec extends BaseKamonSpec("trace-metrics-spec") with Implicit
"the TraceMetrics" should {
"record the elapsed time between a trace creation and finish" in {
for (repetitions ← 1 to 10) {
- TraceContext.withContext(newContext("record-elapsed-time")) {
- TraceContext.currentContext.finish()
+ Tracer.withContext(newContext("record-elapsed-time")) {
+ Tracer.currentContext.finish()
}
}
@@ -54,10 +54,10 @@ class TraceMetricsSpec extends BaseKamonSpec("trace-metrics-spec") with Implicit
}
"record the elapsed time for segments that occur inside a given trace" in {
- TraceContext.withContext(newContext("trace-with-segments")) {
- val segment = TraceContext.currentContext.startSegment("test-segment", "test-category", "test-library")
+ Tracer.withContext(newContext("trace-with-segments")) {
+ val segment = Tracer.currentContext.startSegment("test-segment", "test-category", "test-library")
segment.finish()
- TraceContext.currentContext.finish()
+ Tracer.currentContext.finish()
}
val snapshot = takeSnapshotOf("trace-with-segments", "trace")
@@ -67,9 +67,9 @@ class TraceMetricsSpec extends BaseKamonSpec("trace-metrics-spec") with Implicit
}
"record the elapsed time for segments that finish after their correspondent trace has finished" in {
- val segment = TraceContext.withContext(newContext("closing-segment-after-trace")) {
- val s = TraceContext.currentContext.startSegment("test-segment", "test-category", "test-library")
- TraceContext.currentContext.finish()
+ val segment = Tracer.withContext(newContext("closing-segment-after-trace")) {
+ val s = Tracer.currentContext.startSegment("test-segment", "test-category", "test-library")
+ Tracer.currentContext.finish()
s
}
diff --git a/kamon-core/src/test/scala/kamon/trace/SimpleTraceSpec.scala b/kamon-core/src/test/scala/kamon/trace/SimpleTraceSpec.scala
index 1d270106..c8f1ebf6 100644
--- a/kamon-core/src/test/scala/kamon/trace/SimpleTraceSpec.scala
+++ b/kamon-core/src/test/scala/kamon/trace/SimpleTraceSpec.scala
@@ -42,10 +42,10 @@ class SimpleTraceSpec extends BaseKamonSpec("simple-trace-spec") {
"send a TraceInfo when the trace has finished and all segments are finished" in {
Kamon.tracer.subscribe(testActor)
- TraceContext.withContext(newContext("simple-trace-without-segments")) {
- TraceContext.currentContext.startSegment("segment-one", "test-segment", "test").finish()
- TraceContext.currentContext.startSegment("segment-two", "test-segment", "test").finish()
- TraceContext.currentContext.finish()
+ Tracer.withContext(newContext("simple-trace-without-segments")) {
+ Tracer.currentContext.startSegment("segment-one", "test-segment", "test").finish()
+ Tracer.currentContext.startSegment("segment-two", "test-segment", "test").finish()
+ Tracer.currentContext.finish()
}
val traceInfo = expectMsgType[TraceInfo]
@@ -60,10 +60,10 @@ class SimpleTraceSpec extends BaseKamonSpec("simple-trace-spec") {
"incubate the tracing context if there are open segments after finishing" in {
Kamon.tracer.subscribe(testActor)
- val secondSegment = TraceContext.withContext(newContext("simple-trace-without-segments")) {
- TraceContext.currentContext.startSegment("segment-one", "test-segment", "test").finish()
- val segment = TraceContext.currentContext.startSegment("segment-two", "test-segment", "test")
- TraceContext.currentContext.finish()
+ val secondSegment = Tracer.withContext(newContext("simple-trace-without-segments")) {
+ Tracer.currentContext.startSegment("segment-one", "test-segment", "test").finish()
+ val segment = Tracer.currentContext.startSegment("segment-two", "test-segment", "test")
+ Tracer.currentContext.finish()
segment
}
diff --git a/kamon-core/src/test/scala/kamon/trace/TraceContextManipulationSpec.scala b/kamon-core/src/test/scala/kamon/trace/TraceContextManipulationSpec.scala
index d7cb7ea3..46620461 100644
--- a/kamon-core/src/test/scala/kamon/trace/TraceContextManipulationSpec.scala
+++ b/kamon-core/src/test/scala/kamon/trace/TraceContextManipulationSpec.scala
@@ -37,22 +37,22 @@ class TraceContextManipulationSpec extends BaseKamonSpec("trace-metrics-spec") {
"the TraceContext api" should {
"allow starting a trace within a specified block of code, and only within that block of code" in {
- val createdContext = TraceContext.withContext(newContext("start-context")) {
- TraceContext.currentContext should not be empty
- TraceContext.currentContext
+ val createdContext = Tracer.withContext(newContext("start-context")) {
+ Tracer.currentContext should not be empty
+ Tracer.currentContext
}
- TraceContext.currentContext shouldBe empty
+ Tracer.currentContext shouldBe empty
createdContext.name shouldBe ("start-context")
}
"allow starting a trace within a specified block of code, providing a trace-token and only within that block of code" in {
- val createdContext = TraceContext.withContext(newContext("start-context-with-token", "token-1")) {
- TraceContext.currentContext should not be empty
- TraceContext.currentContext
+ val createdContext = Tracer.withContext(newContext("start-context-with-token", "token-1")) {
+ Tracer.currentContext should not be empty
+ Tracer.currentContext
}
- TraceContext.currentContext shouldBe empty
+ Tracer.currentContext shouldBe empty
createdContext.name shouldBe ("start-context-with-token")
createdContext.token should be("token-1")
}
@@ -60,37 +60,37 @@ class TraceContextManipulationSpec extends BaseKamonSpec("trace-metrics-spec") {
"allow providing a TraceContext and make it available within a block of code" in {
val createdContext = newContext("manually-provided-trace-context")
- TraceContext.currentContext shouldBe empty
- TraceContext.withContext(createdContext) {
- TraceContext.currentContext should be(createdContext)
+ Tracer.currentContext shouldBe empty
+ Tracer.withContext(createdContext) {
+ Tracer.currentContext should be(createdContext)
}
- TraceContext.currentContext shouldBe empty
+ Tracer.currentContext shouldBe empty
}
"allow renaming a trace" in {
- val createdContext = TraceContext.withContext(newContext("trace-before-rename")) {
- TraceContext.currentContext.rename("renamed-trace")
- TraceContext.currentContext
+ val createdContext = Tracer.withContext(newContext("trace-before-rename")) {
+ Tracer.currentContext.rename("renamed-trace")
+ Tracer.currentContext
}
- TraceContext.currentContext shouldBe empty
+ Tracer.currentContext shouldBe empty
createdContext.name shouldBe ("renamed-trace")
}
"allow creating a segment within a trace" in {
- val createdContext = TraceContext.withContext(newContext("trace-with-segments")) {
- val segment = TraceContext.currentContext.startSegment("segment-1", "segment-1-category", "segment-library")
- TraceContext.currentContext
+ val createdContext = Tracer.withContext(newContext("trace-with-segments")) {
+ val segment = Tracer.currentContext.startSegment("segment-1", "segment-1-category", "segment-library")
+ Tracer.currentContext
}
- TraceContext.currentContext shouldBe empty
+ Tracer.currentContext shouldBe empty
createdContext.name shouldBe ("trace-with-segments")
}
"allow renaming a segment" in {
- TraceContext.withContext(newContext("trace-with-renamed-segment")) {
- val segment = TraceContext.currentContext.startSegment("original-segment-name", "segment-label", "segment-library")
+ Tracer.withContext(newContext("trace-with-renamed-segment")) {
+ val segment = Tracer.currentContext.startSegment("original-segment-name", "segment-label", "segment-library")
segment.name should be("original-segment-name")
segment.rename("new-segment-name")
diff --git a/kamon-core/src/test/scala/kamon/trace/TraceLocalSpec.scala b/kamon-core/src/test/scala/kamon/trace/TraceLocalSpec.scala
index 8bacca83..b58b247f 100644
--- a/kamon-core/src/test/scala/kamon/trace/TraceLocalSpec.scala
+++ b/kamon-core/src/test/scala/kamon/trace/TraceLocalSpec.scala
@@ -30,7 +30,7 @@ class TraceLocalSpec extends BaseKamonSpec("trace-local-spec") with PatienceConf
"the TraceLocal storage" should {
"allow storing and retrieving values" in {
- TraceContext.withContext(newContext("store-and-retrieve-trace-local")) {
+ Tracer.withContext(newContext("store-and-retrieve-trace-local")) {
val testString = "Hello World"
TraceLocal.store(SampleTraceLocalKey)(testString)
@@ -39,7 +39,7 @@ class TraceLocalSpec extends BaseKamonSpec("trace-local-spec") with PatienceConf
}
"return None when retrieving a non existent key" in {
- TraceContext.withContext(newContext("non-existent-key")) {
+ Tracer.withContext(newContext("non-existent-key")) {
TraceLocal.retrieve(SampleTraceLocalKey) should equal(None)
}
}
@@ -50,22 +50,22 @@ class TraceLocalSpec extends BaseKamonSpec("trace-local-spec") with PatienceConf
"be attached to the TraceContext when it is propagated" in {
val testString = "Hello World"
- val testContext = TraceContext.withContext(newContext("manually-propagated-trace-local")) {
+ val testContext = Tracer.withContext(newContext("manually-propagated-trace-local")) {
TraceLocal.store(SampleTraceLocalKey)(testString)
TraceLocal.retrieve(SampleTraceLocalKey).value should equal(testString)
- TraceContext.currentContext
+ Tracer.currentContext
}
/** No TraceLocal should be available here */
TraceLocal.retrieve(SampleTraceLocalKey) should equal(None)
- TraceContext.withContext(testContext) {
+ Tracer.withContext(testContext) {
TraceLocal.retrieve(SampleTraceLocalKey).value should equal(testString)
}
}
"allow retrieve a value from the MDC when was created a key with AvailableToMdc(cool-key)" in {
- TraceContext.withContext(newContext("store-and-retrieve-trace-local-and-copy-to-mdc")) {
+ Tracer.withContext(newContext("store-and-retrieve-trace-local-and-copy-to-mdc")) {
val testString = "Hello MDC"
TraceLocal.store(SampleTraceLocalKeyAvailableToMDC)(testString)
@@ -78,7 +78,7 @@ class TraceLocalSpec extends BaseKamonSpec("trace-local-spec") with PatienceConf
}
"allow retrieve a value from the MDC when was created a key with AvailableToMdc.storeForMdc(String, String)" in {
- TraceContext.withContext(newContext("store-and-retrieve-trace-local-and-copy-to-mdc")) {
+ Tracer.withContext(newContext("store-and-retrieve-trace-local-and-copy-to-mdc")) {
val testString = "Hello MDC"
TraceLocal.storeForMdc("someKey", testString)
diff --git a/kamon-jdbc/src/main/scala/kamon/jdbc/instrumentation/StatementInstrumentation.scala b/kamon-jdbc/src/main/scala/kamon/jdbc/instrumentation/StatementInstrumentation.scala
index d169a4c7..aa9295db 100644
--- a/kamon-jdbc/src/main/scala/kamon/jdbc/instrumentation/StatementInstrumentation.scala
+++ b/kamon-jdbc/src/main/scala/kamon/jdbc/instrumentation/StatementInstrumentation.scala
@@ -20,7 +20,7 @@ import java.util.concurrent.TimeUnit.{ NANOSECONDS ⇒ nanos }
import kamon.Kamon
import kamon.jdbc.{ JdbcExtension, Jdbc }
import kamon.jdbc.metric.StatementsMetrics
-import kamon.trace.{ TraceContext, SegmentCategory }
+import kamon.trace.{ Tracer, TraceContext, SegmentCategory }
import org.aspectj.lang.ProceedingJoinPoint
import org.aspectj.lang.annotation.{ Around, Aspect, Pointcut }
import org.slf4j.LoggerFactory
@@ -43,7 +43,7 @@ class StatementInstrumentation {
@Around("onExecuteStatement(sql) || onExecutePreparedStatement(sql) || onExecutePreparedCall(sql)")
def aroundExecuteStatement(pjp: ProceedingJoinPoint, sql: String): Any = {
- TraceContext.map { ctx ⇒
+ Tracer.currentContext.collect { ctx ⇒
val metricsExtension = Kamon.metrics
val jdbcExtension = Kamon(Jdbc)
implicit val statementRecorder = metricsExtension.register(StatementsMetrics, "jdbc-statements").map(_.recorder)
diff --git a/kamon-jdbc/src/test/scala/kamon/jdbc/instrumentation/StatementInstrumentationSpec.scala b/kamon-jdbc/src/test/scala/kamon/jdbc/instrumentation/StatementInstrumentationSpec.scala
index e150d967..8ad5faa8 100644
--- a/kamon-jdbc/src/test/scala/kamon/jdbc/instrumentation/StatementInstrumentationSpec.scala
+++ b/kamon-jdbc/src/test/scala/kamon/jdbc/instrumentation/StatementInstrumentationSpec.scala
@@ -21,7 +21,7 @@ import com.typesafe.config.ConfigFactory
import kamon.jdbc.{ Jdbc, JdbcNameGenerator, SqlErrorProcessor, SlowQueryProcessor }
import kamon.metric.TraceMetricsSpec
import kamon.testkit.BaseKamonSpec
-import kamon.trace.{ SegmentCategory, TraceContext }
+import kamon.trace.{ Tracer, SegmentCategory }
class StatementInstrumentationSpec extends BaseKamonSpec("jdbc-spec") {
import TraceMetricsSpec.SegmentSyntax
@@ -61,14 +61,14 @@ class StatementInstrumentationSpec extends BaseKamonSpec("jdbc-spec") {
"the StatementInstrumentation" should {
"record the execution time of INSERT operation" in {
- TraceContext.withContext(newContext("jdbc-trace-insert")) {
+ Tracer.withContext(newContext("jdbc-trace-insert")) {
for (id ← 1 to 100) {
val insert = s"INSERT INTO Address (Nr, Name) VALUES($id, 'foo')"
val insertStatement = connection.prepareStatement(insert)
insertStatement.execute()
}
- TraceContext.currentContext.finish()
+ Tracer.currentContext.finish()
}
val jdbcSnapshot = takeSnapshotOf("jdbc-statements", "jdbc-statements")
@@ -81,14 +81,14 @@ class StatementInstrumentationSpec extends BaseKamonSpec("jdbc-spec") {
}
"record the execution time of SELECT operation" in {
- TraceContext.withContext(newContext("jdbc-trace-select")) {
+ Tracer.withContext(newContext("jdbc-trace-select")) {
for (id ← 1 to 100) {
val select = s"SELECT * FROM Address where Nr = $id"
val selectStatement = connection.createStatement()
selectStatement.execute(select)
}
- TraceContext.currentContext.finish()
+ Tracer.currentContext.finish()
}
val jdbcSnapshot = takeSnapshotOf("jdbc-statements", "jdbc-statements")
@@ -101,14 +101,14 @@ class StatementInstrumentationSpec extends BaseKamonSpec("jdbc-spec") {
}
"record the execution time of UPDATE operation" in {
- TraceContext.withContext(newContext("jdbc-trace-update")) {
+ Tracer.withContext(newContext("jdbc-trace-update")) {
for (id ← 1 to 100) {
val update = s"UPDATE Address SET Name = 'bar$id' where Nr = $id"
val updateStatement = connection.prepareStatement(update)
updateStatement.execute()
}
- TraceContext.currentContext.finish()
+ Tracer.currentContext.finish()
}
val jdbcSnapshot = takeSnapshotOf("jdbc-statements", "jdbc-statements")
@@ -121,14 +121,14 @@ class StatementInstrumentationSpec extends BaseKamonSpec("jdbc-spec") {
}
"record the execution time of DELETE operation" in {
- TraceContext.withContext(newContext("jdbc-trace-delete")) {
+ Tracer.withContext(newContext("jdbc-trace-delete")) {
for (id ← 1 to 100) {
val delete = s"DELETE FROM Address where Nr = $id"
val deleteStatement = connection.createStatement()
deleteStatement.execute(delete)
}
- TraceContext.currentContext.finish()
+ Tracer.currentContext.finish()
}
val jdbcSnapshot = takeSnapshotOf("jdbc-statements", "jdbc-statements")
@@ -142,14 +142,14 @@ class StatementInstrumentationSpec extends BaseKamonSpec("jdbc-spec") {
}
"record the execution time of SLOW QUERIES based on the kamon.jdbc.slow-query-threshold" in {
- TraceContext.withContext(newContext("jdbc-trace-slow")) {
+ Tracer.withContext(newContext("jdbc-trace-slow")) {
for (id ← 1 to 2) {
val select = s"SELECT * FROM Address; CALL SLEEP(100)"
val selectStatement = connection.createStatement()
selectStatement.execute(select)
}
- TraceContext.currentContext.finish()
+ Tracer.currentContext.finish()
}
val jdbcSnapshot = takeSnapshotOf("jdbc-statements", "jdbc-statements")
@@ -158,7 +158,7 @@ class StatementInstrumentationSpec extends BaseKamonSpec("jdbc-spec") {
}
"count all SQL ERRORS" in {
- TraceContext.withContext(newContext("jdbc-trace-errors")) {
+ Tracer.withContext(newContext("jdbc-trace-errors")) {
for (_ ← 1 to 10) {
intercept[SQLException] {
val error = "SELECT * FROM NO_EXISTENT_TABLE"
@@ -167,7 +167,7 @@ class StatementInstrumentationSpec extends BaseKamonSpec("jdbc-spec") {
}
}
- TraceContext.currentContext.finish()
+ Tracer.currentContext.finish()
}
val jdbcSnapshot = takeSnapshotOf("jdbc-statements", "jdbc-statements")
diff --git a/kamon-newrelic/src/main/scala/kamon/newrelic/NewRelicErrorLogger.scala b/kamon-newrelic/src/main/scala/kamon/newrelic/NewRelicErrorLogger.scala
index 7f56d931..2af94c22 100644
--- a/kamon-newrelic/src/main/scala/kamon/newrelic/NewRelicErrorLogger.scala
+++ b/kamon-newrelic/src/main/scala/kamon/newrelic/NewRelicErrorLogger.scala
@@ -22,7 +22,7 @@ import akka.actor.{ Actor, ActorLogging }
import akka.event.Logging.{ Error, InitializeLogger, LoggerInitialized }
import com.newrelic.api.agent.{ NewRelic ⇒ NR }
import kamon.trace.TraceLocal.HttpContextKey
-import kamon.trace.{ TraceContext, TraceLocal, TraceContextAware }
+import kamon.trace.{ Tracer, TraceLocal, TraceContextAware }
trait CustomParamsSupport {
this: NewRelicErrorLogger ⇒
@@ -64,7 +64,7 @@ class NewRelicErrorLogger extends Actor with ActorLogging with CustomParamsSuppo
//Really ugly, but temporal hack until next release...
def runInFakeTransaction[T](thunk: ⇒ T): T = {
val oldName = Thread.currentThread.getName
- Thread.currentThread.setName(TraceContext.currentContext.name)
+ Thread.currentThread.setName(Tracer.currentContext.name)
try thunk finally Thread.currentThread.setName(oldName)
}
} \ No newline at end of file
diff --git a/kamon-play/src/main/scala/kamon/play/action/KamonTraceActions.scala b/kamon-play/src/main/scala/kamon/play/action/KamonTraceActions.scala
index 715cac5e..854989a4 100644
--- a/kamon-play/src/main/scala/kamon/play/action/KamonTraceActions.scala
+++ b/kamon-play/src/main/scala/kamon/play/action/KamonTraceActions.scala
@@ -16,13 +16,13 @@
package kamon.play.action
-import kamon.trace.TraceContext
+import kamon.trace.Tracer
import play.api.mvc._
import scala.concurrent.Future
case class TraceName[A](name: String)(action: Action[A]) extends Action[A] {
def apply(request: Request[A]): Future[Result] = {
- TraceContext.currentContext.rename(name)
+ Tracer.currentContext.rename(name)
action(request)
}
lazy val parser = action.parser
diff --git a/kamon-play/src/main/scala/kamon/play/instrumentation/RequestInstrumentation.scala b/kamon-play/src/main/scala/kamon/play/instrumentation/RequestInstrumentation.scala
index 0ec49493..9079b391 100644
--- a/kamon-play/src/main/scala/kamon/play/instrumentation/RequestInstrumentation.scala
+++ b/kamon-play/src/main/scala/kamon/play/instrumentation/RequestInstrumentation.scala
@@ -16,7 +16,7 @@
package kamon.play.instrumentation
import kamon.Kamon
-import kamon.play.{ Play, PlayExtension }
+import kamon.play.Play
import kamon.trace.TraceLocal.{ HttpContextKey, HttpContext }
import kamon.trace._
import org.aspectj.lang.ProceedingJoinPoint
@@ -24,7 +24,6 @@ import org.aspectj.lang.annotation._
import play.api.Routes
import play.api.mvc.Results._
import play.api.mvc._
-import play.libs.Akka
@Aspect
class RequestInstrumentation {
@@ -45,7 +44,7 @@ class RequestInstrumentation {
} else None
val newContext = token.map(t ⇒ tracer.newContext(defaultTraceName, t)).getOrElse(tracer.newContext(defaultTraceName))
- TraceContext.setCurrentContext(newContext)
+ Tracer.setCurrentContext(newContext)
}
@Around("call(* play.api.GlobalSettings.doFilter(*)) && args(next)")
@@ -56,7 +55,7 @@ class RequestInstrumentation {
val executor = playExtension.defaultDispatcher
def onResult(result: Result): Result = {
- TraceContext.map { ctx ⇒
+ Tracer.currentContext.collect { ctx ⇒
ctx.finish()
recordHttpServerMetrics(result.header, ctx.name)
@@ -70,7 +69,7 @@ class RequestInstrumentation {
storeDiagnosticData(requestHeader)
//override the current trace name
- normaliseTraceName(requestHeader).map(TraceContext.currentContext.rename)
+ normaliseTraceName(requestHeader).map(Tracer.currentContext.rename)
// Invoke the action
next(requestHeader).map(onResult)(executor)
@@ -80,7 +79,7 @@ class RequestInstrumentation {
@Before("call(* play.api.GlobalSettings.onError(..)) && args(request, ex)")
def beforeOnError(request: TraceContextAware, ex: Throwable): Unit = {
- TraceContext.map { ctx ⇒
+ Tracer.currentContext.collect { ctx ⇒
recordHttpServerMetrics(InternalServerError.header, ctx.name)
}
}
diff --git a/kamon-play/src/main/scala/kamon/play/instrumentation/WSInstrumentation.scala b/kamon-play/src/main/scala/kamon/play/instrumentation/WSInstrumentation.scala
index 8b76ab8b..db95047d 100644
--- a/kamon-play/src/main/scala/kamon/play/instrumentation/WSInstrumentation.scala
+++ b/kamon-play/src/main/scala/kamon/play/instrumentation/WSInstrumentation.scala
@@ -18,7 +18,7 @@ package kamon.play.instrumentation
import kamon.Kamon
import kamon.play.Play
-import kamon.trace.{ TraceContext, SegmentCategory }
+import kamon.trace.{ Tracer, SegmentCategory }
import org.aspectj.lang.ProceedingJoinPoint
import org.aspectj.lang.annotation.{ Around, Aspect, Pointcut }
import play.api.libs.ws.{ WSRequest, WSResponse }
@@ -33,7 +33,7 @@ class WSInstrumentation {
@Around("onExecuteRequest(request)")
def aroundExecuteRequest(pjp: ProceedingJoinPoint, request: WSRequest): Any = {
- TraceContext.map { ctx ⇒
+ Tracer.currentContext.collect { ctx ⇒
val playExtension = Kamon(Play)
val executor = playExtension.defaultDispatcher
val segmentName = playExtension.generateHttpClientSegmentName(request)
diff --git a/kamon-play/src/test/scala/kamon/play/RequestInstrumentationSpec.scala b/kamon-play/src/test/scala/kamon/play/RequestInstrumentationSpec.scala
index e0bbede7..aebcc4d0 100644
--- a/kamon-play/src/test/scala/kamon/play/RequestInstrumentationSpec.scala
+++ b/kamon-play/src/test/scala/kamon/play/RequestInstrumentationSpec.scala
@@ -19,7 +19,7 @@ import kamon.Kamon
import kamon.metric.instrument.CollectionContext
import kamon.play.action.TraceName
import kamon.trace.TraceLocal.HttpContextKey
-import kamon.trace.{ TraceLocal, TraceContext }
+import kamon.trace.{ Tracer, TraceLocal, TraceContext }
import org.scalatestplus.play._
import play.api.DefaultGlobal
import play.api.http.Writeable
@@ -117,7 +117,7 @@ class RequestInstrumentationSpec extends PlaySpec with OneServerPerSuite {
"respond to the Async Action with X-Trace-Token and the renamed trace" in {
val result = Await.result(route(FakeRequest(GET, "/async-renamed").withHeaders(traceTokenHeader)).get, 10 seconds)
- TraceContext.currentContext.name must be("renamed-trace")
+ Tracer.currentContext.name must be("renamed-trace")
Some(result.header.headers(traceTokenHeaderName)) must be(expectedToken)
}
@@ -185,7 +185,7 @@ class RequestInstrumentationSpec extends PlaySpec with OneServerPerSuite {
object TraceLocalFilter extends Filter {
override def apply(next: (RequestHeader) ⇒ Future[Result])(header: RequestHeader): Future[Result] = {
- TraceContext.withContext(TraceContext.currentContext) {
+ Tracer.withContext(Tracer.currentContext) {
TraceLocal.store(TraceLocalKey)(header.headers.get(traceLocalStorageKey).getOrElse("unknown"))
diff --git a/kamon-play/src/test/scala/kamon/play/WSInstrumentationSpec.scala b/kamon-play/src/test/scala/kamon/play/WSInstrumentationSpec.scala
index 577d9bed..d639fd9f 100644
--- a/kamon-play/src/test/scala/kamon/play/WSInstrumentationSpec.scala
+++ b/kamon-play/src/test/scala/kamon/play/WSInstrumentationSpec.scala
@@ -18,7 +18,7 @@ package kamon.play
import kamon.Kamon
import kamon.metric.{ EntitySnapshot, TraceMetrics }
-import kamon.trace.{ TraceContext, SegmentCategory }
+import kamon.trace.{ Tracer, TraceContext, SegmentCategory }
import org.scalatest.{ Matchers, WordSpecLike }
import org.scalatestplus.play.OneServerPerSuite
import play.api.libs.ws.WS
@@ -53,9 +53,9 @@ class WSInstrumentationSpec extends WordSpecLike with Matchers with OneServerPer
}
"propagate the TraceContext outside an Action and complete the WS request" in {
- TraceContext.withContext(newContext("trace-outside-action")) {
+ Tracer.withContext(newContext("trace-outside-action")) {
Await.result(WS.url(s"http://localhost:$port/outside").get(), 10 seconds)
- TraceContext.currentContext.finish()
+ Tracer.currentContext.finish()
}
val snapshot = takeSnapshotOf("trace-outside-action")
diff --git a/kamon-playground/src/main/scala/test/SimpleRequestProcessor.scala b/kamon-playground/src/main/scala/test/SimpleRequestProcessor.scala
index fb68b60d..141c8768 100644
--- a/kamon-playground/src/main/scala/test/SimpleRequestProcessor.scala
+++ b/kamon-playground/src/main/scala/test/SimpleRequestProcessor.scala
@@ -23,7 +23,7 @@ import kamon.Kamon
import kamon.metric.SubscriptionsDispatcher.TickMetricSnapshot
import kamon.metric._
import kamon.spray.KamonTraceDirectives
-import kamon.trace.{ TraceContext, SegmentCategory }
+import kamon.trace.{ Tracer, TraceContext, SegmentCategory }
import spray.http.{ StatusCodes, Uri }
import spray.httpx.RequestBuilding
import spray.routing.SimpleRoutingApp
@@ -116,7 +116,7 @@ object SimpleRequestProcessor extends App with SimpleRoutingApp with RequestBuil
} ~
path("segment") {
complete {
- val segment = TraceContext.currentContext.startSegment("hello-world", SegmentCategory.HttpClient, "none")
+ val segment = Tracer.currentContext.startSegment("hello-world", SegmentCategory.HttpClient, "none")
(replier ? "hello").mapTo[String].onComplete { t ⇒
segment.finish()
}
@@ -162,7 +162,7 @@ object Verifier extends App {
class Replier extends Actor with ActorLogging {
def receive = {
case anything ⇒
- if (TraceContext.currentContext.isEmpty)
+ if (Tracer.currentContext.isEmpty)
log.warning("PROCESSING A MESSAGE WITHOUT CONTEXT")
//log.info("Processing at the Replier, and self is: {}", self)
diff --git a/kamon-scala/src/main/scala/kamon/scala/instrumentation/FutureInstrumentation.scala b/kamon-scala/src/main/scala/kamon/scala/instrumentation/FutureInstrumentation.scala
index 01514869..18ca58be 100644
--- a/kamon-scala/src/main/scala/kamon/scala/instrumentation/FutureInstrumentation.scala
+++ b/kamon-scala/src/main/scala/kamon/scala/instrumentation/FutureInstrumentation.scala
@@ -16,7 +16,7 @@
package kamon.scala.instrumentation
-import kamon.trace.{ TraceContext, TraceContextAware }
+import kamon.trace.{ Tracer, TraceContextAware }
import org.aspectj.lang.ProceedingJoinPoint
import org.aspectj.lang.annotation._
@@ -40,7 +40,7 @@ class FutureInstrumentation {
@Around("futureRelatedRunnableExecution(runnable)")
def aroundExecution(pjp: ProceedingJoinPoint, runnable: TraceContextAware): Any = {
- TraceContext.withContext(runnable.traceContext) {
+ Tracer.withContext(runnable.traceContext) {
pjp.proceed()
}
}
diff --git a/kamon-scala/src/main/scala/kamon/scalaz/instrumentation/FutureInstrumentation.scala b/kamon-scala/src/main/scala/kamon/scalaz/instrumentation/FutureInstrumentation.scala
index b5aadbd3..862d7fdd 100644
--- a/kamon-scala/src/main/scala/kamon/scalaz/instrumentation/FutureInstrumentation.scala
+++ b/kamon-scala/src/main/scala/kamon/scalaz/instrumentation/FutureInstrumentation.scala
@@ -16,7 +16,7 @@
package kamon.scalaz.instrumentation
-import kamon.trace.{ TraceContext, TraceContextAware }
+import kamon.trace.{ Tracer, TraceContextAware }
import org.aspectj.lang.ProceedingJoinPoint
import org.aspectj.lang.annotation._
@@ -40,7 +40,7 @@ class FutureInstrumentation {
@Around("futureRelatedCallableExecution(callable)")
def aroundExecution(pjp: ProceedingJoinPoint, callable: TraceContextAware): Any =
- TraceContext.withContext(callable.traceContext) {
+ Tracer.withContext(callable.traceContext) {
pjp.proceed()
}
diff --git a/kamon-scala/src/test/scala/kamon/scala/instrumentation/FutureInstrumentationSpec.scala b/kamon-scala/src/test/scala/kamon/scala/instrumentation/FutureInstrumentationSpec.scala
index d70e88ae..dd16e83f 100644
--- a/kamon-scala/src/test/scala/kamon/scala/instrumentation/FutureInstrumentationSpec.scala
+++ b/kamon-scala/src/test/scala/kamon/scala/instrumentation/FutureInstrumentationSpec.scala
@@ -16,7 +16,7 @@
package kamon.scala.instrumentation
import kamon.testkit.BaseKamonSpec
-import kamon.trace.TraceContext
+import kamon.trace.Tracer
import org.scalatest.OptionValues
import org.scalatest.concurrent.{ PatienceConfiguration, ScalaFutures }
@@ -31,10 +31,10 @@ class FutureInstrumentationSpec extends BaseKamonSpec("future-instrumentation-sp
"capture the TraceContext available when created" which {
"must be available when executing the future's body" in {
- val (future, testTraceContext) = TraceContext.withContext(newContext("future-body")) {
- val future = Future(TraceContext.currentContext)
+ val (future, testTraceContext) = Tracer.withContext(newContext("future-body")) {
+ val future = Future(Tracer.currentContext)
- (future, TraceContext.currentContext)
+ (future, Tracer.currentContext)
}
whenReady(future)(ctxInFuture ⇒
@@ -43,14 +43,14 @@ class FutureInstrumentationSpec extends BaseKamonSpec("future-instrumentation-sp
"must be available when executing callbacks on the future" in {
- val (future, testTraceContext) = TraceContext.withContext(newContext("future-body")) {
+ val (future, testTraceContext) = Tracer.withContext(newContext("future-body")) {
val future = Future("Hello Kamon!")
// The TraceContext is expected to be available during all intermediate processing.
.map(_.length)
.flatMap(len ⇒ Future(len.toString))
- .map(s ⇒ TraceContext.currentContext)
+ .map(s ⇒ Tracer.currentContext)
- (future, TraceContext.currentContext)
+ (future, Tracer.currentContext)
}
whenReady(future)(ctxInFuture ⇒
diff --git a/kamon-scala/src/test/scala/kamon/scalaz/instrumentation/FutureInstrumentationSpec.scala b/kamon-scala/src/test/scala/kamon/scalaz/instrumentation/FutureInstrumentationSpec.scala
index ba8fa18c..c533fd62 100644
--- a/kamon-scala/src/test/scala/kamon/scalaz/instrumentation/FutureInstrumentationSpec.scala
+++ b/kamon-scala/src/test/scala/kamon/scalaz/instrumentation/FutureInstrumentationSpec.scala
@@ -18,7 +18,7 @@ package kamon.scalaz.instrumentation
import java.util.concurrent.Executors
import kamon.testkit.BaseKamonSpec
-import kamon.trace.TraceContext
+import kamon.trace.Tracer
import org.scalatest.OptionValues
import org.scalatest.concurrent.{ PatienceConfiguration, ScalaFutures }
@@ -33,10 +33,10 @@ class FutureInstrumentationSpec extends BaseKamonSpec("future-instrumentation-sp
"capture the TraceContext available when created" which {
"must be available when executing the future's body" in {
- val (future, testTraceContext) = TraceContext.withContext(newContext("future-body")) {
- val future = Future(TraceContext.currentContext).start
+ val (future, testTraceContext) = Tracer.withContext(newContext("future-body")) {
+ val future = Future(Tracer.currentContext).start
- (future, TraceContext.currentContext)
+ (future, Tracer.currentContext)
}
val ctxInFuture = future.run
@@ -45,14 +45,14 @@ class FutureInstrumentationSpec extends BaseKamonSpec("future-instrumentation-sp
"must be available when executing callbacks on the future" in {
- val (future, testTraceContext) = TraceContext.withContext(newContext("future-body")) {
+ val (future, testTraceContext) = Tracer.withContext(newContext("future-body")) {
val future = Future("Hello Kamon!")
// The TraceContext is expected to be available during all intermediate processing.
.map(_.length)
.flatMap(len ⇒ Future(len.toString))
- .map(s ⇒ TraceContext.currentContext)
+ .map(s ⇒ Tracer.currentContext)
- (future.start, TraceContext.currentContext)
+ (future.start, Tracer.currentContext)
}
val ctxInFuture = future.run
diff --git a/kamon-spray/src/main/scala/kamon/spray/KamonTraceDirectives.scala b/kamon-spray/src/main/scala/kamon/spray/KamonTraceDirectives.scala
index 4eefee95..85f93ca8 100644
--- a/kamon-spray/src/main/scala/kamon/spray/KamonTraceDirectives.scala
+++ b/kamon-spray/src/main/scala/kamon/spray/KamonTraceDirectives.scala
@@ -17,11 +17,11 @@ package kamon.spray
import spray.routing.directives.BasicDirectives
import spray.routing._
-import kamon.trace.TraceContext
+import kamon.trace.Tracer
trait KamonTraceDirectives extends BasicDirectives {
def traceName(name: String): Directive0 = mapRequest { req ⇒
- TraceContext.currentContext.rename(name)
+ Tracer.currentContext.rename(name)
req
}
}
diff --git a/kamon-spray/src/main/scala/kamon/spray/instrumentation/ClientRequestInstrumentation.scala b/kamon-spray/src/main/scala/kamon/spray/instrumentation/ClientRequestInstrumentation.scala
index d1e9036d..22d6e354 100644
--- a/kamon-spray/src/main/scala/kamon/spray/instrumentation/ClientRequestInstrumentation.scala
+++ b/kamon-spray/src/main/scala/kamon/spray/instrumentation/ClientRequestInstrumentation.scala
@@ -47,7 +47,7 @@ class ClientRequestInstrumentation {
// This read to requestContext.traceContext takes care of initializing the aspect timely.
requestContext.traceContext
- TraceContext.map { ctx ⇒
+ Tracer.currentContext.collect { ctx ⇒
val sprayExtension = Kamon.extension(Spray)
if (sprayExtension.settings.clientInstrumentationLevel == ClientInstrumentationLevel.HostLevelAPI) {
@@ -74,7 +74,7 @@ class ClientRequestInstrumentation {
@Around("copyingRequestContext(old)")
def aroundCopyingRequestContext(pjp: ProceedingJoinPoint, old: TraceContextAware): Any = {
- TraceContext.withContext(old.traceContext) {
+ Tracer.withContext(old.traceContext) {
pjp.proceed()
}
}
@@ -85,7 +85,7 @@ class ClientRequestInstrumentation {
@Around("dispatchToCommander(requestContext, message)")
def aroundDispatchToCommander(pjp: ProceedingJoinPoint, requestContext: TraceContextAware, message: Any): Any = {
if (requestContext.traceContext.nonEmpty) {
- TraceContext.withContext(requestContext.traceContext) {
+ Tracer.withContext(requestContext.traceContext) {
if (message.isInstanceOf[HttpMessageEnd])
requestContext.asInstanceOf[SegmentAware].segment.finish()
@@ -112,7 +112,7 @@ class ClientRequestInstrumentation {
val originalSendReceive = pjp.proceed().asInstanceOf[HttpRequest ⇒ Future[HttpResponse]]
(request: HttpRequest) ⇒ {
- TraceContext.map { ctx ⇒
+ Tracer.currentContext.collect { ctx ⇒
val sprayExtension = Kamon.extension(Spray)
val segment =
if (sprayExtension.settings.clientInstrumentationLevel == ClientInstrumentationLevel.RequestLevelAPI)
@@ -139,7 +139,7 @@ class ClientRequestInstrumentation {
@Around("includingDefaultHeadersAtHttpHostConnector(request, defaultHeaders)")
def aroundIncludingDefaultHeadersAtHttpHostConnector(pjp: ProceedingJoinPoint, request: HttpMessage, defaultHeaders: List[HttpHeader]): Any = {
- val modifiedHeaders = TraceContext.map { ctx ⇒
+ val modifiedHeaders = Tracer.currentContext.collect { ctx ⇒
val sprayExtension = Kamon.extension(Spray)
if (sprayExtension.settings.includeTraceTokenHeader)
RawHeader(sprayExtension.settings.traceTokenHeaderName, ctx.token) :: defaultHeaders
diff --git a/kamon-spray/src/main/scala/kamon/spray/instrumentation/ServerRequestInstrumentation.scala b/kamon-spray/src/main/scala/kamon/spray/instrumentation/ServerRequestInstrumentation.scala
index bf20d167..5be156cd 100644
--- a/kamon-spray/src/main/scala/kamon/spray/instrumentation/ServerRequestInstrumentation.scala
+++ b/kamon-spray/src/main/scala/kamon/spray/instrumentation/ServerRequestInstrumentation.scala
@@ -18,7 +18,6 @@ package spray.can.server.instrumentation
import kamon.trace.TraceLocal.{ HttpContext, HttpContextKey }
import org.aspectj.lang.annotation._
import kamon.trace._
-import akka.actor.ActorSystem
import spray.can.server.OpenRequest
import spray.http.{ HttpResponse, HttpMessagePartWrapper, HttpRequest }
import kamon.Kamon
@@ -48,7 +47,7 @@ class ServerRequestInstrumentation {
} else None
val newContext = token.map(customToken ⇒ tracer.newContext(defaultTraceName, customToken)) getOrElse (tracer.newContext(defaultTraceName))
- TraceContext.setCurrentContext(newContext)
+ Tracer.setCurrentContext(newContext)
// Necessary to force initialization of traceContext when initiating the request.
openRequest.traceContext
@@ -59,7 +58,7 @@ class ServerRequestInstrumentation {
@After("openNewRequest()")
def afterOpenNewRequest(): Unit = {
- TraceContext.clearCurrentContext
+ Tracer.clearCurrentContext
}
@Pointcut("execution(* spray.can.server.OpenRequestComponent$DefaultOpenRequest.handleResponseEndAndReturnNextOpenRequest(..)) && target(openRequest) && args(response)")
@@ -67,7 +66,7 @@ class ServerRequestInstrumentation {
@Around("openRequestCreation(openRequest, response)")
def afterFinishingRequest(pjp: ProceedingJoinPoint, openRequest: TraceContextAware, response: HttpMessagePartWrapper): Any = {
- val incomingContext = TraceContext.currentContext
+ val incomingContext = Tracer.currentContext
val storedContext = openRequest.traceContext
// The stored context is always a DefaultTraceContext if the instrumentation is running
@@ -84,7 +83,7 @@ class ServerRequestInstrumentation {
} else pjp.proceed
- TraceContext.currentContext.finish()
+ Tracer.currentContext.finish()
recordHttpServerMetrics(response, incomingContext.name, sprayExtension)
diff --git a/kamon-spray/src/test/scala/kamon/spray/ClientRequestInstrumentationSpec.scala b/kamon-spray/src/test/scala/kamon/spray/ClientRequestInstrumentationSpec.scala
index a99bbdcc..67e6725f 100644
--- a/kamon-spray/src/test/scala/kamon/spray/ClientRequestInstrumentationSpec.scala
+++ b/kamon-spray/src/test/scala/kamon/spray/ClientRequestInstrumentationSpec.scala
@@ -22,7 +22,7 @@ import org.scalatest.concurrent.ScalaFutures
import org.scalatest.time.{ Millis, Seconds, Span }
import spray.httpx.RequestBuilding
import spray.http.{ HttpResponse, HttpRequest }
-import kamon.trace.{ TraceContext, SegmentCategory }
+import kamon.trace.{ Tracer, SegmentCategory }
import com.typesafe.config.ConfigFactory
import spray.can.Http
import spray.http.HttpHeaders.RawHeader
@@ -57,12 +57,12 @@ class ClientRequestInstrumentationSpec extends BaseKamonSpec("client-request-ins
val (_, server, bound) = buildSHostConnectorAndServer
// Initiate a request within the context of a trace
- val (testContext, responseFuture) = TraceContext.withContext(newContext("include-trace-token-header-at-request-level-api")) {
+ val (testContext, responseFuture) = Tracer.withContext(newContext("include-trace-token-header-at-request-level-api")) {
val rF = sendReceive(system, ec) {
Get(s"http://${bound.localAddress.getHostName}:${bound.localAddress.getPort}/dummy-path")
}
- (TraceContext.currentContext, rF)
+ (Tracer.currentContext, rF)
}
// Accept the connection at the server side
@@ -84,12 +84,12 @@ class ClientRequestInstrumentationSpec extends BaseKamonSpec("client-request-ins
val (_, server, bound) = buildSHostConnectorAndServer
// Initiate a request within the context of a trace
- val (testContext, responseFuture) = TraceContext.withContext(newContext("do-not-include-trace-token-header-at-request-level-api")) {
+ val (testContext, responseFuture) = Tracer.withContext(newContext("do-not-include-trace-token-header-at-request-level-api")) {
val rF = sendReceive(system, ec) {
Get(s"http://${bound.localAddress.getHostName}:${bound.localAddress.getPort}/dummy-path")
}
- (TraceContext.currentContext, rF)
+ (Tracer.currentContext, rF)
}
// Accept the connection at the server side
@@ -114,12 +114,12 @@ class ClientRequestInstrumentationSpec extends BaseKamonSpec("client-request-ins
val (_, _, bound) = buildSHostConnectorAndServer
// Initiate a request within the context of a trace
- val (testContext, responseFuture) = TraceContext.withContext(newContext("assign-name-to-segment-with-request-level-api")) {
+ val (testContext, responseFuture) = Tracer.withContext(newContext("assign-name-to-segment-with-request-level-api")) {
val rF = sendReceive(transport.ref)(ec, 10.seconds) {
Get(s"http://${bound.localAddress.getHostName}:${bound.localAddress.getPort}/request-level-api-segment")
}
- (TraceContext.currentContext, rF)
+ (Tracer.currentContext, rF)
}
// Receive the request and reply back
@@ -141,12 +141,12 @@ class ClientRequestInstrumentationSpec extends BaseKamonSpec("client-request-ins
val (_, server, bound) = buildSHostConnectorAndServer
// Initiate a request within the context of a trace
- val (testContext, responseFuture) = TraceContext.withContext(newContext("rename-segment-with-request-level-api")) {
+ val (testContext, responseFuture) = Tracer.withContext(newContext("rename-segment-with-request-level-api")) {
val rF = sendReceive(system, ec) {
Get(s"http://${bound.localAddress.getHostName}:${bound.localAddress.getPort}/request-level-api-segment")
}
- (TraceContext.currentContext, rF)
+ (Tracer.currentContext, rF)
}
// Accept the connection at the server side
@@ -175,9 +175,9 @@ class ClientRequestInstrumentationSpec extends BaseKamonSpec("client-request-ins
val client = TestProbe()
// Initiate a request within the context of a trace
- val testContext = TraceContext.withContext(newContext("include-trace-token-header-on-http-client-request")) {
+ val testContext = Tracer.withContext(newContext("include-trace-token-header-on-http-client-request")) {
client.send(hostConnector, Get("/dummy-path"))
- TraceContext.currentContext
+ Tracer.currentContext
}
// Accept the connection at the server side
@@ -202,9 +202,9 @@ class ClientRequestInstrumentationSpec extends BaseKamonSpec("client-request-ins
val client = TestProbe()
// Initiate a request within the context of a trace
- val testContext = TraceContext.withContext(newContext("not-include-trace-token-header-on-http-client-request")) {
+ val testContext = Tracer.withContext(newContext("not-include-trace-token-header-on-http-client-request")) {
client.send(hostConnector, Get("/dummy-path"))
- TraceContext.currentContext
+ Tracer.currentContext
}
// Accept the connection at the server side
@@ -229,9 +229,9 @@ class ClientRequestInstrumentationSpec extends BaseKamonSpec("client-request-ins
val client = TestProbe()
// Initiate a request within the context of a trace
- val testContext = TraceContext.withContext(newContext("create-segment-with-host-level-api")) {
+ val testContext = Tracer.withContext(newContext("create-segment-with-host-level-api")) {
client.send(hostConnector, Get("/host-level-api-segment"))
- TraceContext.currentContext
+ Tracer.currentContext
}
// Accept the connection at the server side
diff --git a/kamon-testkit/src/main/scala/testkit/TestProbeInstrumentation.scala b/kamon-testkit/src/main/scala/testkit/TestProbeInstrumentation.scala
index 9e736971..2850482b 100644
--- a/kamon-testkit/src/main/scala/testkit/TestProbeInstrumentation.scala
+++ b/kamon-testkit/src/main/scala/testkit/TestProbeInstrumentation.scala
@@ -17,7 +17,7 @@
package akka.testkit
import org.aspectj.lang.annotation._
-import kamon.trace.{ EmptyTraceContext, TraceContextAware, TraceContext }
+import kamon.trace.{ Tracer, EmptyTraceContext, TraceContextAware }
import org.aspectj.lang.ProceedingJoinPoint
import akka.testkit.TestActor.RealMessage
@@ -46,7 +46,7 @@ class TestProbeInstrumentation {
case _ ⇒ EmptyTraceContext
}
- TraceContext.withContext(traceContext) {
+ Tracer.withContext(traceContext) {
pjp.proceed
}
}