diff options
author | Diego <diegolparra@gmail.com> | 2015-06-14 19:04:10 -0300 |
---|---|---|
committer | Diego <diegolparra@gmail.com> | 2015-06-14 19:04:10 -0300 |
commit | 6354021533319790ba675c2b9e36fb439a8ea06f (patch) | |
tree | 6996300339a61cd8f7b44833e38136ec6a79a676 /kamon-akka/src/main/scala | |
parent | 4a37210cd808bc27916c5babfef82f16825fdefe (diff) | |
download | Kamon-6354021533319790ba675c2b9e36fb439a8ea06f.tar.gz Kamon-6354021533319790ba675c2b9e36fb439a8ea06f.tar.bz2 Kamon-6354021533319790ba675c2b9e36fb439a8ea06f.zip |
+ akka: avoid runtime exceptions logged on dispatchers shutdown
Diffstat (limited to 'kamon-akka/src/main/scala')
-rw-r--r-- | kamon-akka/src/main/scala/kamon/akka/instrumentation/DispatcherInstrumentation.scala | 14 |
1 files changed, 8 insertions, 6 deletions
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 931d8a45..cc177aac 100644 --- a/kamon-akka/src/main/scala/kamon/akka/instrumentation/DispatcherInstrumentation.scala +++ b/kamon-akka/src/main/scala/kamon/akka/instrumentation/DispatcherInstrumentation.scala @@ -24,7 +24,7 @@ import akka.dispatch._ import akka.kamon.instrumentation.LookupDataAware.LookupData import kamon.Kamon import kamon.akka.{ AkkaDispatcherMetrics, ThreadPoolExecutorDispatcherMetrics, ForkJoinPoolDispatcherMetrics } -import kamon.metric.Entity +import kamon.metric.{MetricsModule, Entity} import org.aspectj.lang.ProceedingJoinPoint import org.aspectj.lang.annotation._ @@ -121,6 +121,7 @@ class DispatcherInstrumentation { @Pointcut("execution(* akka.dispatch.Dispatcher.LazyExecutorServiceDelegate.shutdown()) && this(lazyExecutor)") def lazyExecutorShutdown(lazyExecutor: LookupDataAware): Unit = {} + @After("lazyExecutorShutdown(lazyExecutor)") def afterLazyExecutorShutdown(lazyExecutor: LookupDataAware): Unit = { import lazyExecutor.lookupData @@ -128,17 +129,18 @@ class DispatcherInstrumentation { if (lookupData.actorSystem != null) lazyExecutor.asInstanceOf[ExecutorServiceDelegate].executor match { case fjp: AkkaForkJoinPool ⇒ - Kamon.metrics.removeEntity(Entity(lookupData.actorSystem.name + "/" + lookupData.dispatcherName, - AkkaDispatcherMetrics.Category, tags = Map("dispatcher-type" -> "fork-join-pool"))) + lookupData.metrics.removeEntity(Entity(lookupData.actorSystem.name + "/" + lookupData.dispatcherName, + AkkaDispatcherMetrics.Category, tags = Map("dispatcher-type" -> "fork-join-pool"))) case tpe: ThreadPoolExecutor ⇒ - Kamon.metrics.removeEntity(Entity(lookupData.actorSystem.name + "/" + lookupData.dispatcherName, - AkkaDispatcherMetrics.Category, tags = Map("dispatcher-type" -> "thread-pool-executor"))) + lookupData.metrics.removeEntity(Entity(lookupData.actorSystem.name + "/" + lookupData.dispatcherName, + AkkaDispatcherMetrics.Category, tags = Map("dispatcher-type" -> "thread-pool-executor"))) case other ⇒ // nothing to remove. } } + } @Aspect @@ -167,7 +169,7 @@ trait LookupDataAware { } object LookupDataAware { - case class LookupData(dispatcherName: String, actorSystem: ActorSystem) + case class LookupData(dispatcherName: String, actorSystem: ActorSystem, metrics:MetricsModule = Kamon.metrics) private val _currentDispatcherLookupData = new ThreadLocal[LookupData] |