Detail
As per the configuration reference for max-recoveries-interleaved , "[b]y default, all the partitions pending recovery completion will be recovered partially in each round in round robin fashion," but it doesn't describe how this is implemented.Answer
Each partition in the list of partitions being worked on (all 4096 by default, or fewer if max-recoveries-interleaved is set to a non-zero value) is scanned one at a time and the records that meet the criteria for shipping are put into a queue of ship-requests, until that queue is 1000 records deep. At that point, the scan of that partition is halted and the recovery thread moves on to the next one, wrapping around when it reaches the end of the list.The value of 1000 is not configurable, but usually works well. However, in the corner case where shipping is very fast and scans are very slow (eg, a namespace with index-type flash), it's possible that the queue will never reach the threshold of 1000 and processing will never move to the next partition until the current one is complete. This is the same behavior that would occur with max-recoveries-interleaved set to 1, regardless of what the actual setting is, which may or may not be ideal in any particular situation. This occurs rarely, however, as both shipping speed and scanning slowness have to be extreme for it to happen.