From e7a33a53b2eb3c25fea0cb6da2b54b84c94761bd Mon Sep 17 00:00:00 2001 From: Ivan Topolnak Date: Tue, 13 Aug 2013 18:50:19 -0300 Subject: wip --- kamon-core/src/main/resources/META-INF/aop.xml | 1 + kamon-core/src/main/resources/application.conf | 1 - .../ActorRefTellInstrumentation.scala | 24 +++++++++++----------- 3 files changed, 13 insertions(+), 13 deletions(-) (limited to 'kamon-core/src/main') diff --git a/kamon-core/src/main/resources/META-INF/aop.xml b/kamon-core/src/main/resources/META-INF/aop.xml index e6d61fa1..0f1895ec 100644 --- a/kamon-core/src/main/resources/META-INF/aop.xml +++ b/kamon-core/src/main/resources/META-INF/aop.xml @@ -9,6 +9,7 @@ + diff --git a/kamon-core/src/main/resources/application.conf b/kamon-core/src/main/resources/application.conf index 06bdf13a..1378e75e 100644 --- a/kamon-core/src/main/resources/application.conf +++ b/kamon-core/src/main/resources/application.conf @@ -1,7 +1,6 @@ akka { loglevel = DEBUG stdout-loglevel = DEBUG - log-dead-letters = on actor { default-dispatcher { fork-join-executor { diff --git a/kamon-core/src/main/scala/kamon/instrumentation/ActorRefTellInstrumentation.scala b/kamon-core/src/main/scala/kamon/instrumentation/ActorRefTellInstrumentation.scala index f3e1828d..36dd9d0b 100644 --- a/kamon-core/src/main/scala/kamon/instrumentation/ActorRefTellInstrumentation.scala +++ b/kamon-core/src/main/scala/kamon/instrumentation/ActorRefTellInstrumentation.scala @@ -17,7 +17,7 @@ case class TraceableMessage(traceContext: Option[TraceContext], message: Any, ti class ActorRefTellInstrumentation { import ProceedingJoinPointPimp._ - @Pointcut("execution(* akka.actor.ScalaActorRef+.$bang(..)) && !within(akka.event.Logging.StandardOutLogger) && !within(akka.pattern.PromiseActorRef) && target(actor) && args(message, sender)") + @Pointcut("execution(* akka.actor.ScalaActorRef+.$bang(..)) && !within(akka.event.Logging.StandardOutLogger) && !within(akka.pattern.PromiseActorRef) && !within(akka.actor.DeadLetterActorRef) && target(actor) && args(message, sender)") def sendingMessageToActorRef(actor: ActorRef, message: Any, sender: ActorRef) = {} @Around("sendingMessageToActorRef(actor, message, sender)") @@ -25,6 +25,7 @@ class ActorRefTellInstrumentation { val actorName = MetricDirectory.nameForActor(actor) val t = Metrics.registry.timer(actorName + "LATENCY") + //println(s"Wrapped message from [$sender] to [$actor] with content: [$message]") pjp.proceedWithTarget(actor, TraceableMessage(Tracer.context, message, t.time()), sender) } @@ -86,31 +87,30 @@ class ActorCellInvokeInstrumentation { case _ => pjp.proceed } } +} - @Pointcut("execution(* spray.can.server.ResponseReceiverRef.handle(*)) && args(message)") - def sprayResponderHandle(message: AnyRef) = {} +@Aspect +class UnregisteredActorRefInstrumentation { + @Pointcut("execution(* akka.spray.UnregisteredActorRefBase+.handle(..)) && args(message, sender)") + def sprayResponderHandle(message: Any, sender: ActorRef) = {} - @Around("sprayResponderHandle(message)") - def sprayInvokeAround(pjp: ProceedingJoinPoint, message: AnyRef): Unit = { + @Around("sprayResponderHandle(message, sender)") + def sprayInvokeAround(pjp: ProceedingJoinPoint, message: Any, sender: ActorRef): Unit = { import ProceedingJoinPointPimp._ + println("Handling unregistered actor ref message: "+message) message match { case TraceableMessage(ctx, msg, timer) => { timer.stop() - val originalEnvelope: AnyRef = msg.asInstanceOf[AnyRef] - - //println("PROCESSING TIME TIMER: "+processingTimeTimer) - val pt = processingTimeTimer.time() ctx match { case Some(c) => { Tracer.set(c) - pjp.proceedWith(originalEnvelope) + pjp.proceedWith(msg.asInstanceOf[AnyRef]) // TODO: define if we should use Any or AnyRef and unify with the rest of the instrumentation. Tracer.clear } - case None => pjp.proceedWith(originalEnvelope) + case None => pjp.proceedWith(msg.asInstanceOf[AnyRef]) } - pt.stop() } case _ => pjp.proceed } -- cgit v1.2.3