aboutsummaryrefslogtreecommitdiff
path: root/kamon-trace/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'kamon-trace/src/main')
-rw-r--r--kamon-trace/src/main/resources/META-INF/aop.xml13
-rw-r--r--kamon-trace/src/main/scala/kamon/trace/Trace.scala2
-rw-r--r--kamon-trace/src/main/scala/kamon/trace/instrumentation/FutureTracing.scala (renamed from kamon-trace/src/main/scala/kamon/trace/instrumentation/RunnableTracing.scala)14
3 files changed, 19 insertions, 10 deletions
diff --git a/kamon-trace/src/main/resources/META-INF/aop.xml b/kamon-trace/src/main/resources/META-INF/aop.xml
new file mode 100644
index 00000000..fdc1c496
--- /dev/null
+++ b/kamon-trace/src/main/resources/META-INF/aop.xml
@@ -0,0 +1,13 @@
+<!DOCTYPE aspectj PUBLIC "-//AspectJ//DTD//EN" "http://www.eclipse.org/aspectj/dtd/aspectj.dtd">
+
+<aspectj>
+ <aspects>
+ <aspect name="kamon.trace.instrumentation.FutureTracing" />
+
+ <include within="scala.concurrent..*"/>
+ <include within="akka..*"/>
+ <include within="spray..*"/>
+ <include within="kamon..*"/>
+ </aspects>
+
+</aspectj>
diff --git a/kamon-trace/src/main/scala/kamon/trace/Trace.scala b/kamon-trace/src/main/scala/kamon/trace/Trace.scala
index 0ef438d4..fbd4ea8b 100644
--- a/kamon-trace/src/main/scala/kamon/trace/Trace.scala
+++ b/kamon-trace/src/main/scala/kamon/trace/Trace.scala
@@ -35,6 +35,8 @@ object Trace extends ExtensionId[TraceExtension] with ExtensionIdProvider {
ctx
}
+ def withValue[T](ctx: Option[TraceContext])(thunk: => T): T = traceContext.withValue(ctx)(thunk)
+
def transformContext(f: TraceContext => TraceContext): Unit = {
context.map(f).foreach(set(_))
}
diff --git a/kamon-trace/src/main/scala/kamon/trace/instrumentation/RunnableTracing.scala b/kamon-trace/src/main/scala/kamon/trace/instrumentation/FutureTracing.scala
index 5c16a648..10daa2da 100644
--- a/kamon-trace/src/main/scala/kamon/trace/instrumentation/RunnableTracing.scala
+++ b/kamon-trace/src/main/scala/kamon/trace/instrumentation/FutureTracing.scala
@@ -5,7 +5,7 @@ import org.aspectj.lang.ProceedingJoinPoint
import kamon.trace.{ContextAware, TraceContext, Trace}
@Aspect
-class RunnableTracing {
+class FutureTracing {
/**
* These are the Runnables that need to be instrumented and make the TraceContext available
@@ -15,16 +15,11 @@ class RunnableTracing {
def onCompleteCallbacksRunnable: ContextAware = ContextAware.default
- /**
- * Pointcuts
- */
-
@Pointcut("execution(kamon.trace.ContextAware+.new(..)) && this(runnable)")
def instrumentedRunnableCreation(runnable: ContextAware): Unit = {}
@Pointcut("execution(* kamon.trace.ContextAware+.run()) && this(runnable)")
- def runnableExecution(runnable: ContextAware) = {}
-
+ def futureRunnableExecution(runnable: ContextAware) = {}
@After("instrumentedRunnableCreation(runnable)")
@@ -33,12 +28,11 @@ class RunnableTracing {
runnable.traceContext
}
-
- @Around("runnableExecution(runnable)")
+ @Around("futureRunnableExecution(runnable)")
def around(pjp: ProceedingJoinPoint, runnable: ContextAware): Any = {
import pjp._
- Trace.traceContext.withValue(runnable.traceContext) {
+ Trace.withValue(runnable.traceContext) {
proceed()
}
}