Skip to content

Commit

Permalink
Bugfix: Print correct error message if bootstrap is called multiple t…
Browse files Browse the repository at this point in the history
…imes (#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.
  • Loading branch information
cpriebe authored Feb 10, 2020
1 parent aa197a1 commit f1514a4
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion Sources/CoreMetrics/Metrics.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
Expand Down

0 comments on commit f1514a4

Please sign in to comment.