class Azure::Core::Http::RetryPolicy
A HttpFilter implementation that handles retrying based on a specific policy when HTTP layer errors occur
Attributes
Public Class Methods
# File lib/azure/core/http/retry_policy.rb, line 25 def initialize(&block) @block = block end
Public Instance Methods
Overrides the base class implementation of call to implement a retry loop that uses should_retry? to determine when to break the loop
req - HttpRequest. The HTTP request _next - HttpFilter. The next filter in the pipeline
# File lib/azure/core/http/retry_policy.rb, line 37 def call(req, _next) retry_data = {} response = nil begin response = _next.call rescue retry_data[:error] = $! end while should_retry?(response, retry_data) if retry_data.has_key?(:error) raise retry_data[:error] else response end end
Determines if the HTTP request should continue retrying
response - HttpResponse. The response from the active request #retry_data - Hash. Stores stateful retry data
The #retry_data is a Hash which can be used to store stateful data about the request execution context (such as an incrementing counter, timestamp, etc). The #retry_data object will be the same instance throughout the lifetime of the request.
If an inline block was passed to the constructor, that block will be used here and should return true to retry the job, or false to stop exit. If an inline block was not passed to the constructor the method returns false.
Alternatively, a subclass could override this method.
# File lib/azure/core/http/retry_policy.rb, line 68 def should_retry?(response, retry_data) @block ? @block.call(response, retry_data) : false end