Skip to content

Commit f78da72

Browse files
author
Ignacio Bonafonte
authored
Merge pull request #388 from nachoBonafonte/fix-metrics-thread-races
Fix potential thread race conditions that can happen if creating metrics while reporting.
2 parents 9951cad + 12f3b4f commit f78da72

File tree

5 files changed

+172
-180
lines changed

5 files changed

+172
-180
lines changed

Examples/OTLP Exporter/main.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,8 @@ let meterProvider = MeterProviderSdk(metricProcessor: processor, metricExporter:
8989
OpenTelemetry.registerMeterProvider(meterProvider: meterProvider)
9090

9191

92+
let labels1 = ["dim1": "value1"]
93+
9294
var meter = meterProvider.get(instrumentationName: "otlp_example_meter'")
9395
var exampleCounter = meter.createIntCounter(name: "otlp_example_counter")
9496
var exampleMeasure = meter.createIntMeasure(name: "otlp_example_measure")
@@ -100,11 +102,9 @@ var exampleObserver = meter.createIntObserver(name: "otlp_example_observation")
100102
task_info(mach_task_self_, task_flavor_t(MACH_TASK_BASIC_INFO), $0, &count)
101103
}
102104
}
103-
labels1 = ["dim1": "value1"]
104105
observer.observe(value: Int(taskInfo.resident_size), labels: labels1)
105106
}
106107

107-
var labels1 = ["dim1": "value1"]
108108
for _ in 1...3000 {
109109
exampleCounter.add(value: 1, labelset: meter.getLabelSet(labels: labels1))
110110
exampleMeasure.record(value: 100, labelset: meter.getLabelSet(labels: labels1))

Sources/OpenTelemetrySdk/Metrics/CounterMetricSdkBase.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import Foundation
77
import OpenTelemetryApi
88

99
class CounterMetricSdkBase<T>: CounterMetric {
10-
private let bindUnbindLock = Lock()
10+
let bindUnbindLock = Lock()
1111
public private(set) var boundInstruments = [LabelSet: BoundCounterMetricSdkBase<T>]()
1212
let metricName: String
1313

0 commit comments

Comments
 (0)