aboutsummaryrefslogtreecommitdiffstats
path: root/metrics
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2020-10-14 20:41:38 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2020-10-14 20:41:38 +0000
commit234a26fb4642f8909e699f9d921d8abc149c63ab (patch)
tree90a8a6c045f6ceb2ac5f4da113e1bb1bab597afb /metrics
parent34701ddb6dcc23aa0adf3e18fe474959200431d0 (diff)
Hold lock when signalling.
Diffstat (limited to 'metrics')
-rw-r--r--metrics/src/vespa/metrics/metricmanager.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/metrics/src/vespa/metrics/metricmanager.cpp b/metrics/src/vespa/metrics/metricmanager.cpp
index c3539452e81..51149cf67c3 100644
--- a/metrics/src/vespa/metrics/metricmanager.cpp
+++ b/metrics/src/vespa/metrics/metricmanager.cpp
@@ -98,7 +98,10 @@ MetricManager::stop()
return; // Let stop() be idempotent.
}
Runnable::stop();
- _cond.notify_all();
+ {
+ MetricLockGuard sync(_waiter);
+ _cond.notify_all();
+ }
join();
}
@@ -643,6 +646,7 @@ MetricManager::getMetricSnapshotSet(const MetricLockGuard& l,
void
MetricManager::timeChangedNotification() const
{
+ MetricLockGuard sync(_waiter);
_cond.notify_all();
}
@@ -714,6 +718,7 @@ MetricManager::forceEventLogging()
{
LOG(debug, "Forcing event logging to happen.");
// Ensure background thread is not in a current cycle during change.
+ MetricLockGuard sync(_waiter);
_cond.notify_all();
}