Bugfix: Print correct error message if bootstrap is called multiple times (#57)
MetricsSystem.bootstrap verifies that the metric system has not been previously initialized. Otherwise it should fail with a corresponding error message. The precondition error message includes the name of the currently used factory and for that accesses self.factory. However, because bootstrap already holds self.lock as a writer lock, self.factory fails to get it as a reader and crashes with a less useful precondition error message. This commit ensures that the correct error message is printed.
This commit is contained in:
parent
aa197a1c15
commit
f1514a4c74
|
|
@ -346,7 +346,7 @@ public enum MetricsSystem {
|
|||
/// - factory: A factory that given an identifier produces instances of metrics handlers such as `CounterHandler`, `RecorderHandler` and `TimerHandler`.
|
||||
public static func bootstrap(_ factory: MetricsFactory) {
|
||||
self.lock.withWriterLock {
|
||||
precondition(!self.initialized, "metrics system can only be initialized once per process. currently used factory: \(self.factory)")
|
||||
precondition(!self.initialized, "metrics system can only be initialized once per process. currently used factory: \(self._factory)")
|
||||
self._factory = factory
|
||||
self.initialized = true
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue