module Mongo::Retryable
Public Instance Methods
legacy_write_with_retry(server = nil, session = nil) { |server || next_primary| ... }
click to toggle source
# File lib/mongo_ha/retryable.rb, line 5 def legacy_write_with_retry(server = nil, session = nil) attempt = 0 begin attempt += 1 yield(server || cluster.next_primary) rescue Error::SocketError, Error::SocketTimeoutError => e server = nil raise(e) if attempt > cluster.max_read_retries || (session && session.in_transaction?) log_retry(e) cluster.scan! retry rescue Error::OperationFailure => e server = nil raise(e) if attempt > cluster.max_read_retries if e.write_retryable? && !(session && session.in_transaction?) log_retry(e) cluster.scan! retry else raise(e) end end end