blob: 5ae26d751a50a3381113396f20cacb986b52faa5 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
package kamon.instrumentation;
import kamon.TraceContext;
import scala.concurrent.impl.Future;
import scala.Option;
privileged public aspect PromiseCompletingRunnableInstrumentation {
declare parents : Future.PromiseCompletingRunnable extends TraceContextHolder;
pointcut run(scala.concurrent.impl.Future.PromiseCompletingRunnable runnable)
: execution(* scala.concurrent.impl.Future.PromiseCompletingRunnable.run()) && this(runnable);
void around(Object runnable)
: run(runnable) {
TraceContextHolder contextHolder = (TraceContextHolder) runnable;
if(contextHolder.context().isDefined()) {
TraceContext.set(contextHolder.context().get());
proceed(contextHolder);
TraceContext.clear();
} else {
proceed(contextHolder);
}
}
}
|