diff --git a/sdk/include/opentelemetry/sdk/metrics/meter_context.h b/sdk/include/opentelemetry/sdk/metrics/meter_context.h index e35700175d5..c7197fd18b6 100644 --- a/sdk/include/opentelemetry/sdk/metrics/meter_context.h +++ b/sdk/include/opentelemetry/sdk/metrics/meter_context.h @@ -125,6 +125,7 @@ class MeterContext : public std::enable_shared_from_this std::atomic_flag shutdown_latch_ = ATOMIC_FLAG_INIT; opentelemetry::common::SpinLockMutex forceflush_lock_; + opentelemetry::common::SpinLockMutex storage_lock_; }; } // namespace metrics diff --git a/sdk/src/metrics/meter_context.cc b/sdk/src/metrics/meter_context.cc index 346b1dce298..8c7abd97e95 100644 --- a/sdk/src/metrics/meter_context.cc +++ b/sdk/src/metrics/meter_context.cc @@ -31,6 +31,7 @@ ViewRegistry *MeterContext::GetViewRegistry() const noexcept nostd::span> MeterContext::GetMeters() noexcept { + std::lock_guard guard(storage_lock_); return nostd::span>{meters_}; } @@ -59,6 +60,7 @@ void MeterContext::AddView(std::unique_ptr instrument_select void MeterContext::AddMeter(std::shared_ptr meter) { + std::lock_guard guard(storage_lock_); meters_.push_back(meter); }