diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2022-09-13 10:44:31 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-09-13 10:44:31 +0200 |
commit | 41be79518e5ce5f84c961c637162d527481e9ee0 (patch) | |
tree | 7f547494a362beea1d84079fdf74b7365597d4b6 | |
parent | cf494ca75f3dc3bd66ef90a8438a20a5dd447452 (diff) | |
parent | f4256d325656ba39f7dff5b5b7faece18a261641 (diff) |
Merge pull request #24027 from vespa-engine/balder/use-dedicated-struct-instead-of-std-pair
Add simple struct to keep semantics of active/target_active intact.
4 files changed, 22 insertions, 12 deletions
diff --git a/searchcore/src/vespa/searchcore/proton/server/documentdb.cpp b/searchcore/src/vespa/searchcore/proton/server/documentdb.cpp index d9984f06ece..1df2f405e02 100644 --- a/searchcore/src/vespa/searchcore/proton/server/documentdb.cpp +++ b/searchcore/src/vespa/searchcore/proton/server/documentdb.cpp @@ -621,7 +621,7 @@ DocumentDB::getNumDocs() const } } -std::pair<size_t, size_t> +ActiveDocs DocumentDB::getNumActiveDocs() const { if (_state.get_load_done()) { diff --git a/searchcore/src/vespa/searchcore/proton/server/documentdb.h b/searchcore/src/vespa/searchcore/proton/server/documentdb.h index 9d7e98e0db4..39efdd11619 100644 --- a/searchcore/src/vespa/searchcore/proton/server/documentdb.h +++ b/searchcore/src/vespa/searchcore/proton/server/documentdb.h @@ -57,6 +57,18 @@ struct MetricsWireService; namespace matching { class SessionManager; } +struct ActiveDocs { + ActiveDocs() noexcept : active(0), target_active(0) { } + ActiveDocs(size_t active_in, size_t target_active_in) noexcept : active(active_in), target_active(target_active_in) { } + ActiveDocs & operator += (const ActiveDocs & b) { + active += b.active; + target_active += b.target_active; + return *this; + } + size_t active; + size_t target_active; +}; + /** * The document database contains all the necessary structures required per * document type. It has an internal single-threaded Executor to process input @@ -302,7 +314,7 @@ public: * * @return The active and target-active document count. */ - std::pair<size_t, size_t> getNumActiveDocs() const; + ActiveDocs getNumActiveDocs() const; /** * Returns the base directory that this document database uses when diff --git a/searchcore/src/vespa/searchcore/proton/server/proton.cpp b/searchcore/src/vespa/searchcore/proton/server/proton.cpp index 51e131d5548..e5498a62836 100644 --- a/searchcore/src/vespa/searchcore/proton/server/proton.cpp +++ b/searchcore/src/vespa/searchcore/proton/server/proton.cpp @@ -536,17 +536,15 @@ size_t Proton::getNumDocs() const return numDocs; } -std::pair<size_t, size_t> +ActiveDocs Proton::getNumActiveDocs() const { - size_t activeDocs(0), targetActiveDocs(0); + ActiveDocs sum; std::shared_lock<std::shared_mutex> guard(_mutex); for (const auto &kv : _documentDBMap) { - const auto & docs = kv.second->getNumActiveDocs(); - activeDocs += docs.first; - targetActiveDocs += docs.second; + sum += kv.second->getNumActiveDocs(); } - return {activeDocs, targetActiveDocs}; + return sum; } search::engine::SearchServer & @@ -729,9 +727,9 @@ Proton::ping(std::unique_ptr<MonitorRequest>, MonitorClient &) ret.distribution_key = protonConfig.distributionkey; if (_matchEngine->isOnline()) { ret.timestamp = 42; - auto [active, targetActive] = getNumActiveDocs(); - ret.activeDocs = active; - ret.targetActiveDocs = targetActive; + auto docs = getNumActiveDocs(); + ret.activeDocs = docs.active; + ret.targetActiveDocs = docs.target_active; } else { ret.timestamp = 0; ret.activeDocs = 0; diff --git a/searchcore/src/vespa/searchcore/proton/server/proton.h b/searchcore/src/vespa/searchcore/proton/server/proton.h index 4c4bf87ee8e..e97764ae32c 100644 --- a/searchcore/src/vespa/searchcore/proton/server/proton.h +++ b/searchcore/src/vespa/searchcore/proton/server/proton.h @@ -198,7 +198,7 @@ public: size_t getNumDocs() const; // Active (searchable), and targetActive that will be searchable when idealstate is reached - std::pair<size_t, size_t> getNumActiveDocs() const; + ActiveDocs getNumActiveDocs() const; search::engine::SearchServer &get_search_server(); search::engine::DocsumServer &get_docsum_server(); |