From 110fff9745a0c1f154ee3d7a5149cd9f162a879f Mon Sep 17 00:00:00 2001 From: Ivan Topolnjak Date: Fri, 28 Aug 2015 13:02:09 +0200 Subject: wip, core/akka/spray are kind of migrated. --- .../src/main/scala/kamon/akka/AkkaExtension.scala | 17 +++------------ .../AskPatternInstrumentation.scala | 24 ++++++++++++---------- 2 files changed, 16 insertions(+), 25 deletions(-) (limited to 'kamon-akka/src/main/scala/kamon/akka') diff --git a/kamon-akka/src/main/scala/kamon/akka/AkkaExtension.scala b/kamon-akka/src/main/scala/kamon/akka/AkkaExtension.scala index e84a1030..2fe2a42f 100644 --- a/kamon-akka/src/main/scala/kamon/akka/AkkaExtension.scala +++ b/kamon-akka/src/main/scala/kamon/akka/AkkaExtension.scala @@ -16,22 +16,11 @@ package kamon.akka -import _root_.akka.actor -import _root_.akka.actor._ -import _root_.akka.event.Logging import com.typesafe.config.Config -import kamon._ +import kamon.Kamon -class AkkaExtension(system: ExtendedActorSystem) extends Kamon.Extension { - val log = Logging(system, classOf[AkkaExtension]) - val config = system.settings.config.getConfig("kamon.akka") - - val askPatternTimeoutWarning = AskPatternTimeoutWarningSettings.fromConfig(config) -} - -object Akka extends ExtensionId[AkkaExtension] with ExtensionIdProvider { - def lookup(): ExtensionId[_ <: actor.Extension] = Akka - def createExtension(system: ExtendedActorSystem): AkkaExtension = new AkkaExtension(system) +object AkkaExtension { + val askPatternTimeoutWarning = AskPatternTimeoutWarningSettings.fromConfig(Kamon.config.getConfig("kamon.akka")) } sealed trait AskPatternTimeoutWarningSetting diff --git a/kamon-akka/src/main/scala/kamon/akka/instrumentation/AskPatternInstrumentation.scala b/kamon-akka/src/main/scala/kamon/akka/instrumentation/AskPatternInstrumentation.scala index e64b241e..64012163 100644 --- a/kamon-akka/src/main/scala/kamon/akka/instrumentation/AskPatternInstrumentation.scala +++ b/kamon-akka/src/main/scala/kamon/akka/instrumentation/AskPatternInstrumentation.scala @@ -17,8 +17,7 @@ package akka.kamon.instrumentation import akka.util.Timeout -import kamon.Kamon -import kamon.akka.{ AkkaExtension, Akka } +import kamon.akka.AkkaExtension import kamon.akka.AskPatternTimeoutWarningSettings.{ Heavyweight, Lightweight, Off } import akka.actor.{ InternalActorRef, ActorRef } import akka.pattern.AskTimeoutException @@ -27,11 +26,13 @@ import kamon.util.SameThreadExecutionContext import org.aspectj.lang.ProceedingJoinPoint import org.aspectj.lang.annotation._ import org.aspectj.lang.reflect.SourceLocation +import org.slf4j.LoggerFactory import scala.concurrent.Future import scala.compat.Platform.EOL @Aspect class AskPatternInstrumentation { + private val log = LoggerFactory.getLogger(getClass) import AskPatternInstrumentation._ @@ -43,18 +44,19 @@ class AskPatternInstrumentation { actor match { // the AskPattern will only work for InternalActorRef's with these conditions. case ref: InternalActorRef if !ref.isTerminated && timeout.duration.length > 0 && Tracer.currentContext.nonEmpty ⇒ - val akkaExtension = Kamon.extension(Akka) val future = pjp.proceed().asInstanceOf[Future[AnyRef]] - akkaExtension.askPatternTimeoutWarning match { + AkkaExtension.askPatternTimeoutWarning match { case Off ⇒ - case Lightweight ⇒ hookLightweightWarning(future, pjp.getSourceLocation, actor, akkaExtension) - case Heavyweight ⇒ hookHeavyweightWarning(future, new StackTraceCaptureException, actor, akkaExtension) + case Lightweight ⇒ hookLightweightWarning(future, pjp.getSourceLocation, actor) + case Heavyweight ⇒ hookHeavyweightWarning(future, new StackTraceCaptureException, actor) } future - case _ ⇒ pjp.proceed().asInstanceOf[Future[AnyRef]] // + case _ ⇒ + pjp.proceed().asInstanceOf[Future[AnyRef]] + } def ifAskTimeoutException(code: ⇒ Unit): PartialFunction[Throwable, Unit] = { @@ -62,21 +64,21 @@ class AskPatternInstrumentation { case _ ⇒ } - def hookLightweightWarning(future: Future[AnyRef], sourceLocation: SourceLocation, actor: ActorRef, akkaExtension: AkkaExtension): Unit = { + def hookLightweightWarning(future: Future[AnyRef], sourceLocation: SourceLocation, actor: ActorRef): Unit = { val locationString = Option(sourceLocation) .map(location ⇒ s"${location.getFileName}:${location.getLine}") .getOrElse("") future.onFailure(ifAskTimeoutException { - akkaExtension.log.warning("Timeout triggered for ask pattern to actor [{}] at [{}]", actor.path.name, locationString) + log.warn(s"Timeout triggered for ask pattern to actor [${actor.path.name}] at [$locationString]") })(SameThreadExecutionContext) } - def hookHeavyweightWarning(future: Future[AnyRef], captureException: StackTraceCaptureException, actor: ActorRef, akkaExtension: AkkaExtension): Unit = { + def hookHeavyweightWarning(future: Future[AnyRef], captureException: StackTraceCaptureException, actor: ActorRef): Unit = { val locationString = captureException.getStackTrace.drop(3).mkString("", EOL, EOL) future.onFailure(ifAskTimeoutException { - akkaExtension.log.warning("Timeout triggered for ask pattern to actor [{}] at [{}]", actor.path.name, locationString) + log.warn(s"Timeout triggered for ask pattern to actor [${actor.path.name}] at [$locationString]") })(SameThreadExecutionContext) } } -- cgit v1.2.3