class Sunspot::SessionProxy::Retry5xxSessionProxy::RetryHandler

Attributes

search_session[R]

Public Class Methods

new(search_session) click to toggle source
# File lib/sunspot/session_proxy/retry_5xx_session_proxy.rb, line 10
def initialize(search_session)
  @search_session = search_session
end

Public Instance Methods

method_missing(m, *args, &block) click to toggle source
# File lib/sunspot/session_proxy/retry_5xx_session_proxy.rb, line 14
def method_missing(m, *args, &block)
  retry_count = 1
  begin
    search_session.send(m, *args, &block)
  rescue Errno::ECONNRESET => e
    if retry_count > 0
      $stderr.puts "Error - #{e.message[/^.*$/]} - retrying..."
      retry_count -= 1
      retry
    else
      $stderr.puts "Error - #{e.message[/^.*$/]} - ignoring..."
    end
  rescue RSolr::Error::Http => e
    if (500..599).include?(e.response[:status].to_i)
      if retry_count > 0
        $stderr.puts "Error - #{e.message[/^.*$/]} - retrying..."
        retry_count -= 1
        retry
      else
        $stderr.puts "Error - #{e.message[/^.*$/]} - ignoring..."
        e.response
      end
    else
      raise e
    end
  end
end