From f072a5d0818254cdd2f5941c5ef9d462f8dcdb2b Mon Sep 17 00:00:00 2001 From: Ivan Topolnjak Date: Mon, 26 Jan 2015 19:50:33 +0100 Subject: ! core: ensure that the subscriptions dispatcher is correctly started --- kamon-core/src/main/scala/kamon/ModuleSupervisor.scala | 3 ++- kamon-core/src/main/scala/kamon/metric/MetricsExtension.scala | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) (limited to 'kamon-core') diff --git a/kamon-core/src/main/scala/kamon/ModuleSupervisor.scala b/kamon-core/src/main/scala/kamon/ModuleSupervisor.scala index 99d87719..7e82f80a 100644 --- a/kamon-core/src/main/scala/kamon/ModuleSupervisor.scala +++ b/kamon-core/src/main/scala/kamon/ModuleSupervisor.scala @@ -21,7 +21,7 @@ trait ModuleSupervisorExtension extends actor.Extension { class ModuleSupervisorExtensionImpl(system: ExtendedActorSystem) extends ModuleSupervisorExtension { import system.dispatcher - private lazy val supervisor = system.actorOf(Props[ModuleSupervisor], "kamon") + private val supervisor = system.actorOf(Props[ModuleSupervisor], "kamon") def createModule(name: String, props: Props): Future[ActorRef] = Future {} flatMap { _: Unit ⇒ val modulePromise = Promise[ActorRef]() @@ -37,6 +37,7 @@ class ModuleSupervisor extends Actor with ActorLogging { } def createChildModule(name: String, props: Props, childPromise: Promise[ActorRef]): Unit = { + context.child(name).map { alreadyAvailableModule ⇒ log.warning("Received a request to create module [{}] but the module is already available, returning the existent one.") childPromise.complete(Success(alreadyAvailableModule)) diff --git a/kamon-core/src/main/scala/kamon/metric/MetricsExtension.scala b/kamon-core/src/main/scala/kamon/metric/MetricsExtension.scala index b738eeb9..0b7fc7f2 100644 --- a/kamon-core/src/main/scala/kamon/metric/MetricsExtension.scala +++ b/kamon-core/src/main/scala/kamon/metric/MetricsExtension.scala @@ -70,7 +70,7 @@ class MetricsExtensionImpl(system: ExtendedActorSystem) extends MetricsExtension private val _trackedEntities = TrieMap.empty[Entity, EntityRecorder] private val _collectionContext = buildDefaultCollectionContext private val _metricsCollectionDispatcher = system.dispatchers.lookup(settings.metricCollectionDispatcher) - private val _subscriptions = ModuleSupervisor.get(system).createModule("subscriptions-dispatcher", + private lazy val _subscriptions = ModuleSupervisor.get(system).createModule("subscriptions-dispatcher", SubscriptionsDispatcher.props(settings.tickInterval, collectSnapshots).withDispatcher(settings.metricCollectionDispatcher)) def shouldTrack(entity: Entity): Boolean = -- cgit v1.2.3