module Mongoid::Collections::Retry

Public Instance Methods

retry_on_connection_failure() { || ... } click to toggle source

github.com/mongoid/mongoid/pull/1739 Mongoid 2.3.x needs additional fix

# File lib/tengine/core/mongoid_fix.rb, line 23
def retry_on_connection_failure
  retries = 0
  begin
    yield
  rescue Mongo::ConnectionFailure, Mongo::OperationTimeout, Mongo::OperationFailure => ex
    raise if ex.class == Mongo::OperationFailure and ex.message !~ /not master/

    retries += 1
    raise if retries > Mongoid.max_retries_on_connection_failure

    Kernel.sleep(0.5)
    log_retry retries
    retry
  end
end