aboutsummaryrefslogtreecommitdiff
path: root/kamon-core/src/main/scala/kamon/metric/MetricsExtension.scala
diff options
context:
space:
mode:
Diffstat (limited to 'kamon-core/src/main/scala/kamon/metric/MetricsExtension.scala')
-rw-r--r--kamon-core/src/main/scala/kamon/metric/MetricsExtension.scala10
1 files changed, 7 insertions, 3 deletions
diff --git a/kamon-core/src/main/scala/kamon/metric/MetricsExtension.scala b/kamon-core/src/main/scala/kamon/metric/MetricsExtension.scala
index c14d4e16..88352e21 100644
--- a/kamon-core/src/main/scala/kamon/metric/MetricsExtension.scala
+++ b/kamon-core/src/main/scala/kamon/metric/MetricsExtension.scala
@@ -86,14 +86,18 @@ class MetricsExtensionImpl(system: ExtendedActorSystem) extends MetricsExtension
if (shouldTrack(entity)) {
val instrumentFactory = settings.instrumentFactories.get(recorderFactory.category).getOrElse(settings.defaultInstrumentFactory)
- val recorder = _trackedEntities.atomicGetOrElseUpdate(entity, recorderFactory.createRecorder(instrumentFactory)).asInstanceOf[T]
+ val recorder = _trackedEntities.atomicGetOrElseUpdate(entity, recorderFactory.createRecorder(instrumentFactory), _.cleanup).asInstanceOf[T]
+
Some(EntityRegistration(entity, recorder))
} else None
}
def register[T <: EntityRecorder](entity: Entity, recorder: T): EntityRegistration[T] = {
- import TriemapAtomicGetOrElseUpdate.Syntax
- EntityRegistration(entity, _trackedEntities.atomicGetOrElseUpdate(entity, recorder).asInstanceOf[T])
+ _trackedEntities.put(entity, recorder).map { oldRecorder ⇒
+ oldRecorder.cleanup
+ }
+
+ EntityRegistration(entity, recorder)
}
def unregister(entity: Entity): Unit =