aboutsummaryrefslogtreecommitdiff
path: root/kamon-core/src/main/scala/kamon/metric/TraceMetrics.scala
diff options
context:
space:
mode:
authorIvan Topolnjak <ivantopo@gmail.com>2014-11-09 18:44:39 +0100
committerIvan Topolnjak <ivantopo@gmail.com>2014-11-09 18:44:39 +0100
commit17ff90ce6e91554b464a9951ddd5e6ffafb4d3ff (patch)
tree5803e8bfbd0056e5225783ff5eece46c68f98694 /kamon-core/src/main/scala/kamon/metric/TraceMetrics.scala
parent8ac7d1e06be61f53eb90abb4d42b67b476d35317 (diff)
parenta36cf7bd6588725963181ce22df6bec3c2676670 (diff)
downloadKamon-17ff90ce6e91554b464a9951ddd5e6ffafb4d3ff.tar.gz
Kamon-17ff90ce6e91554b464a9951ddd5e6ffafb4d3ff.tar.bz2
Kamon-17ff90ce6e91554b464a9951ddd5e6ffafb4d3ff.zip
Merge branch 'wip/newrelic-agent-rewrite'
Diffstat (limited to 'kamon-core/src/main/scala/kamon/metric/TraceMetrics.scala')
-rw-r--r--kamon-core/src/main/scala/kamon/metric/TraceMetrics.scala7
1 files changed, 4 insertions, 3 deletions
diff --git a/kamon-core/src/main/scala/kamon/metric/TraceMetrics.scala b/kamon-core/src/main/scala/kamon/metric/TraceMetrics.scala
index 7246ccb5..eaad6e0d 100644
--- a/kamon-core/src/main/scala/kamon/metric/TraceMetrics.scala
+++ b/kamon-core/src/main/scala/kamon/metric/TraceMetrics.scala
@@ -27,6 +27,8 @@ case class TraceMetrics(name: String) extends MetricGroupIdentity {
}
object TraceMetrics extends MetricGroupCategory {
+ import Metrics.AtomicGetOrElseUpdateForTriemap
+
val name = "trace"
case object ElapsedTime extends MetricIdentity { val name = "elapsed-time" }
@@ -37,7 +39,7 @@ object TraceMetrics extends MetricGroupCategory {
val segments = TrieMap[MetricIdentity, Histogram]()
def segmentRecorder(segmentIdentity: MetricIdentity): Histogram =
- segments.getOrElseUpdate(segmentIdentity, segmentRecorderFactory.apply())
+ segments.atomicGetOrElseUpdate(segmentIdentity, segmentRecorderFactory.apply())
def collect(context: CollectionContext): TraceMetricsSnapshot =
TraceMetricsSnapshot(
@@ -53,7 +55,7 @@ object TraceMetrics extends MetricGroupCategory {
type GroupSnapshotType = TraceMetricsSnapshot
def merge(that: TraceMetricsSnapshot, context: CollectionContext): TraceMetricsSnapshot =
- TraceMetricsSnapshot(elapsedTime.merge(that.elapsedTime, context), Map.empty) // TODO: Merge the segments metrics correctly and test it!
+ TraceMetricsSnapshot(elapsedTime.merge(that.elapsedTime, context), combineMaps(segments, that.segments)((l, r) ⇒ l.merge(r, context)))
def metrics: Map[MetricIdentity, MetricSnapshot] = segments + (ElapsedTime -> elapsedTime)
}
@@ -69,7 +71,6 @@ case object TraceMetricGroupFactory extends MetricGroupFactory {
type GroupRecorder = TraceMetricRecorder
def create(config: Config, system: ActorSystem): TraceMetricRecorder = {
-
val settings = config.getConfig("precision.trace")
val elapsedTimeConfig = settings.getConfig("elapsed-time")
val segmentConfig = settings.getConfig("segment")