Module Mongo::Retryable
In: lib/mongo/retryable.rb

Defines basic behavior around retrying operations.

@since 2.1.0

Methods

Public Instance methods

Execute a read operation with a single retry.

@api private

@example Execute the read.

  read_with_one_retry do
    ...
  end

@note This only retries read operations on socket errors.

@param [ Hash ] options Options. @param [ Proc ] block The block to execute.

@option options [ String ] :retry_message Message to log when retrying.

@return [ Result ] The result of the operation.

@since 2.2.6

Execute a read operation with a retry.

@api private

@example Execute the read.

  read_with_retry do
    ...
  end

@note This only retries read operations on socket errors.

@param [ Mongo::Session ] session The session that the operation is being run on. @param [ Proc ] block The block to execute.

@return [ Result ] The result of the operation.

@since 2.1.0

Implements write retrying functionality by yielding to the passed block one or more times.

If the session is provided (hence, the deployment supports sessions), and modern retry writes are enabled on the client, the modern retry logic is invoked. Otherwise the legacy retry logic is invoked.

If ending_transaction parameter is true, indicating that a transaction is being committed or aborted, the operation is executed exactly once. Note that, since transactions require sessions, this method will raise ArgumentError if ending_transaction is true and session is nil.

@api private

@example Execute the write.

  write_with_retry do
    ...
  end

@note This only retries operations on not master failures, since it is

  the only case we can be sure a partial write did not already occur.

@param [ nil | Session ] session Optional session to use with the operation. @param [ nil | Hash | WriteConcern::Base ] write_concern The write concern. @param [ true | false ] ending_transaction True if the write operation is abortTransaction or

  commitTransaction, false otherwise.

@param [ Proc ] block The block to execute.

@yieldparam [ Server ] server The server to which the write should be sent. @yieldparam [ Integer ] txn_num Transaction number (NOT the ACID kind).

@return [ Result ] The result of the operation.

@since 2.1.0

[Validate]