As seen in rebalance test described in MB-57271, a cluster with KV plus other services (FTS and GSI in the above instance) performing a (KV) rebalance can hang if KV requires backfills and all of the available backfill slots (default 4096) are consumed by other services.
For example, it was observed that 4231 streams were attempting to backfill:
Which were made up of:
However given there's only 4096 possible at once, a number of stream were pending (waiting for a slot to become available before they can start):
While we can also look at reducing the number of concurrent streams other services create, Ideally we want a solution such that KV is "defensive" - irrespective of what other services request, it can always make rebalance progress.
|Data Service rebalance duration was significantly impacted if other DCP clients created a large number of Streams, if those streams needed to be read from disk, due to the lack of prioritizing between rebalance and other DCP clients.||The number of backfills each DCP client can perform concurrently has been limited to allow fairer allocation of resources.|