diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2023-10-25 17:45:30 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-10-25 17:45:30 +0200 |
commit | 1b705748a73ba67ede8d33fcb7372544cbbd2dc2 (patch) | |
tree | 9275120e499353db6eb6ee83d4a22f3dec4dc865 /storage/src | |
parent | 94c83b05b11fcc0df6d60a88393c93ad78db0ce2 (diff) | |
parent | 9633e7eab41bde2dba7083af4846b754e661fd0c (diff) |
Merge pull request #29098 from vespa-engine/vekterli/print-state-inside-lock
Print Bouncer state within lock to ensure visibility
Diffstat (limited to 'storage/src')
-rw-r--r-- | storage/src/vespa/storage/storageserver/bouncer.cpp | 5 | ||||
-rw-r--r-- | storage/src/vespa/storage/storageserver/bouncer.h | 16 |
2 files changed, 11 insertions, 10 deletions
diff --git a/storage/src/vespa/storage/storageserver/bouncer.cpp b/storage/src/vespa/storage/storageserver/bouncer.cpp index 7e3b21ef33a..bfc38e0c8ba 100644 --- a/storage/src/vespa/storage/storageserver/bouncer.cpp +++ b/storage/src/vespa/storage/storageserver/bouncer.cpp @@ -47,6 +47,7 @@ Bouncer::print(std::ostream& out, bool verbose, const std::string& indent) const { (void) verbose; (void) indent; + std::lock_guard guard(_lock); out << "Bouncer(" << _baselineNodeState << ")"; } @@ -343,9 +344,9 @@ void Bouncer::handleNewState() noexcept { std::lock_guard lock(_lock); - const auto reportedNodeState = *_component.getStateUpdater().getReportedNodeState(); + const auto reportedNodeState = *_component.getStateUpdater().getReportedNodeState(); const auto clusterStateBundle = _component.getStateUpdater().getClusterStateBundle(); - const auto &clusterState = *clusterStateBundle->getBaselineClusterState(); + const auto& clusterState = *clusterStateBundle->getBaselineClusterState(); _clusterState = &clusterState.getClusterState(); const lib::Node node(_component.getNodeType(), _component.getIndex()); _baselineNodeState = deriveNodeState(reportedNodeState, clusterState.getNodeState(node)); diff --git a/storage/src/vespa/storage/storageserver/bouncer.h b/storage/src/vespa/storage/storageserver/bouncer.h index 44c7a16f3dc..26282625269 100644 --- a/storage/src/vespa/storage/storageserver/bouncer.h +++ b/storage/src/vespa/storage/storageserver/bouncer.h @@ -27,16 +27,16 @@ class Bouncer : public StorageLink, private StateListener { using StorBouncerConfig = vespa::config::content::core::StorBouncerConfig; + using BucketSpaceNodeStateMapping = std::unordered_map<document::BucketSpace, lib::NodeState, document::BucketSpace::hash>; std::unique_ptr<StorBouncerConfig> _config; - StorageComponent _component; - std::mutex _lock; - lib::NodeState _baselineNodeState; - using BucketSpaceNodeStateMapping = std::unordered_map<document::BucketSpace, lib::NodeState, document::BucketSpace::hash>; - BucketSpaceNodeStateMapping _derivedNodeStates; - const lib::State* _clusterState; - std::unique_ptr<BouncerMetrics> _metrics; - bool _closed; + StorageComponent _component; + mutable std::mutex _lock; + lib::NodeState _baselineNodeState; + BucketSpaceNodeStateMapping _derivedNodeStates; + const lib::State* _clusterState; + std::unique_ptr<BouncerMetrics> _metrics; + bool _closed; public: Bouncer(StorageComponentRegister& compReg, const StorBouncerConfig& bootstrap_config); |