On Apr 29, 2011, at 11:27 AM, jprovazn(a)redhat.com wrote:
From: Jan Provaznik <jprovazn(a)redhat.com>
This patch replaces typhoeus lib by classic open-uri when
downloading repos and adds retries when an error occurs.
---
.../util/repository_manager/comps_repository.rb | 17 ++++++++++++-----
1 files changed, 12 insertions(+), 5 deletions(-)
diff --git a/src/app/util/repository_manager/comps_repository.rb
b/src/app/util/repository_manager/comps_repository.rb
index 3e57589..cdd726c 100644
--- a/src/app/util/repository_manager/comps_repository.rb
+++ b/src/app/util/repository_manager/comps_repository.rb
@@ -107,14 +107,21 @@ class CompsRepository < AbstractRepository
end
def download_xml(url)
- resp = Typhoeus::Request.get(url, :timeout => 30000, :follow_location => true,
:max_redirects => 3)
- unless resp.code == 200
- raise "failed to fetch #{url}: #{resp.body}"
+ resp = nil
+ 5.times do |i|
+ begin
+ resp = open(url)
+ break
+ rescue
+ $stderr.puts "failed to fetch #{url}: #{$!}, retrying in 2s"
+ sleep 2
+ end
end
Just wondering if this couldn't be replaced by:
begin
..
rescue
retry
end
structure. Seems like a perfect candidate [1].
[1]
http://www.allenwei.cn/tips-how-to-write-ruby-retry/
+ raise "failed to fetch #{url}, aborting" unless resp
if url =~ /\.gz$/
- return Zlib::GzipReader.new(StringIO.new(resp.body)).read
+ return Zlib::GzipReader.new(resp).read
else
- return resp.body
+ return resp.read
end
end
--
1.7.4.4
_______________________________________________
aeolus-devel mailing list
aeolus-devel(a)lists.fedorahosted.org
https://fedorahosted.org/mailman/listinfo/aeolus-devel
------------------------------------------------------
Michal Fojtik, mfojtik(a)redhat.com
Deltacloud API:
http://deltacloud.org