final String consumersPath, final int brokerId, final List<String> consumers,
final List<RecoverPartition> allRecoverParts, final int parallelHint) {
log.info("Start to recover offset with " + parallelHint + " threads in parallel");
final List<List<RecoverPartition>> forks = this.fork(allRecoverParts, parallelHint);
assert forks.size() == parallelHint;
final ClockWatch watch = new ClockWatch();
final CyclicBarrier barrier =
this.startNRecoverThreads(storeManager, zkClient, consumersPath, brokerId, consumers, parallelHint,
forks, watch);
this.join(watch, barrier);
}