diff options
author | Ivan Topolnjak <ivantopo@gmail.com> | 2016-12-24 03:14:29 +0100 |
---|---|---|
committer | Ivan Topolnjak <ivantopo@gmail.com> | 2016-12-24 03:17:06 +0100 |
commit | becf6cac7142011cc478ab7ab15d51799b190951 (patch) | |
tree | ebfe0193f2cecf46cda386188c474135f01c20df /kamon-core/src/main/scala/kamon/trace/TracerModule.scala | |
parent | 68de5a1bd092fc7dddf2045491dd36a353b72a71 (diff) | |
download | Kamon-becf6cac7142011cc478ab7ab15d51799b190951.tar.gz Kamon-becf6cac7142011cc478ab7ab15d51799b190951.tar.bz2 Kamon-becf6cac7142011cc478ab7ab15d51799b190951.zip |
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.
Diffstat (limited to 'kamon-core/src/main/scala/kamon/trace/TracerModule.scala')
-rw-r--r-- | kamon-core/src/main/scala/kamon/trace/TracerModule.scala | 9 |
1 files changed, 4 insertions, 5 deletions
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 |