aboutsummaryrefslogtreecommitdiffstats
path: root/storage
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@online.no>2023-03-16 12:59:50 +0100
committerTor Egge <Tor.Egge@online.no>2023-03-16 12:59:50 +0100
commite8e2edd01eb67d0ab9d6ccf84b575e4e11c86c50 (patch)
treeb62e99ef019ecf1be2b398349e67497c6214d7a2 /storage
parent9ec2f1a8888610e961ba4c6894abb096a8373850 (diff)
Add locking for reported node state in TestNodeStateUpdater.
Diffstat (limited to 'storage')
-rw-r--r--storage/src/tests/common/testnodestateupdater.cpp3
-rw-r--r--storage/src/tests/common/testnodestateupdater.h4
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 {