-
Type: Bug
-
Resolution: Done
-
Priority: Major - P3
-
Affects Version/s: 1.10.2, 1.11.0
-
Component/s: Replica Set
-
None
-
Environment:Amazon Linux 2014.09, mongodb 2.6.4, ruby 2.1.2
I've been unable to use the cursor option with the aggregation pipeline when using a replica set connection. An exception is raised when send_get_more runs because @pool is nil, although I don't understand enough about the aggregation pipeline to know why.
I've included a sample that reproduces the issue - this is basically lifted from the test_aggregation_cursor test. If I swap the connection for just Mongo::MongoClient then the snippet runs successfully
require 'mongo' client = Mongo::MongoReplicaSetClient.new ['127.0.0.1'], :logger => logger db = client.db 'agg_test' test = db.collection("test") size = 10 test.drop size.times {|i| test.insert({ :_id => i }) } expected_sum = size.times.reduce(:+) cursor = test.aggregate( [{ :$project => {:_id => '$_id'}} ], :cursor => {:batchSize => 1} ) cursor_sum = cursor.reduce(0) do |sum, doc| sum += doc['_id'] end
The backtrace is
NoMethodError: undefined method `checkout' for nil:NilClass from /usr/local/rvm/gems/ruby-2.1.3/gems/mongo-1.11.1/lib/mongo/cursor.rb:598:in `send_get_more' from /usr/local/rvm/gems/ruby-2.1.3/gems/mongo-1.11.1/lib/mongo/cursor.rb:531:in `refresh' from /usr/local/rvm/gems/ruby-2.1.3/gems/mongo-1.11.1/lib/mongo/cursor.rb:136:in `next' from /usr/local/rvm/gems/ruby-2.1.3/gems/mongo-1.11.1/lib/mongo/cursor.rb:339:in `each' {
}