module MongodbLogger::ReplicaSetHelper

Public Instance Methods

rescue_connection_failure(max_retries = 40) { || ... } click to toggle source

Use retry alg from mongodb to gobble up connection failures during replica set master vote Defaults to a 10 second wait

# File lib/mongodb_logger/replica_set_helper.rb, line 5
def rescue_connection_failure(max_retries = 40)
  success = false
  retries = 0
  while !success
    begin
      yield
      success = true
    rescue mongo_error_type => e
      raise e if (retries += 1) >= max_retries
      sleep 0.25
    end
  end
end

Private Instance Methods

mongo_error_type() click to toggle source
# File lib/mongodb_logger/replica_set_helper.rb, line 21
def mongo_error_type
  return @mongo_error if @mongo_error
  @mongo_error = Mongo::ConnectionFailure if defined?(Mongo) && defined?(Mongo::ConnectionFailure)
  @mongo_error = Moped::SocketError  if defined?(Moped) && defined?(Moped::SocketError)
  @mongo_error
end