def downloadReport()

in src/main/scala/com/gu/contentapi/services/S3.scala [35:49]


  def downloadReport(bucketName: String, reportName: String, retries: Int = 3): Future[Option[Path]] = {
    (for {
      file <- downloadToTemp(bucketName, reportName)
    } yield Some(file)).recoverWith({
      case e: Throwable =>
        if (retries > 0) {
          logger.info(s"Failed to download $reportName - remaining retries: $retries - exception thrown $e")
          Thread.sleep(retryDelayMs)
          downloadReport(bucketName, reportName, retries - 1)
        } else {
          logger.warn(s"Failed to download $reportName - no retries left - exception thrown $e")
          Future(None)
        }
    })
  }