aboutsummaryrefslogtreecommitdiff
path: root/kamon-core/src/main/scala/kamon/http
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
commitc23450f4cc1baa5afdc54aae02b9adb746472381 (patch)
tree27b48fde7c01d1dbb020a321d845a17cde3b1efb /kamon-core/src/main/scala/kamon/http
parent8ac7d1e06be61f53eb90abb4d42b67b476d35317 (diff)
downloadKamon-c23450f4cc1baa5afdc54aae02b9adb746472381.tar.gz
Kamon-c23450f4cc1baa5afdc54aae02b9adb746472381.tar.bz2
Kamon-c23450f4cc1baa5afdc54aae02b9adb746472381.zip
= core,play: workaround the non thread safe calls to TrieMap.getOrElseUpdate
Diffstat (limited to 'kamon-core/src/main/scala/kamon/http')
-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 = {