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 | 88bc1b94b2d737e01074a8f41391367f59796157 (patch) | |
tree | cd31ef5e5573f4b7d1ef55961cbd9208901c70fa /kamon-core/src/main/scala/kamon/http/HttpServerMetrics.scala | |
parent | ef21f8d0ade1015f71f1d289c8d041e2b525d824 (diff) | |
download | Kamon-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.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 = { |