aboutsummaryrefslogtreecommitdiff
path: root/kamon-play/src/main/scala/kamon/play/instrumentation/RequestInstrumentation.scala
diff options
context:
space:
mode:
authorIvan Topolnjak <ivantopo@gmail.com>2014-10-26 02:21:11 +0200
committerIvan Topolnjak <ivantopo@gmail.com>2014-10-26 02:21:11 +0200
commitcd8dce169b4231bf533445656bfb5a35034a6304 (patch)
tree4561bf3b8b7890891990a0d1b500155975d54277 /kamon-play/src/main/scala/kamon/play/instrumentation/RequestInstrumentation.scala
parentea1a0d5d76988992227eb30b0baaf8e97678c946 (diff)
downloadKamon-cd8dce169b4231bf533445656bfb5a35034a6304.tar.gz
Kamon-cd8dce169b4231bf533445656bfb5a35034a6304.tar.bz2
Kamon-cd8dce169b4231bf533445656bfb5a35034a6304.zip
= all: upgrade to be compatible with the latest code in core
Diffstat (limited to 'kamon-play/src/main/scala/kamon/play/instrumentation/RequestInstrumentation.scala')
-rw-r--r--kamon-play/src/main/scala/kamon/play/instrumentation/RequestInstrumentation.scala23
1 files changed, 15 insertions, 8 deletions
diff --git a/kamon-play/src/main/scala/kamon/play/instrumentation/RequestInstrumentation.scala b/kamon-play/src/main/scala/kamon/play/instrumentation/RequestInstrumentation.scala
index c761e72f..82a43926 100644
--- a/kamon-play/src/main/scala/kamon/play/instrumentation/RequestInstrumentation.scala
+++ b/kamon-play/src/main/scala/kamon/play/instrumentation/RequestInstrumentation.scala
@@ -54,16 +54,23 @@ class RequestInstrumentation {
@Around("execution(* play.api.GlobalSettings+.doFilter(*)) && args(next)")
def aroundDoFilter(pjp: ProceedingJoinPoint, next: EssentialAction): Any = {
val essentialAction = (requestHeader: RequestHeader) ⇒ {
+ // TODO: Move to a Kamon-specific dispatcher.
val executor = Kamon(Play)(Akka.system()).defaultDispatcher
def onResult(result: Result): Result = {
- TraceRecorder.finish()
- TraceRecorder.currentContext.map { ctx ⇒
- val playExtension = Kamon(Play)(ctx.system)
+
+ TraceRecorder.withTraceContextAndSystem { (ctx, system) ⇒
+ ctx.finish()
+
+ val playExtension = Kamon(Play)(system)
recordHttpServerMetrics(result.header, ctx.name, playExtension)
- if (playExtension.includeTraceToken) result.withHeaders(playExtension.traceTokenHeaderName -> ctx.token)
- else result
- }.getOrElse(result)
+
+ if (playExtension.includeTraceToken)
+ result.withHeaders(playExtension.traceTokenHeaderName -> ctx.token)
+ else
+ result
+
+ } getOrElse (result)
}
//override the current trace name
@@ -76,8 +83,8 @@ class RequestInstrumentation {
}
@Before("execution(* play.api.GlobalSettings+.onError(..)) && args(request, ex)")
- def beforeOnError(request: TraceContextAware, ex: Throwable): Unit = request.traceContext.map {
- ctx ⇒ recordHttpServerMetrics(InternalServerError.header, ctx.name, Kamon(Play)(ctx.system))
+ def beforeOnError(request: TraceContextAware, ex: Throwable): Unit = TraceRecorder.withTraceContextAndSystem { (ctx, system) ⇒
+ recordHttpServerMetrics(InternalServerError.header, ctx.name, Kamon(Play)(system))
}
private def recordHttpServerMetrics(header: ResponseHeader, traceName: String, playExtension: PlayExtension): Unit =