summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2022-09-13 10:44:31 +0200
committerGitHub <noreply@github.com>2022-09-13 10:44:31 +0200
commit41be79518e5ce5f84c961c637162d527481e9ee0 (patch)
tree7f547494a362beea1d84079fdf74b7365597d4b6
parentcf494ca75f3dc3bd66ef90a8438a20a5dd447452 (diff)
parentf4256d325656ba39f7dff5b5b7faece18a261641 (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.
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/documentdb.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/documentdb.h14
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/proton.cpp16
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/proton.h2
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();