diff options
author | k0kubun <k0kubun@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-02-05 13:24:00 +0000 |
---|---|---|
committer | k0kubun <k0kubun@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-02-05 13:24:00 +0000 |
commit | 349e7fcb6656e1cb23f585befb1bb5677685e10e (patch) | |
tree | 65c1cf29f9703a9b1b927318e3a7efb35db7a55f /tool/downloader.rb | |
parent | 827322569f6ddb790745e51f51ab25d2e2702de2 (diff) |
tool/downloader.rb: retry SocketError
I would like to stabilize RubyCI.
https://rubyci.org/logs/rubyci.s3.amazonaws.com/fedora26/ruby-trunk/log/20180205T123003Z.fail.html.gz
downloading did_you_mean-1.2.0.gem ... /home/hsbt/chkbuild/tmp/build/20180205T123003Z/tmp/ruby-snapshot20180205-23226-3201ha/ruby-2.6.0-r62226/tool/downloader.rb:212:in `rescue in download': failed to download did_you_mean-1.2.0.gem (RuntimeError)
SocketError: Failed to open TCP connection to rubygems.org:443 (getaddrinfo: Name or service not known): https://rubygems.org/downloads/did_you_mean-1.2.0.gem
from /home/hsbt/chkbuild/tmp/build/20180205T123003Z/tmp/ruby-snapshot20180205-23226-3201ha/ruby-2.6.0-r62226/tool/downloader.rb:123:in `download'
from /home/hsbt/chkbuild/tmp/build/20180205T123003Z/tmp/ruby-snapshot20180205-23226-3201ha/ruby-2.6.0-r62226/tool/downloader.rb:66:in `download'
from -e:4:in `<main>'
make[1]: *** [Makefile:1685: update-gems] Error 1
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62231 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'tool/downloader.rb')
-rw-r--r-- | tool/downloader.rb | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/tool/downloader.rb b/tool/downloader.rb index 4cd41afbdc..13d6aa0e50 100644 --- a/tool/downloader.rb +++ b/tool/downloader.rb @@ -161,7 +161,7 @@ class Downloader $stdout.flush end begin - data = with_retry(3, Errno::ETIMEDOUT) do + data = with_retry(3, [Errno::ETIMEDOUT, SocketError]) do url.read(options.merge(http_options(file, since.nil? ? true : since))) end rescue OpenURI::HTTPError => http_error @@ -267,11 +267,11 @@ class Downloader end end - def self.with_retry(max_times, exception, &block) + def self.with_retry(max_times, exceptions, &block) times = 0 begin block.call - rescue exception => e + rescue *exceptions => e times += 1 if times <= max_times $stderr.puts "retrying #{e.class} (#{e.message}) after #{times ** 2} seconds..." |