def run()

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
  }