aboutsummaryrefslogtreecommitdiff
path: root/kamon-core/src/main/scala/kamon/http/HttpServerMetrics.scala
diff options
context:
space:
mode:
authorIvan Topolnjak <ivantopo@gmail.com>2014-11-09 17:20:36 +0100
committerIvan Topolnjak <ivantopo@gmail.com>2014-11-09 18:01:46 +0100
commit88bc1b94b2d737e01074a8f41391367f59796157 (patch)
treecd31ef5e5573f4b7d1ef55961cbd9208901c70fa /kamon-core/src/main/scala/kamon/http/HttpServerMetrics.scala
parentef21f8d0ade1015f71f1d289c8d041e2b525d824 (diff)
downloadKamon-88bc1b94b2d737e01074a8f41391367f59796157.tar.gz
Kamon-88bc1b94b2d737e01074a8f41391367f59796157.tar.bz2
Kamon-88bc1b94b2d737e01074a8f41391367f59796157.zip
= core,play: workaround the non thread safe calls to TrieMap.getOrElseUpdate
Diffstat (limited to 'kamon-core/src/main/scala/kamon/http/HttpServerMetrics.scala')
-rw-r--r--kamon-core/src/main/scala/kamon/http/HttpServerMetrics.scala6
1 files changed, 4 insertions, 2 deletions
diff --git a/kamon-core/src/main/scala/kamon/http/HttpServerMetrics.scala b/kamon-core/src/main/scala/kamon/http/HttpServerMetrics.scala
index dfa4bcb8..0dd189f6 100644
--- a/kamon-core/src/main/scala/kamon/http/HttpServerMetrics.scala
+++ b/kamon-core/src/main/scala/kamon/http/HttpServerMetrics.scala
@@ -8,6 +8,8 @@ import kamon.metric._
import scala.collection.concurrent.TrieMap
object HttpServerMetrics extends MetricGroupIdentity {
+ import Metrics.AtomicGetOrElseUpdateForTriemap
+
val name: String = "http-server-metrics-recorder"
val category = new MetricGroupCategory {
val name: String = "http-server"
@@ -32,13 +34,13 @@ object HttpServerMetrics extends MetricGroupIdentity {
def recordResponse(statusCode: StatusCode): Unit = recordResponse(statusCode, 1L)
def recordResponse(statusCode: StatusCode, count: Long): Unit =
- counters.getOrElseUpdate(statusCode, Counter()).increment(count)
+ counters.atomicGetOrElseUpdate(statusCode, Counter()).increment(count)
def recordResponse(traceName: TraceName, statusCode: StatusCode): Unit = recordResponse(traceName, statusCode, 1L)
def recordResponse(traceName: TraceName, statusCode: StatusCode, count: Long): Unit = {
recordResponse(statusCode, count)
- countersPerTrace.getOrElseUpdate(traceName, TrieMap()).getOrElseUpdate(statusCode, Counter()).increment(count)
+ countersPerTrace.atomicGetOrElseUpdate(traceName, TrieMap()).atomicGetOrElseUpdate(statusCode, Counter()).increment(count)
}
def collect(context: CollectionContext): HttpServerMetricsSnapshot = {