aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--kamon-spray/src/main/scala/spray/can/server/ServerRequestTracing.scala2
-rw-r--r--kamon-spray/src/test/scala/kamon/ServerRequestTracingSpec.scala14
-rw-r--r--kamon-trace/src/main/scala/kamon/trace/instrumentation/FutureTracing.scala28
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()
}
}