diff options
author | Tor Egge <Tor.Egge@broadpark.no> | 2021-01-20 16:07:51 +0100 |
---|---|---|
committer | Tor Egge <Tor.Egge@broadpark.no> | 2021-01-20 16:07:51 +0100 |
commit | b7b4ea6be255e191d0859f4a1c10b5523ada595a (patch) | |
tree | bb58095d900faf1f06c713a57ecaa3bcfa33e11d /storage | |
parent | 46dbd61785b4ecc8fb37d4f3081bbcdd73fe2c54 (diff) |
Clear vector of controllers that have observed explicit node state
when requesting almost immediate replies.
Diffstat (limited to 'storage')
-rw-r--r-- | storage/src/vespa/storage/storageserver/statemanager.cpp | 15 | ||||
-rw-r--r-- | storage/src/vespa/storage/storageserver/statemanager.h | 2 |
2 files changed, 12 insertions, 5 deletions
diff --git a/storage/src/vespa/storage/storageserver/statemanager.cpp b/storage/src/vespa/storage/storageserver/statemanager.cpp index 34401a43f4e..f2b23724c98 100644 --- a/storage/src/vespa/storage/storageserver/statemanager.cpp +++ b/storage/src/vespa/storage/storageserver/statemanager.cpp @@ -642,19 +642,24 @@ StateManager::getNodeInfo() const return json.str(); } +void +StateManager::clear_controllers_observed_explicit_node_state_vector() +{ + std::lock_guard guard(_stateLock); + // Next GetNodeState request from any controller will be replied to instantly + _controllers_observed_explicit_node_state.clear(); +} + void StateManager::immediately_send_get_node_state_replies() { LOG(debug, "Immediately replying to all pending GetNodeState requests"); - { - std::lock_guard guard(_stateLock); - // Next GetNodeState request from any controller will be replied to instantly - _controllers_observed_explicit_node_state.clear(); - } + clear_controllers_observed_explicit_node_state_vector(); sendGetNodeStateReplies(); } void StateManager::request_almost_immediate_node_state_replies() { + clear_controllers_observed_explicit_node_state_vector(); std::unique_lock guard(_threadLock); _requested_almost_immediate_node_state_replies.store(true, std::memory_order_relaxed); _threadCond.notify_all(); diff --git a/storage/src/vespa/storage/storageserver/statemanager.h b/storage/src/vespa/storage/storageserver/statemanager.h index 57681119b6f..9f2853456e5 100644 --- a/storage/src/vespa/storage/storageserver/statemanager.h +++ b/storage/src/vespa/storage/storageserver/statemanager.h @@ -147,6 +147,8 @@ private: std::string getNodeInfo() const; void run(framework::ThreadHandle&) override; + + void clear_controllers_observed_explicit_node_state_vector(); }; } // storage |