Module: Mongoid::Collections::Retry

Defined in:
lib/tengine/core/mongoid_fix.rb

Instance Method Summary collapse

Instance Method Details

#retry_on_connection_failureObject

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



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/tengine/core/mongoid_fix.rb', line 24

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