From becf6cac7142011cc478ab7ab15d51799b190951 Mon Sep 17 00:00:00 2001 From: Ivan Topolnjak Date: Sat, 24 Dec 2016 03:14:29 +0100 Subject: allow restarting Kamon in the same process. taking some ideas from #395, this commit removes ConfigProviders and allows Kamon to be used in "permissive" mode until it gets started. --- kamon-core/src/main/scala/kamon/trace/TracerModule.scala | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'kamon-core/src/main/scala/kamon/trace/TracerModule.scala') diff --git a/kamon-core/src/main/scala/kamon/trace/TracerModule.scala b/kamon-core/src/main/scala/kamon/trace/TracerModule.scala index b7b6c17a..552962eb 100644 --- a/kamon-core/src/main/scala/kamon/trace/TracerModule.scala +++ b/kamon-core/src/main/scala/kamon/trace/TracerModule.scala @@ -117,14 +117,12 @@ object Tracer { } private[kamon] class TracerModuleImpl(metricsExtension: MetricsModule, config: Config) extends TracerModule { - private val _settings = TraceSettings(config) + @volatile private var _settings = TraceSettings(config) private val _subscriptions = new LazyActorRef private val _incubator = new LazyActorRef - private val _dynamic = new akka.actor.ReflectiveDynamicAccess(getClass.getClassLoader) - private val _tokenGenerator = _dynamic.createInstanceFor[() ⇒ String](_settings.tokenGeneratorFQN, Nil).get // let's bubble up any problems. - private def newToken: String = _tokenGenerator() + private def newToken: String = _settings.tokenGenerator() def newContext(name: String): TraceContext = createTraceContext(name, None) @@ -180,7 +178,8 @@ private[kamon] class TracerModuleImpl(metricsExtension: MetricsModule, config: C _incubator.point(_system.actorOf(Incubator.props(subscriptions))) } - def start(system: ActorSystem): Unit = synchronized { + def start(system: ActorSystem, newConfig: Config): Unit = synchronized { + _settings = TraceSettings(newConfig) _system = system _logger = Logging(_system, "TracerModule") _start -- cgit v1.2.3