diff options
author | Tor Egge <Tor.Egge@online.no> | 2023-03-16 12:59:50 +0100 |
---|---|---|
committer | Tor Egge <Tor.Egge@online.no> | 2023-03-16 12:59:50 +0100 |
commit | e8e2edd01eb67d0ab9d6ccf84b575e4e11c86c50 (patch) | |
tree | b62e99ef019ecf1be2b398349e67497c6214d7a2 /storage | |
parent | 9ec2f1a8888610e961ba4c6894abb096a8373850 (diff) |
Add locking for reported node state in TestNodeStateUpdater.
Diffstat (limited to 'storage')
-rw-r--r-- | storage/src/tests/common/testnodestateupdater.cpp | 3 | ||||
-rw-r--r-- | storage/src/tests/common/testnodestateupdater.h | 4 |
2 files changed, 5 insertions, 2 deletions
diff --git a/storage/src/tests/common/testnodestateupdater.cpp b/storage/src/tests/common/testnodestateupdater.cpp index eeecf66995a..227d5ee8512 100644 --- a/storage/src/tests/common/testnodestateupdater.cpp +++ b/storage/src/tests/common/testnodestateupdater.cpp @@ -7,7 +7,8 @@ namespace storage { TestNodeStateUpdater::TestNodeStateUpdater(const lib::NodeType& type) - : _reported(new lib::NodeState(type, lib::State::UP)), + : _mutex(), + _reported(new lib::NodeState(type, lib::State::UP)), _current(new lib::NodeState(type, lib::State::UP)), _clusterStateBundle(std::make_shared<const lib::ClusterStateBundle>(lib::ClusterState())), _listeners(), diff --git a/storage/src/tests/common/testnodestateupdater.h b/storage/src/tests/common/testnodestateupdater.h index 6737ff4ebeb..eabb38358a4 100644 --- a/storage/src/tests/common/testnodestateupdater.h +++ b/storage/src/tests/common/testnodestateupdater.h @@ -18,6 +18,7 @@ namespace storage { struct TestNodeStateUpdater : public NodeStateUpdater { + mutable std::mutex _mutex; lib::NodeState::CSP _reported; lib::NodeState::CSP _current; std::shared_ptr<const lib::ClusterStateBundle> _clusterStateBundle; @@ -29,13 +30,14 @@ public: explicit TestNodeStateUpdater(const lib::NodeType& type); ~TestNodeStateUpdater() override; - lib::NodeState::CSP getReportedNodeState() const override { return _reported; } + lib::NodeState::CSP getReportedNodeState() const override { std::lock_guard guard(_mutex); return _reported; } lib::NodeState::CSP getCurrentNodeState() const override { return _current; } std::shared_ptr<const lib::ClusterStateBundle> getClusterStateBundle() const override; void addStateListener(StateListener& s) override { _listeners.push_back(&s); } void removeStateListener(StateListener&) override {} Lock::SP grabStateChangeLock() override { return std::make_shared<Lock>(); } void setReportedNodeState(const lib::NodeState& state) override { + std::lock_guard guard(_mutex); _reported = std::make_shared<lib::NodeState>(state); } void immediately_send_get_node_state_replies() override { |