From 2a51ba02383eaf31037935b466468fc2da8319b7 Mon Sep 17 00:00:00 2001 From: Ivan Topolnjak Date: Wed, 29 Jul 2015 19:19:41 +0200 Subject: = akka: correctly set LookupData for routers used by BalancingPool, fixes #199. --- .../akka/instrumentation/DispatcherInstrumentation.scala | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'kamon-akka/src/main/scala/kamon/akka/instrumentation') diff --git a/kamon-akka/src/main/scala/kamon/akka/instrumentation/DispatcherInstrumentation.scala b/kamon-akka/src/main/scala/kamon/akka/instrumentation/DispatcherInstrumentation.scala index 0b963c16..e90838ad 100644 --- a/kamon-akka/src/main/scala/kamon/akka/instrumentation/DispatcherInstrumentation.scala +++ b/kamon-akka/src/main/scala/kamon/akka/instrumentation/DispatcherInstrumentation.scala @@ -18,7 +18,7 @@ package akka.kamon.instrumentation import java.util.concurrent.{ ExecutorService, ThreadPoolExecutor } -import akka.actor.{ ActorSystem, ActorSystemImpl } +import akka.actor.{ ActorContext, Props, ActorSystem, ActorSystemImpl } import akka.dispatch.ForkJoinExecutorConfigurator.AkkaForkJoinPool import akka.dispatch._ import akka.kamon.instrumentation.LookupDataAware.LookupData @@ -139,6 +139,18 @@ class DispatcherInstrumentation { } } + @Pointcut("execution(* akka.routing.BalancingPool.newRoutee(..)) && args(props, context)") + def createNewRouteeOnBalancingPool(props: Props, context: ActorContext): Unit = {} + + @Around("createNewRouteeOnBalancingPool(props, context)") + def aroundCreateNewRouteeOnBalancingPool(pjp: ProceedingJoinPoint, props: Props, context: ActorContext): Any = { + val deployPath = context.self.path.elements.drop(1).mkString("/", "/", "") + val dispatcherId = s"BalancingPool-$deployPath" + + LookupDataAware.withLookupData(LookupData(dispatcherId, context.system)) { + pjp.proceed() + } + } } @Aspect -- cgit v1.2.3