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 <bhalevy@scylladb.com>
Message-Id: <20211121090339.3955278-1-bhalevy@scylladb.com>
Message-Id: <20211121102606.76700-1-bhalevy@scylladb.com>
This commit is contained in:
Benny Halevy
2021-11-21 12:26:05 +02:00
committed by Avi Kivity
parent df5ccb8884
commit 9d2631daaf

View File

@@ -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);