aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Topolnjak <ivantopo@gmail.com>2016-03-28 23:22:44 +0200
committerIvan Topolnjak <ivantopo@gmail.com>2016-03-28 23:22:44 +0200
commitdd20885c4a72ada4595db855d617c91db81adbf0 (patch)
tree2ccdb6598bcfbbdcc3e48f51563ea1b0bcacc3a5
parent71e777ebec4f244f5233788fd8af2e062cf14f24 (diff)
downloadKamon-dd20885c4a72ada4595db855d617c91db81adbf0.tar.gz
Kamon-dd20885c4a72ada4595db855d617c91db81adbf0.tar.bz2
Kamon-dd20885c4a72ada4595db855d617c91db81adbf0.zip
correctly differentiate between actors and routers, fixes #271
-rw-r--r--kamon-akka/src/main/scala/kamon/akka/instrumentation/ActorMonitor.scala10
-rw-r--r--kamon-akka/src/main/scala/kamon/akka/instrumentation/CellInfo.scala5
2 files changed, 5 insertions, 10 deletions
diff --git a/kamon-akka/src/main/scala/kamon/akka/instrumentation/ActorMonitor.scala b/kamon-akka/src/main/scala/kamon/akka/instrumentation/ActorMonitor.scala
index 6bbefc6f..191b4677 100644
--- a/kamon-akka/src/main/scala/kamon/akka/instrumentation/ActorMonitor.scala
+++ b/kamon-akka/src/main/scala/kamon/akka/instrumentation/ActorMonitor.scala
@@ -5,7 +5,7 @@ import akka.kamon.instrumentation.ActorMonitors.{ TrackedRoutee, TrackedActor }
import kamon.Kamon
import kamon.akka.{ RouterMetrics, ActorMetrics }
import kamon.metric.Entity
-import kamon.trace.{ TraceContext, EmptyTraceContext, Tracer }
+import kamon.trace.{ EmptyTraceContext, Tracer }
import kamon.util.RelativeNanoTimestamp
import org.aspectj.lang.ProceedingJoinPoint
@@ -22,7 +22,7 @@ object ActorMonitor {
val cellInfo = CellInfo.cellInfoFor(cell, system, ref, parent)
if (cellInfo.isRouter)
- ActorMonitors.NoOp
+ ActorMonitors.ContextPropagationOnly
else {
if (cellInfo.isRoutee)
createRouteeMonitor(cellInfo)
@@ -49,12 +49,6 @@ object ActorMonitor {
}
object ActorMonitors {
- val NoOp = new ActorMonitor {
- override def captureEnvelopeContext(): EnvelopeContext = EnvelopeContext(RelativeNanoTimestamp.zero, EmptyTraceContext)
- override def processMessage(pjp: ProceedingJoinPoint, envelopeContext: EnvelopeContext): AnyRef = pjp.proceed()
- override def processFailure(failure: Throwable): Unit = {}
- override def cleanup(): Unit = {}
- }
val ContextPropagationOnly = new ActorMonitor {
def captureEnvelopeContext(): EnvelopeContext =
diff --git a/kamon-akka/src/main/scala/kamon/akka/instrumentation/CellInfo.scala b/kamon-akka/src/main/scala/kamon/akka/instrumentation/CellInfo.scala
index e144e605..bc06bc77 100644
--- a/kamon-akka/src/main/scala/kamon/akka/instrumentation/CellInfo.scala
+++ b/kamon-akka/src/main/scala/kamon/akka/instrumentation/CellInfo.scala
@@ -1,7 +1,7 @@
package akka.kamon.instrumentation
import akka.actor.{ Cell, ActorRef, ActorSystem }
-import akka.routing.{ RoutedActorRef, RoutedActorCell }
+import akka.routing.{ NoRouter, RoutedActorRef, RoutedActorCell }
import kamon.Kamon
import kamon.akka.{ ActorMetrics, RouterMetrics }
import kamon.metric.Entity
@@ -15,10 +15,11 @@ object CellInfo {
def cellInfoFor(cell: Cell, system: ActorSystem, ref: ActorRef, parent: ActorRef): CellInfo = {
import kamon.metric.Entity
+ def hasRouterProps(cell: Cell): Boolean = cell.props.deploy.routerConfig != NoRouter
val pathString = ref.path.elements.mkString("/")
val isRootSupervisor = pathString.length == 0 || pathString == "user" || pathString == "system"
- val isRouter = cell.isInstanceOf[RoutedActorCell]
+ val isRouter = hasRouterProps(cell)
val isRoutee = parent.isInstanceOf[RoutedActorRef]
val name = if (isRoutee) cellName(system, parent) else cellName(system, ref)