diff options
3 files changed, 20 insertions, 24 deletions
diff --git a/kamon-spray/src/main/scala/spray/can/server/ServerRequestTracing.scala b/kamon-spray/src/main/scala/spray/can/server/ServerRequestTracing.scala index 8055cf6b..cd7cae93 100644 --- a/kamon-spray/src/main/scala/spray/can/server/ServerRequestTracing.scala +++ b/kamon-spray/src/main/scala/spray/can/server/ServerRequestTracing.scala @@ -1,7 +1,7 @@ package spray.can.server import org.aspectj.lang.annotation.{After, Pointcut, DeclareMixin, Aspect} -import kamon.trace.{Trace, TraceContext, ContextAware} +import kamon.trace.{Trace, ContextAware} import spray.http.HttpRequest import akka.actor.ActorSystem import akka.event.Logging.Warning diff --git a/kamon-spray/src/test/scala/kamon/ServerRequestTracingSpec.scala b/kamon-spray/src/test/scala/kamon/ServerRequestTracingSpec.scala index d789042e..648c2f3d 100644 --- a/kamon-spray/src/test/scala/kamon/ServerRequestTracingSpec.scala +++ b/kamon-spray/src/test/scala/kamon/ServerRequestTracingSpec.scala @@ -33,7 +33,8 @@ class ServerRequestTracingSpec extends TestKit(ActorSystem("server-request-traci } within(5 seconds) { - val traceId = expectMsgPF() { case Start(id, _) => id} + val traceId = expectMsgPF() { case Start(id, _) => id } + println("Expecting for trace: " + traceId) expectMsgPF() { case Finish(traceId) => } } } @@ -65,12 +66,13 @@ trait TestServer extends SimpleRoutingApp { path("ok") { complete("ok") } ~ - path("clearcontext"){ - complete { - Trace.clear - "ok" - } + path("clearcontext"){ + complete { + println("The Context in the route is: " + Trace.context) + Trace.clear + "ok" } + } } ), timeout.duration).localAddress.getPort diff --git a/kamon-trace/src/main/scala/kamon/trace/instrumentation/FutureTracing.scala b/kamon-trace/src/main/scala/kamon/trace/instrumentation/FutureTracing.scala index fe32a04c..fe6c4537 100644 --- a/kamon-trace/src/main/scala/kamon/trace/instrumentation/FutureTracing.scala +++ b/kamon-trace/src/main/scala/kamon/trace/instrumentation/FutureTracing.scala @@ -7,33 +7,27 @@ import kamon.trace.{ContextAware, TraceContext, Trace} @Aspect class FutureTracing { - /** - * These are the Runnables that need to be instrumented and make the TraceContext available - * while their run method is executed. - */ @DeclareMixin("scala.concurrent.impl.CallbackRunnable || scala.concurrent.impl.Future.PromiseCompletingRunnable") - def onCompleteCallbacksRunnable: ContextAware = ContextAware.default + def mixin: ContextAware = ContextAware.default - @Pointcut("execution(kamon.trace.ContextAware+.new(..)) && this(runnable)") - def instrumentedRunnableCreation(runnable: ContextAware): Unit = {} + @Pointcut("execution((scala.concurrent.impl.CallbackRunnable || scala.concurrent.impl.Future.PromiseCompletingRunnable).new(..)) && this(runnable)") + def futureRelatedRunnableCreation(runnable: ContextAware): Unit = {} - @Pointcut("execution(* kamon.trace.ContextAware+.run()) && this(runnable)") - def futureRunnableExecution(runnable: ContextAware) = {} - - - @After("instrumentedRunnableCreation(runnable)") - def beforeCreation(runnable: ContextAware): Unit = { + @After("futureRelatedRunnableCreation(runnable)") + def afterCreation(runnable: ContextAware): Unit = { // Force traceContext initialization. runnable.traceContext } - @Around("futureRunnableExecution(runnable)") - def around(pjp: ProceedingJoinPoint, runnable: ContextAware): Any = { - import pjp._ + @Pointcut("execution(* (scala.concurrent.impl.CallbackRunnable || scala.concurrent.impl.Future.PromiseCompletingRunnable).run()) && this(runnable)") + def futureRelatedRunnableExecution(runnable: ContextAware) = {} + + @Around("futureRelatedRunnableExecution(runnable)") + def aroundExecution(pjp: ProceedingJoinPoint, runnable: ContextAware): Any = { Trace.withContext(runnable.traceContext) { - proceed() + pjp.proceed() } } |