aboutsummaryrefslogtreecommitdiff
path: root/kamon-play/src
diff options
context:
space:
mode:
authorIvan Topolnjak <ivantopo@gmail.com>2014-11-10 16:35:32 +0100
committerIvan Topolnjak <ivantopo@gmail.com>2014-11-10 16:35:32 +0100
commit007157a3ec7e9886a60f57b2eb9fbd8072ce2320 (patch)
treebcb3a3f2213c102550bdc8d59aca9ba9d6bf774c /kamon-play/src
parent63b31056da21238188931552102f963982c96543 (diff)
parent5b9bbb196734c47e67d69d48e378e196b205fd57 (diff)
downloadKamon-007157a3ec7e9886a60f57b2eb9fbd8072ce2320.tar.gz
Kamon-007157a3ec7e9886a60f57b2eb9fbd8072ce2320.tar.bz2
Kamon-007157a3ec7e9886a60f57b2eb9fbd8072ce2320.zip
Merge branch 'master' into release-0.2
Conflicts: kamon-newrelic/src/main/scala/kamon/newrelic/Agent.scala kamon-newrelic/src/main/scala/kamon/newrelic/NewRelic.scala kamon-play/src/main/scala/kamon/play/instrumentation/WSInstrumentation.scala project/Dependencies.scala project/Projects.scala
Diffstat (limited to 'kamon-play/src')
-rw-r--r--kamon-play/src/main/scala/kamon/play/Play.scala2
-rw-r--r--kamon-play/src/main/scala/kamon/play/instrumentation/RequestInstrumentation.scala4
-rw-r--r--kamon-play/src/main/scala/kamon/play/instrumentation/WSInstrumentation.scala4
-rw-r--r--kamon-play/src/test/scala/kamon/play/WSInstrumentationSpec.scala4
4 files changed, 8 insertions, 6 deletions
diff --git a/kamon-play/src/main/scala/kamon/play/Play.scala b/kamon-play/src/main/scala/kamon/play/Play.scala
index 0f23baf5..2184fa84 100644
--- a/kamon-play/src/main/scala/kamon/play/Play.scala
+++ b/kamon-play/src/main/scala/kamon/play/Play.scala
@@ -27,6 +27,8 @@ 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)
+
+ val SegmentLibraryName = "WS-client"
}
class PlayExtension(private val system: ExtendedActorSystem) extends Kamon.Extension {
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 897acce6..b44e45a3 100644
--- a/kamon-play/src/main/scala/kamon/play/instrumentation/RequestInstrumentation.scala
+++ b/kamon-play/src/main/scala/kamon/play/instrumentation/RequestInstrumentation.scala
@@ -86,7 +86,7 @@ class RequestInstrumentation {
}
object RequestInstrumentation {
-
+ import kamon.metric.Metrics.AtomicGetOrElseUpdateForTriemap
import java.util.Locale
import scala.collection.concurrent.TrieMap
@@ -94,7 +94,7 @@ object RequestInstrumentation {
def normaliseTraceName(requestHeader: RequestHeader): Option[String] = requestHeader.tags.get(Routes.ROUTE_VERB).map({ verb ⇒
val path = requestHeader.tags(Routes.ROUTE_PATTERN)
- cache.getOrElseUpdate(s"$verb$path", {
+ cache.atomicGetOrElseUpdate(s"$verb$path", {
val traceName = {
// Convert paths of form GET /foo/bar/$paramname<regexp>/blah to foo.bar.paramname.blah.get
val p = path.replaceAll("""\$([^<]+)<[^>]+>""", "$1").replace('/', '.').dropWhile(_ == '.')
diff --git a/kamon-play/src/main/scala/kamon/play/instrumentation/WSInstrumentation.scala b/kamon-play/src/main/scala/kamon/play/instrumentation/WSInstrumentation.scala
index c58e9f0c..2791df80 100644
--- a/kamon-play/src/main/scala/kamon/play/instrumentation/WSInstrumentation.scala
+++ b/kamon-play/src/main/scala/kamon/play/instrumentation/WSInstrumentation.scala
@@ -18,7 +18,7 @@ package kamon.play.instrumentation
import kamon.Kamon
import kamon.play.Play
-import kamon.trace.SegmentMetricIdentityLabel
+import kamon.trace.{ SegmentCategory, SegmentMetricIdentity }
import org.aspectj.lang.ProceedingJoinPoint
import org.aspectj.lang.annotation.{ Around, Aspect, Pointcut }
import kamon.trace.TraceRecorder
@@ -38,7 +38,7 @@ class WSInstrumentation {
val playExtension = Kamon(Play)(system)
val executor = playExtension.defaultDispatcher
val segmentName = playExtension.generateHttpClientSegmentName(request)
- val segment = ctx.startSegment(segmentName, SegmentMetricIdentityLabel.HttpClient)
+ val segment = ctx.startSegment(segmentName, SegmentMetricIdentityLabel.HttpClient, Play.SegmentLibraryName)
val response = pjp.proceed().asInstanceOf[Future[Response]]
response.map(result ⇒ segment.finish())(executor)
diff --git a/kamon-play/src/test/scala/kamon/play/WSInstrumentationSpec.scala b/kamon-play/src/test/scala/kamon/play/WSInstrumentationSpec.scala
index bf1ead05..bda8281b 100644
--- a/kamon-play/src/test/scala/kamon/play/WSInstrumentationSpec.scala
+++ b/kamon-play/src/test/scala/kamon/play/WSInstrumentationSpec.scala
@@ -19,7 +19,7 @@ package kamon.play
import kamon.Kamon
import kamon.metric.TraceMetrics.TraceMetricsSnapshot
import kamon.metric.{ Metrics, TraceMetrics }
-import kamon.trace.{ SegmentMetricIdentityLabel, SegmentMetricIdentity, TraceRecorder }
+import kamon.trace.{ SegmentCategory, SegmentMetricIdentity, TraceRecorder }
import org.scalatest.{ Matchers, WordSpecLike }
import org.scalatestplus.play.OneServerPerSuite
import play.api.libs.ws.WS
@@ -49,7 +49,7 @@ class WSInstrumentationSpec extends WordSpecLike with Matchers with OneServerPer
val snapshot = takeSnapshotOf("GET: /inside")
snapshot.elapsedTime.numberOfMeasurements should be(1)
snapshot.segments.size should be(1)
- snapshot.segments(SegmentMetricIdentity("http://localhost:19001/async", SegmentMetricIdentityLabel.HttpClient)).numberOfMeasurements should be(1)
+ snapshot.segments(SegmentMetricIdentity("http://localhost:19001/async", SegmentCategory.HttpClient, Play.SegmentLibraryName)).numberOfMeasurements should be(1)
}
"propagate the TraceContext outside an Action and complete the WS request" in {