summaryrefslogtreecommitdiffstats
path: root/storage/src
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@broadpark.no>2021-01-20 16:07:51 +0100
committerTor Egge <Tor.Egge@broadpark.no>2021-01-20 16:07:51 +0100
commitb7b4ea6be255e191d0859f4a1c10b5523ada595a (patch)
treebb58095d900faf1f06c713a57ecaa3bcfa33e11d /storage/src
parent46dbd61785b4ecc8fb37d4f3081bbcdd73fe2c54 (diff)
Clear vector of controllers that have observed explicit node state
when requesting almost immediate replies.
Diffstat (limited to 'storage/src')
-rw-r--r--storage/src/vespa/storage/storageserver/statemanager.cpp15
-rw-r--r--storage/src/vespa/storage/storageserver/statemanager.h2
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