diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2021-04-15 07:12:51 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2021-04-15 07:12:51 +0000 |
commit | 657873edf0e119be4a9b60dd897737f637f29810 (patch) | |
tree | 99317ff7204b7fb2d6050aab2548aa9e98b8d99a /searchcore | |
parent | ff8ce02e502c31bb0ffa7ef4236746958ca9b90d (diff) |
Use a mutex to allow being called from any thread.
Diffstat (limited to 'searchcore')
-rw-r--r-- | searchcore/src/vespa/searchcore/proton/server/disk_mem_usage_forwarder.cpp | 13 | ||||
-rw-r--r-- | searchcore/src/vespa/searchcore/proton/server/disk_mem_usage_forwarder.h | 2 |
2 files changed, 7 insertions, 8 deletions
diff --git a/searchcore/src/vespa/searchcore/proton/server/disk_mem_usage_forwarder.cpp b/searchcore/src/vespa/searchcore/proton/server/disk_mem_usage_forwarder.cpp index 39716f93bc6..b75e3455162 100644 --- a/searchcore/src/vespa/searchcore/proton/server/disk_mem_usage_forwarder.cpp +++ b/searchcore/src/vespa/searchcore/proton/server/disk_mem_usage_forwarder.cpp @@ -2,7 +2,6 @@ #include "disk_mem_usage_forwarder.h" #include <vespa/vespalib/util/lambdatask.h> -#include <cassert> using vespalib::makeLambdaTask; @@ -14,17 +13,14 @@ DiskMemUsageForwarder::DiskMemUsageForwarder(searchcorespi::index::IThreadServic _executor(executor), _listeners(), _state() -{ -} +{ } -DiskMemUsageForwarder::~DiskMemUsageForwarder() -{ -} +DiskMemUsageForwarder::~DiskMemUsageForwarder() = default; void DiskMemUsageForwarder::addDiskMemUsageListener(IDiskMemUsageListener *listener) { - assert(_executor.isCurrentThread()); + std::lock_guard guard(_lock); _listeners.push_back(listener); listener->notifyDiskMemUsage(_state); } @@ -32,7 +28,7 @@ DiskMemUsageForwarder::addDiskMemUsageListener(IDiskMemUsageListener *listener) void DiskMemUsageForwarder::removeDiskMemUsageListener(IDiskMemUsageListener *listener) { - assert(_executor.isCurrentThread()); + std::lock_guard guard(_lock); for (auto itr = _listeners.begin(); itr != _listeners.end(); ++itr) { if (*itr == listener) { _listeners.erase(itr); @@ -51,6 +47,7 @@ DiskMemUsageForwarder::notifyDiskMemUsage(DiskMemUsageState state) void DiskMemUsageForwarder::forward(DiskMemUsageState state) { + std::lock_guard guard(_lock); if (_state != state) { _state = state; for (const auto &listener : _listeners) { diff --git a/searchcore/src/vespa/searchcore/proton/server/disk_mem_usage_forwarder.h b/searchcore/src/vespa/searchcore/proton/server/disk_mem_usage_forwarder.h index 618b9af91eb..431bbad4675 100644 --- a/searchcore/src/vespa/searchcore/proton/server/disk_mem_usage_forwarder.h +++ b/searchcore/src/vespa/searchcore/proton/server/disk_mem_usage_forwarder.h @@ -6,6 +6,7 @@ #include "i_disk_mem_usage_listener.h" #include <vespa/searchcorespi/index/i_thread_service.h> #include <vector> +#include <mutex> namespace proton { @@ -18,6 +19,7 @@ class DiskMemUsageForwarder : public IDiskMemUsageNotifier, { searchcorespi::index::IThreadService &_executor; std::vector<IDiskMemUsageListener *> _listeners; + std::mutex _lock; DiskMemUsageState _state; void forward(DiskMemUsageState state); public: |