From 46c9e3032d64f3545ec7af7142524edb79fa3fa1 Mon Sep 17 00:00:00 2001 From: Benny Halevy Date: Thu, 3 Aug 2023 07:53:47 +0300 Subject: [PATCH] storage_service: get_all_ranges: reserve enough space in ranges Commit bc5f6cf45dfd006fe1747f748339a6ed227d28d7 added a reserve call to the `ranges` vector before inserting all the returned token ranges into it. However, that reservation is too small as we need to express size+1 ranges for size tokens with and ranges at the front and back, respectively. Fixes #14849 Signed-off-by: Benny Halevy Closes #14938 --- service/storage_service.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/service/storage_service.cc b/service/storage_service.cc index 62cfd63130..7e014e992d 100644 --- a/service/storage_service.cc +++ b/service/storage_service.cc @@ -6078,7 +6078,7 @@ storage_service::get_all_ranges(const std::vector& sorted_tokens) const { co_return dht::token_range_vector(); int size = sorted_tokens.size(); dht::token_range_vector ranges; - ranges.reserve(size); + ranges.reserve(size + 1); ranges.push_back(dht::token_range::make_ending_with(range_bound(sorted_tokens[0], true))); co_await coroutine::maybe_yield(); for (int i = 1; i < size; ++i) {