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)
}
})
}