summaryrefslogtreecommitdiffstats
path: root/searchcore
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2023-05-16 07:08:32 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2023-05-16 07:08:32 +0000
commite30e0749182c0e602d7f9cbe2497ec0fdc381f89 (patch)
treeb583997e5882a207b71117336e38b061080864cc /searchcore
parent85724a8604d82d13605af9974828a4c696b8c8ac (diff)
Ensure that we get at least 1 bundle.
Diffstat (limited to 'searchcore')
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/sessionmanager.cpp8
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/sessionmanager.h3
2 files changed, 5 insertions, 6 deletions
diff --git a/searchcore/src/vespa/searchcore/proton/matching/sessionmanager.cpp b/searchcore/src/vespa/searchcore/proton/matching/sessionmanager.cpp
index 8b0af7fed88..b78d638d702 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/sessionmanager.cpp
+++ b/searchcore/src/vespa/searchcore/proton/matching/sessionmanager.cpp
@@ -219,7 +219,7 @@ namespace {
template <typename T>
void
split_and_execute(std::vector<T> tasks, vespalib::ThreadExecutor & executor) {
- size_t num_bundles = std::min(tasks.size(), 2*executor.getNumThreads());
+ size_t num_bundles = std::max(1ul, std::min(tasks.size(), 2*executor.getNumThreads()));
std::vector<std::vector<T>> bundles(num_bundles);
for (size_t i = 0; i < tasks.size(); i++) {
bundles[i%bundles.size()].push_back(std::move(tasks[i]));
@@ -234,10 +234,8 @@ split_and_execute(std::vector<T> tasks, vespalib::ThreadExecutor & executor) {
}
void
SessionManager::pruneTimedOutSessions(vespalib::steady_time currentTime, vespalib::ThreadExecutor & executor) {
- auto groupings = _grouping_cache->stealTimedOutSessions(currentTime);
- auto queries = _search_map->stealTimedOutSessions(currentTime);
- split_and_execute(std::move(groupings), executor);
- split_and_execute(std::move(queries), executor);
+ split_and_execute(_grouping_cache->stealTimedOutSessions(currentTime), executor);
+ split_and_execute(_search_map->stealTimedOutSessions(currentTime), executor);
}
SessionManager::Stats
diff --git a/searchcore/src/vespa/searchcore/proton/matching/sessionmanager.h b/searchcore/src/vespa/searchcore/proton/matching/sessionmanager.h
index 5c881aeb6fd..872f1a90bd1 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/sessionmanager.h
+++ b/searchcore/src/vespa/searchcore/proton/matching/sessionmanager.h
@@ -59,8 +59,9 @@ public:
size_t getNumSearchSessions() const;
std::vector<SearchSessionInfo> getSortedSearchSessionInfo() const;
- void pruneTimedOutSessions(vespalib::steady_time currentTime);
void pruneTimedOutSessions(vespalib::steady_time currentTime, vespalib::ThreadExecutor & executor);
+ // Only used for testing
+ void pruneTimedOutSessions(vespalib::steady_time currentTime);
};
}