diff options
Diffstat (limited to 'metrics')
-rw-r--r-- | metrics/src/vespa/metrics/metricmanager.cpp | 8 | ||||
-rw-r--r-- | metrics/src/vespa/metrics/metricmanager.h | 4 |
2 files changed, 6 insertions, 6 deletions
diff --git a/metrics/src/vespa/metrics/metricmanager.cpp b/metrics/src/vespa/metrics/metricmanager.cpp index 7125446c168..4621c2229b6 100644 --- a/metrics/src/vespa/metrics/metricmanager.cpp +++ b/metrics/src/vespa/metrics/metricmanager.cpp @@ -176,7 +176,7 @@ MetricManager::init(const config::ConfigUri & uri, FastOS_ThreadPool& pool, // Wait for first iteration to have completed, such that it is safe // to access snapshots afterwards. vespalib::MonitorGuard sync(_waiter); - while (_lastProcessedTime == 0) { + while (_lastProcessedTime.load(std::memory_order_relaxed) == 0) { sync.wait(1); } } else { @@ -863,10 +863,10 @@ MetricManager::tick(const MetricLockGuard & guard, time_t currentTime) } _forceEventLogging = false; } - _lastProcessedTime = (nextWorkTime <= currentTime ? nextWorkTime - : currentTime); + _lastProcessedTime.store(nextWorkTime <= currentTime ? nextWorkTime : currentTime, + std::memory_order_relaxed); LOG(spam, "Worker thread done with processing for time %" PRIu64 ".", - _lastProcessedTime); + _lastProcessedTime.load(std::memory_order_relaxed)); time_t next = std::min( _logPeriod.second, _snapshots[0]->getPeriod() + _snapshots[0]->getToTime()); diff --git a/metrics/src/vespa/metrics/metricmanager.h b/metrics/src/vespa/metrics/metricmanager.h index ec166529b94..4089236ca48 100644 --- a/metrics/src/vespa/metrics/metricmanager.h +++ b/metrics/src/vespa/metrics/metricmanager.h @@ -111,7 +111,7 @@ private: std::vector<MetricSnapshotSet::SP> _snapshots; MetricSnapshot::SP _totalMetrics; std::unique_ptr<Timer> _timer; - time_t _lastProcessedTime; + std::atomic<time_t> _lastProcessedTime; bool _forceEventLogging; // Should be added to config, but wont now due to problems with // upgrading @@ -262,7 +262,7 @@ public: void checkMetricsAltered(const MetricLockGuard &); /** Used by unit tests to verify that we have processed for a given time. */ - time_t getLastProcessedTime() const { return _lastProcessedTime; } + time_t getLastProcessedTime() const { return _lastProcessedTime.load(std::memory_order_relaxed); } /** Used by unit tests to wake waiters after altering time. */ void timeChangedNotification() const; |