class EventStore::HTTP::Retry
Constants
- Trigger
Public Class Methods
build(settings=nil, namespace: nil)
click to toggle source
# File lib/event_store/http/retry.rb, line 21 def self.build(settings=nil, namespace: nil) settings ||= Settings.instance namespace ||= Array(namespace) instance = new ::Telemetry.configure instance settings.set instance, namespace instance end
register_telemetry_sink(instance)
click to toggle source
# File lib/event_store/http/retry.rb, line 31 def self.register_telemetry_sink(instance) sink = Telemetry::Sink.new instance.telemetry.register sink sink end
Public Instance Methods
call(&block)
click to toggle source
# File lib/event_store/http/retry.rb, line 37 def call(&block) retries ||= 0 logger.trace { "Performing operation (Retries: #{retries}/#{retry_limit})" } return_value = block.(self, retries) logger.debug { "Operation succeeded (Retries: #{retries}/#{retry_limit})" } return_value rescue => error if retries == retry_limit logger.error { "Operation failed; retry limit exceeded (Retries: #{retries}/#{retry_limit}, ErrorClass: #{error.class}, ErrorMessage: #{error.message.empty? ? '(none)' : error.message})" } raise error end logger.warn { "Operation failed; retrying (Retries: #{retries}/#{retry_limit}, ErrorClass: #{error.class}, ErrorMessage: #{error.message.empty? ? '(none)' : error.message})" } retries += 1 sleep retry_duration_seconds record_retry error, retries retry end
failed(error=nil)
click to toggle source
# File lib/event_store/http/retry.rb, line 63 def failed(error=nil) error ||= Trigger.new raise error end
record_retry(error, retries)
click to toggle source
# File lib/event_store/http/retry.rb, line 69 def record_retry(error, retries) telemetry.record :retried, Telemetry::Retried.new(error, retries, retry_limit) end
retry_duration()
click to toggle source
# File lib/event_store/http/retry.rb, line 17 def retry_duration @retry_duration ||= Defaults.retry_duration end
retry_duration_seconds()
click to toggle source
# File lib/event_store/http/retry.rb, line 73 def retry_duration_seconds Rational(retry_duration, 1_000) end
retry_limit()
click to toggle source
# File lib/event_store/http/retry.rb, line 13 def retry_limit @retry_limit ||= Defaults.retry_limit end