Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
repair/repair.cc: do_repair_ranges(): prevent stalls when skipping ra…
…nges We have observed do_repair_ranges() receiving tens of thousands of ranges to repairs on occasion. do_repair_ranges() repairs all ranges in parallel, with parallel_for_each(). This is normally fine, as the lambda inside parallel_for_each() takes a semaphore and this will result in limited concurrency. However, in some instances, it is possible that most of these ranges are skipped. In this case the lambda will become synchronous, only logging a message. This can cause stalls beacuse there are no opportunities to yield. Solve this by adding an explicit yield to prevent this. Fixes: #14330 Closes #15879 (cherry picked from commit 90a8489)
- Loading branch information