Class/Module Index [+]

Quicksearch

Mongoid::Collections::Retry

Provides behaviour for retrying commands on connection failure.

Public Instance Methods

retry_on_connection_failure() click to toggle source

Retries command on connection failures.

This is useful when using replica sets. When a primary server wents down and a command is issued, the driver will raise a Mongo::ConnectionFailure. We wait a little bit, because nodes are electing themselves, and then retry the given command.

By setting Mongoid.max_retries_on_connection_failure to a value of 0, no attempt will be made, immediately raising connection failure. Otherwise it will attempt to make the specified number of retries and then raising the exception to clients.

@example Retry the command.

retry_on_connection_failure do
  collection.send(name, *args)
end

@since 2.0.0

# File lib/mongoid/collections/retry.rb, line 25
def retry_on_connection_failure
  retries = 0
  begin
    yield
  rescue Mongo::ConnectionFailure => ex
    retries += 1
    raise ex if retries > Mongoid.max_retries_on_connection_failure
    Kernel.sleep(0.5)
    log_retry retries
    retry
  end
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.