diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2023-05-16 07:08:32 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2023-05-16 07:08:32 +0000 |
commit | e30e0749182c0e602d7f9cbe2497ec0fdc381f89 (patch) | |
tree | b583997e5882a207b71117336e38b061080864cc /searchcore | |
parent | 85724a8604d82d13605af9974828a4c696b8c8ac (diff) |
Ensure that we get at least 1 bundle.
Diffstat (limited to 'searchcore')
-rw-r--r-- | searchcore/src/vespa/searchcore/proton/matching/sessionmanager.cpp | 8 | ||||
-rw-r--r-- | searchcore/src/vespa/searchcore/proton/matching/sessionmanager.h | 3 |
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); }; } |