diff --git a/Sources/Prometheus/MetricTypes/Summary.swift b/Sources/Prometheus/MetricTypes/Summary.swift index 05e0723..8bfcc58 100644 --- a/Sources/Prometheus/MetricTypes/Summary.swift +++ b/Sources/Prometheus/MetricTypes/Summary.swift @@ -139,7 +139,8 @@ public class PromSummary: P // Updated for SwiftMetrics 2.0 to be unit agnostic if displayUnit is set or default to nanoseconds. private func format(_ v: Double) -> Double { - let displayUnitScale = self.displayUnit?.scaleFromNanoseconds ?? 1 + let displayUnit = lock.withLock { self.displayUnit } + let displayUnitScale = displayUnit?.scaleFromNanoseconds ?? 1 return v / Double(displayUnitScale) } diff --git a/Tests/SwiftPrometheusTests/SummaryTests.swift b/Tests/SwiftPrometheusTests/SummaryTests.swift index 0b6a7b0..bedb116 100644 --- a/Tests/SwiftPrometheusTests/SummaryTests.swift +++ b/Tests/SwiftPrometheusTests/SummaryTests.swift @@ -36,7 +36,8 @@ final class SummaryTests: XCTestCase { func testSummary() { let summary = Timer(label: "my_summary") - + summary.handler.preferDisplayUnit(.nanoseconds) + summary.recordNanoseconds(1) summary.recordNanoseconds(2) summary.recordNanoseconds(4)