diff options
| author | mokha <mokha@cisco.com> | 2018-11-10 10:09:33 -0700 |
|---|---|---|
| committer | mokha <mokha@cisco.com> | 2018-11-10 10:09:33 -0700 |
| commit | bd4e24325b76740c91a96080a3cee9d732c960db (patch) | |
| tree | 9077558201b5460fbe92b84ab3fffa1e6f53921f /lib | |
| parent | a247acd75e953221cee80262eba278916bb73f8c (diff) | |
add retry.
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/net/hippie.rb | 8 | ||||
| -rw-r--r-- | lib/net/hippie/client.rb | 14 |
2 files changed, 21 insertions, 1 deletions
diff --git a/lib/net/hippie.rb b/lib/net/hippie.rb index 71e786d..6c39a50 100644 --- a/lib/net/hippie.rb +++ b/lib/net/hippie.rb @@ -14,6 +14,14 @@ require 'net/hippie/api' module Net # net/http for hippies. module Hippie + CONNECTION_ERRORS = [ + EOFError, + Errno::ECONNRESET, + Errno::EINVAL, + Net::ProtocolError, + Timeout::Error + ].freeze + def self.logger @logger ||= Logger.new(STDOUT) end diff --git a/lib/net/hippie/client.rb b/lib/net/hippie/client.rb index 2760d74..9797697 100644 --- a/lib/net/hippie/client.rb +++ b/lib/net/hippie/client.rb @@ -12,6 +12,7 @@ module Net attr_accessor :mapper attr_accessor :read_timeout + attr_accessor :logger def initialize( certificate: nil, @@ -27,6 +28,7 @@ module Net @passphrase = passphrase @read_timeout = 30 @verify_mode = verify_mode + @logger = Net::Hippie.logger end def execute(uri, request) @@ -60,6 +62,16 @@ module Net execute(uri, request, &block) end + def with_retry(retries: 3) + retries.downto(0) do |n| + return yield self + rescue *::Net::Hippie::CONNECTION_ERRORS => error + logger.error("Retry Attempt: #{n}") + logger.error(error) + raise error if n.zero? + end + end + private attr_reader :default_headers @@ -71,7 +83,7 @@ module Net http.read_timeout = read_timeout http.use_ssl = uri.scheme == 'https' http.verify_mode = verify_mode - http.set_debug_output(Net::Hippie.logger) + http.set_debug_output(logger) apply_client_tls_to(http) http end |
