From 9d2631daaf005bed4d48e5f3da05f9ffda5bdde5 Mon Sep 17 00:00:00 2001 From: Benny Halevy Date: Sun, 21 Nov 2021 12:26:05 +0200 Subject: [PATCH] token_metadata: calculate_pending_ranges_for_leaving: maybe yield We see long stalls as reported in https://github.com/scylladb/scylla/issues/8030#issuecomment-974783526 everywhere_replication_strategy::calculate_natural_endpoints is synchronous and doesn't yield, so add maybe_yield() calls when looping over many token ranges. Refs #8030 Signed-off-by: Benny Halevy Message-Id: <20211121090339.3955278-1-bhalevy@scylladb.com> Message-Id: <20211121102606.76700-1-bhalevy@scylladb.com> --- locator/token_metadata.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/locator/token_metadata.cc b/locator/token_metadata.cc index aba5df13a1..93ad802783 100644 --- a/locator/token_metadata.cc +++ b/locator/token_metadata.cc @@ -824,6 +824,7 @@ void token_metadata_impl::calculate_pending_ranges_for_leaving( for (auto& ep : diff) { new_pending_ranges.emplace(r, ep); } + seastar::thread::maybe_yield(); } metadata.clear_gently().get(); tlogger.debug("In calculate_pending_ranges: affected_ranges.size={} ends", affected_ranges_size);