From 0ae5df4cfba5573702d737a5672d6b808da4746b Mon Sep 17 00:00:00 2001 From: Ilya Matveev Date: Mon, 14 Aug 2017 19:11:00 +0700 Subject: [PATCH] dependencies: Hotfix: rerun dependency downloading if it fails --- .../src/main/kotlin/DependencyDownloader.kt | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/tools/helpers/src/main/kotlin/DependencyDownloader.kt b/tools/helpers/src/main/kotlin/DependencyDownloader.kt index c1c93ea5ca3..89493a42ffc 100644 --- a/tools/helpers/src/main/kotlin/DependencyDownloader.kt +++ b/tools/helpers/src/main/kotlin/DependencyDownloader.kt @@ -93,7 +93,22 @@ class DependencyDownloader(dependenciesRoot: File, val archive = File(cacheDirectory.canonicalPath, "$depName.$archiveExtension") if (!archive.exists()) { if (!airplaneMode) { - download(depName, archive) + var attempt = 0 + var done = false + do { + try { + download(depName, archive) + done = true + } catch (e: IOException) { + if (attempt < MAX_ATTEMPTS) { + attempt++ + val pauseTime = attempt * ATTEMPT_PAUSE_MS + println("Downloading error: ${e.message}.\n" + + "Waiting ${pauseTime.toDouble() / 1000} sec and trying again (attempt: $attempt/$MAX_ATTEMPTS)") + Thread.sleep(pauseTime) + } else { throw e } + } + } while (!done) } else { throw RuntimeException(""" Cannot find a dependency locally: $dependency. @@ -212,6 +227,9 @@ class DependencyDownloader(dependenciesRoot: File, companion object { val lock = ReentrantLock() + + const val MAX_ATTEMPTS = 10 + const val ATTEMPT_PAUSE_MS = 3000L } fun run() = lock.withLock {