module Mongo::Operation::Write::Bulk::LegacyMergable

This module contains common functionality for merging results from writes during a bulk operation. Used for server versions < 2.6.

@since 2.0.0

Public Instance Methods

aggregate_write_concern_errors(count) click to toggle source

Aggregate the write concern errors returned from this result.

@example Aggregate the write concern errors.

result.aggregate_write_concern_errors(4)

@param [ Integer ] count The number of documents already executed.

@return [ Array ] The aggregate write concern errors.

@since 2.0.0

# File lib/mongo/operation/write/bulk/legacy_mergable.rb, line 58
def aggregate_write_concern_errors(count)
  @replies.each_with_index.reduce(nil) do |errors, (reply, i)|
    if error = reply_write_errors?(reply)
      errors ||= []
      if note = reply.documents.first['wnote'] || reply.documents.first['jnote']
        code = reply.documents.first['code'] || Error::BAD_VALUE
        error_string = "#{code}: #{note}"
      elsif error == 'timeout'
        code = reply.documents.first['code'] || Error::UNKNOWN_ERROR
        error_string = "#{code}: #{error}"
      end
      errors << { 'errmsg' => error_string,
                  'index' => count + i,
                  'code' => code } if error_string
    end
    errors
  end if @replies
end
aggregate_write_errors(count) click to toggle source

Aggregate the write errors returned from this result.

@example Aggregate the write errors.

result.aggregate_write_errors(0)

@param [ Integer ] count The number of documents already executed.

@return [ Array ] The aggregate write errors.

@since 2.0.0

# File lib/mongo/operation/write/bulk/legacy_mergable.rb, line 36
def aggregate_write_errors(count)
  @replies.each_with_index.reduce(nil) do |errors, (reply, i)|
    if reply_write_errors?(reply)
      errors ||= []
      errors << { 'errmsg' => reply.documents.first[Error::ERROR],
                  'index' => count + i,
                  'code' => reply.documents.first[Error::CODE] }
    end
    errors
  end if @replies
end

Private Instance Methods

reply_write_errors?(reply) click to toggle source
# File lib/mongo/operation/write/bulk/legacy_mergable.rb, line 79
def reply_write_errors?(reply)
  reply.documents.first[Error::ERROR] ||
    reply.documents.first[Error::ERRMSG]
end