From 166e33c2ffe84462240ed36946b9127b63421a60 Mon Sep 17 00:00:00 2001 From: Mike McQuaid Date: Mon, 24 Aug 2015 12:24:56 +0100 Subject: [PATCH] pull: do fetch after everything else, sleep more. Use an exponential back-off on the sleep and try the fetch more times. Hopefully this will mean that we spent less time waiting for Bintray. Closes Homebrew/homebrew#43240. Signed-off-by: Mike McQuaid --- Library/Homebrew/cmd/pull.rb | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/Library/Homebrew/cmd/pull.rb b/Library/Homebrew/cmd/pull.rb index 809e4b5a49..35576fee04 100644 --- a/Library/Homebrew/cmd/pull.rb +++ b/Library/Homebrew/cmd/pull.rb @@ -57,6 +57,8 @@ module Homebrew odie "You meant `git pull --rebase`." end + bintray_fetch_formulae =[] + ARGV.named.each do |arg| if arg.to_i > 0 url = "https://github.com/Homebrew/homebrew/pull/#{arg}" @@ -189,19 +191,29 @@ module Homebrew "-u#{bintray_user}:#{bintray_key}", "-X", "POST", "-d", '{"publish_wait_for_secs": -1}', "https://api.bintray.com/content/homebrew/#{repo}/#{package}/#{version}/publish" - sleep 5 - success = system "brew", "fetch", "--retry", "--force-bottle", f.full_name - unless success - ohai "That didn't work; sleeping another 10 and trying again..." - sleep 10 - system "brew", "fetch", "--retry", "--force-bottle", f.full_name - end + bintray_fetch_formulae << f end else opoo "You must set BINTRAY_USER and BINTRAY_KEY to add or update bottles on Bintray!" end end + bintray_fetch_formulae.each do |f| + max_retries = 5 + retry_count = 0 + begin + success = system "brew", "fetch", "--force-bottle", f.full_name + raise "Failed to download #{f} bottle!" unless success + rescue RuntimeError => e + retry_count += 1 + raise e if retry_count >= max_retries + sleep_seconds = 2**retry_count + ohai "That didn't work; sleeping #{sleep_seconds} seconds and trying again..." + sleep sleep_seconds + retry + end + end + ohai "Patch changed:" safe_system "git", "diff-tree", "-r", "--stat", revision, "HEAD"