diff options
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 } } |