aboutsummaryrefslogtreecommitdiff
path: root/kamon-play-2.3.x/src/main/scala/kamon/play
diff options
context:
space:
mode:
authorIvan Topolnjak <ivantopo@gmail.com>2015-08-30 13:36:27 +0200
committerIvan Topolnjak <ivantopo@gmail.com>2015-08-30 13:36:27 +0200
commit539b54c3b43c68ad418ca77032f557a4da3e3a59 (patch)
tree8f7a5f7528bc6fc16afb0351661e1d4b5687f41a /kamon-play-2.3.x/src/main/scala/kamon/play
parent110fff9745a0c1f154ee3d7a5149cd9f162a879f (diff)
downloadKamon-539b54c3b43c68ad418ca77032f557a4da3e3a59.tar.gz
Kamon-539b54c3b43c68ad418ca77032f557a4da3e3a59.tar.bz2
Kamon-539b54c3b43c68ad418ca77032f557a4da3e3a59.zip
wip: only the modules that actually require an actor system are getting one.
Diffstat (limited to 'kamon-play-2.3.x/src/main/scala/kamon/play')
-rw-r--r--kamon-play-2.3.x/src/main/scala/kamon/play/Play.scala19
-rw-r--r--kamon-play-2.3.x/src/main/scala/kamon/play/instrumentation/RequestInstrumentation.scala16
-rw-r--r--kamon-play-2.3.x/src/main/scala/kamon/play/instrumentation/WSInstrumentation.scala8
3 files changed, 16 insertions, 27 deletions
diff --git a/kamon-play-2.3.x/src/main/scala/kamon/play/Play.scala b/kamon-play-2.3.x/src/main/scala/kamon/play/Play.scala
index d8ef5c97..0da52283 100644
--- a/kamon-play-2.3.x/src/main/scala/kamon/play/Play.scala
+++ b/kamon-play-2.3.x/src/main/scala/kamon/play/Play.scala
@@ -16,32 +16,27 @@
package kamon.play
-import akka.actor.{ ExtendedActorSystem, Extension, ExtensionId, ExtensionIdProvider }
-import akka.event.Logging
+import akka.actor._
import kamon.Kamon
import kamon.util.http.HttpServerMetrics
+import org.slf4j.LoggerFactory
import play.api.libs.ws.WSRequest
import play.api.mvc.RequestHeader
-object Play extends ExtensionId[PlayExtension] with ExtensionIdProvider {
- override def lookup(): ExtensionId[_ <: Extension] = Play
- override def createExtension(system: ExtendedActorSystem): PlayExtension = new PlayExtension(system)
-
+object PlayExtension {
val SegmentLibraryName = "WS-client"
-}
-class PlayExtension(private val system: ExtendedActorSystem) extends Kamon.Extension {
- val log = Logging(system, classOf[PlayExtension])
- log.info(s"Starting the Kamon(Play) extension")
+ val log = LoggerFactory.getLogger("kamon.play.PlayExtension")
+ private val dynamic = new ReflectiveDynamicAccess(getClass.getClassLoader)
- private val config = system.settings.config.getConfig("kamon.play")
+ private val config = Kamon.config.getConfig("kamon.play")
val httpServerMetrics = Kamon.metrics.entity(HttpServerMetrics, "play-server")
val includeTraceToken: Boolean = config.getBoolean("automatic-trace-token-propagation")
val traceTokenHeaderName: String = config.getString("trace-token-header-name")
private val nameGeneratorFQN = config.getString("name-generator")
- private val nameGenerator: NameGenerator = system.dynamicAccess.createInstanceFor[NameGenerator](nameGeneratorFQN, Nil).get
+ private val nameGenerator: NameGenerator = dynamic.createInstanceFor[NameGenerator](nameGeneratorFQN, Nil).get
def generateTraceName(requestHeader: RequestHeader): String = nameGenerator.generateTraceName(requestHeader)
def generateHttpClientSegmentName(request: WSRequest): String = nameGenerator.generateHttpClientSegmentName(request)
diff --git a/kamon-play-2.3.x/src/main/scala/kamon/play/instrumentation/RequestInstrumentation.scala b/kamon-play-2.3.x/src/main/scala/kamon/play/instrumentation/RequestInstrumentation.scala
index c8a808ec..01b37024 100644
--- a/kamon-play-2.3.x/src/main/scala/kamon/play/instrumentation/RequestInstrumentation.scala
+++ b/kamon-play-2.3.x/src/main/scala/kamon/play/instrumentation/RequestInstrumentation.scala
@@ -16,7 +16,7 @@
package kamon.play.instrumentation
import kamon.Kamon
-import kamon.play.Play
+import kamon.play.PlayExtension
import kamon.trace._
import kamon.util.SameThreadExecutionContext
import org.aspectj.lang.ProceedingJoinPoint
@@ -34,10 +34,8 @@ class RequestInstrumentation {
def beforeRouteRequest(requestHeader: RequestHeader): Unit = {
import Kamon.tracer
- val playExtension = Kamon(Play)
-
- val token = if (playExtension.includeTraceToken) {
- requestHeader.headers.get(playExtension.traceTokenHeaderName)
+ val token = if (PlayExtension.includeTraceToken) {
+ requestHeader.headers.get(PlayExtension.traceTokenHeaderName)
} else None
Tracer.setCurrentContext(tracer.newContext("UnnamedTrace", token))
@@ -47,21 +45,19 @@ class RequestInstrumentation {
def aroundDoFilter(pjp: ProceedingJoinPoint, next: EssentialAction): Any = {
val essentialAction = (requestHeader: RequestHeader) ⇒ {
- val playExtension = Kamon(Play)
-
def onResult(result: Result): Result = {
Tracer.currentContext.collect { ctx ⇒
ctx.finish()
recordHttpServerMetrics(result.header, ctx.name)
- if (playExtension.includeTraceToken) result.withHeaders(playExtension.traceTokenHeaderName -> ctx.token)
+ if (PlayExtension.includeTraceToken) result.withHeaders(PlayExtension.traceTokenHeaderName -> ctx.token)
else result
} getOrElse result
}
//override the current trace name
- Tracer.currentContext.rename(playExtension.generateTraceName(requestHeader))
+ Tracer.currentContext.rename(PlayExtension.generateTraceName(requestHeader))
// Invoke the action
next(requestHeader).map(onResult)(SameThreadExecutionContext)
}
@@ -76,5 +72,5 @@ class RequestInstrumentation {
}
def recordHttpServerMetrics(header: ResponseHeader, traceName: String): Unit =
- Kamon(Play).httpServerMetrics.recordResponse(traceName, header.status.toString)
+ PlayExtension.httpServerMetrics.recordResponse(traceName, header.status.toString)
}
diff --git a/kamon-play-2.3.x/src/main/scala/kamon/play/instrumentation/WSInstrumentation.scala b/kamon-play-2.3.x/src/main/scala/kamon/play/instrumentation/WSInstrumentation.scala
index 2536c77c..1e3cc8a2 100644
--- a/kamon-play-2.3.x/src/main/scala/kamon/play/instrumentation/WSInstrumentation.scala
+++ b/kamon-play-2.3.x/src/main/scala/kamon/play/instrumentation/WSInstrumentation.scala
@@ -16,8 +16,7 @@
package kamon.play.instrumentation
-import kamon.Kamon
-import kamon.play.Play
+import kamon.play.PlayExtension
import kamon.trace.{ Tracer, SegmentCategory }
import kamon.util.SameThreadExecutionContext
import org.aspectj.lang.ProceedingJoinPoint
@@ -34,9 +33,8 @@ class WSInstrumentation {
@Around("onExecuteRequest(request)")
def aroundExecuteRequest(pjp: ProceedingJoinPoint, request: WSRequest): Any = {
Tracer.currentContext.collect { ctx ⇒
- val playExtension = Kamon(Play)
- val segmentName = playExtension.generateHttpClientSegmentName(request)
- val segment = ctx.startSegment(segmentName, SegmentCategory.HttpClient, Play.SegmentLibraryName)
+ val segmentName = PlayExtension.generateHttpClientSegmentName(request)
+ val segment = ctx.startSegment(segmentName, SegmentCategory.HttpClient, PlayExtension.SegmentLibraryName)
val response = pjp.proceed().asInstanceOf[Future[WSResponse]]
response.onComplete(result ⇒ segment.finish())(SameThreadExecutionContext)