diff options
author | Ivan Topolnjak <ivantopo@gmail.com> | 2014-11-09 17:20:36 +0100 |
---|---|---|
committer | Ivan Topolnjak <ivantopo@gmail.com> | 2014-11-09 18:01:46 +0100 |
commit | c23450f4cc1baa5afdc54aae02b9adb746472381 (patch) | |
tree | 27b48fde7c01d1dbb020a321d845a17cde3b1efb /kamon-core/src/main/scala/kamon/http | |
parent | 8ac7d1e06be61f53eb90abb4d42b67b476d35317 (diff) | |
download | Kamon-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.scala | 6 |
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 = { |