in src/main/scala/com/twitter/stitch/Runner.scala [104:130]
def run(): Promise[K => Try[V]] = {
val keys = {
val iterator = keySet.iterator
val seq = new mutable.ArrayBuffer[K](keySet.size)
while (iterator.hasNext) seq += iterator.next()
seq
}
val max = maxSize
val f =
try {
if (keys.size <= max) {
run(keys)
} else {
// i.e. servo.repository.ChunkingStrategy.equalSize
val chunkCount = math.ceil(keys.size / max.toDouble)
val chunkSize = math.ceil(keys.size / chunkCount).toInt
val keyChunks = keys.grouped(chunkSize)
MapRunner.runBatches(run, keyChunks, maxConcurrency)
}
} catch { case NonFatal(e) => Future.exception(e) }
p.become(f)
p
}