diff --git a/locator/abstract_replication_strategy.cc b/locator/abstract_replication_strategy.cc index 38c86d7502..3cd15a44cc 100644 --- a/locator/abstract_replication_strategy.cc +++ b/locator/abstract_replication_strategy.cc @@ -294,8 +294,13 @@ abstract_replication_strategy::get_pending_address_ranges(const token_metadata_p token_metadata temp; temp = co_await tmptr->clone_only_token_map(); co_await temp.update_normal_tokens(pending_tokens, pending_address); - for (auto& x : co_await get_address_ranges(temp, pending_address)) { - ret.push_back(x.second); + for (const auto& t : temp.sorted_tokens()) { + auto eps = co_await calculate_natural_endpoints(t, temp); + if (eps.contains(pending_address)) { + dht::token_range_vector r = temp.get_primary_ranges_for(t); + rslogger.debug("get_pending_address_ranges: token={} primary_range={} endpoint={}", t, r, pending_address); + ret.insert(ret.end(), r.begin(), r.end()); + } } co_await temp.clear_gently(); co_return ret;