diff options
author | Tor Egge <Tor.Egge@online.no> | 2022-12-06 13:50:22 +0100 |
---|---|---|
committer | Tor Egge <Tor.Egge@online.no> | 2022-12-06 13:50:22 +0100 |
commit | 2e0d3a915283b98e86a9b5a2cb76a8d53f672f6a (patch) | |
tree | d570b48c100d95a2d16f2f0bb76404654721c1a3 /searchcore | |
parent | b01ebe82c392cd08c2cfe736049ad3d61d91e2b5 (diff) |
Wait for load done before providing transient resource usage.
Diffstat (limited to 'searchcore')
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 |