Sha256: 4a723b034330dda881582ffa4979bfe9956975be170bce8f8a3643da658428fc

Contents?: true

Size: 894 Bytes

Versions: 2

Compression:

Stored size: 894 Bytes

Contents

# -*- coding: utf-8 -*-

require 'tengine_core'
require 'mongoid'
require 'mongoid/version'
require 'mongoid/cursor'

if Mongoid::VERSION < "3.0.0"
  class Mongoid::Cursor
    # https://github.com/mongoid/mongoid/pull/1609
    def each
      retry_on_connection_failure do
        while document = cursor.next
          yield Mongoid::Factory.from_db(klass, document)
        end
      end
    end

    # https://github.com/mongoid/mongoid/pull/1739
    def retry_on_connection_failure
      retries = 0
      begin
        yield
      rescue Mongo::ConnectionFailure, Mongo::OperationTimeout => ex
        retries = increase_retry_attempts(retries, ex)
        retry
      rescue Mongo::OperationFailure => ex
        if ex.message =~ /not master/
          retries = increase_retry_attempts(retries, ex)
          retry
        else
          raise ex
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
tengine_core-0.5.36 lib/tengine/core/mongoid_fix.rb
tengine_core-0.5.35 lib/tengine/core/mongoid_fix.rb