aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/cmd/pull.rb
diff options
context:
space:
mode:
authorMike McQuaid2015-08-24 12:24:56 +0100
committerMike McQuaid2015-08-25 16:43:37 +0100
commit166e33c2ffe84462240ed36946b9127b63421a60 (patch)
treed33bab536c55fec309ae38cfb269d448cccefc4b /Library/Homebrew/cmd/pull.rb
parent4e5d92dc1011bb09fa4db3282e938b4a55dc2d21 (diff)
downloadbrew-166e33c2ffe84462240ed36946b9127b63421a60.tar.bz2
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 <mike@mikemcquaid.com>
Diffstat (limited to 'Library/Homebrew/cmd/pull.rb')
-rw-r--r--Library/Homebrew/cmd/pull.rb26
1 files changed, 19 insertions, 7 deletions
diff --git a/Library/Homebrew/cmd/pull.rb b/Library/Homebrew/cmd/pull.rb
index 809e4b5a4..35576fee0 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"