diff options
author | Geir Storli <geirst@yahooinc.com> | 2022-12-06 16:03:13 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-12-06 16:03:13 +0100 |
commit | c36a4c0566cf4f1ee75228687aa6fe1a977e1a7e (patch) | |
tree | dfbffe77d884a36c53da798ce8744426bac3fd64 /searchcore/src | |
parent | 3d4d7645221a7ca7ddba0191a8e11a97924736dc (diff) | |
parent | 2e0d3a915283b98e86a9b5a2cb76a8d53f672f6a (diff) |
Merge pull request #25132 from vespa-engine/toregge/wait-for-load-done-before-providing-transient-resource-usage
Wait for load done before providing transient resource usage.
Diffstat (limited to 'searchcore/src')
3 files changed, 6 insertions, 2 deletions
diff --git a/searchcore/src/vespa/searchcore/proton/server/ddbstate.h b/searchcore/src/vespa/searchcore/proton/server/ddbstate.h index 5961ac4da62..20c0799c243 100644 --- a/searchcore/src/vespa/searchcore/proton/server/ddbstate.h +++ b/searchcore/src/vespa/searchcore/proton/server/ddbstate.h @@ -49,7 +49,7 @@ private: static std::vector<vespalib::string> _stateNames; static std::vector<vespalib::string> _configStateNames; - void set_state(State state) noexcept { _state.store(state, std::memory_order_relaxed); } + void set_state(State state) noexcept { _state.store(state, std::memory_order_release); } public: DDBState(); @@ -67,7 +67,7 @@ public: bool enterOnlineState(); void enterShutdownState(); void enterDeadState(); - State getState() const noexcept { return _state.load(std::memory_order_relaxed); } + State getState() const noexcept { return _state.load(std::memory_order_acquire); } static vespalib::string getStateString(State state); bool getClosed() const noexcept { diff --git a/searchcore/src/vespa/searchcore/proton/server/documentdb.cpp b/searchcore/src/vespa/searchcore/proton/server/documentdb.cpp index 27a2db27369..6cd1a4ec728 100644 --- a/searchcore/src/vespa/searchcore/proton/server/documentdb.cpp +++ b/searchcore/src/vespa/searchcore/proton/server/documentdb.cpp @@ -113,6 +113,9 @@ public: TransientResourceUsage get_transient_resource_usage() const override { // Transient disk usage is measured as the total disk usage of all current fusion indexes. // Transient memory usage is measured as the total memory usage of all memory indexes. + if (!_doc_db.get_state().get_load_done()) { + return {0, 0}; + } auto stats = _doc_db.getReadySubDB()->getSearchableStats(); return {stats.fusion_size_on_disk(), stats.memoryUsage().allocatedBytes()}; } diff --git a/searchcore/src/vespa/searchcore/proton/server/documentdb.h b/searchcore/src/vespa/searchcore/proton/server/documentdb.h index ef885113079..29a25069367 100644 --- a/searchcore/src/vespa/searchcore/proton/server/documentdb.h +++ b/searchcore/src/vespa/searchcore/proton/server/documentdb.h @@ -422,6 +422,7 @@ public: ExecutorThreadingService & getWriteService() { return _writeService; } void set_attribute_usage_listener(std::unique_ptr<IAttributeUsageListener> listener); + const DDBState& get_state() const noexcept { return _state; } }; } // namespace proton |