[SERVER-428] c++ driver should support prefetching (pipelining) of data Created: 19/Nov/09  Updated: 15/Feb/17  Resolved: 15/Feb/17

Status: Closed
Project: Core Server
Component/s: Internal Client
Affects Version/s: None
Fix Version/s: None

Type: Improvement Priority: Minor - P4
Reporter: Dwight Merriman Assignee: Unassigned
Resolution: Incomplete Votes: 1
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Participants:

 Description   

the C++ driver should have an option to asynchronously fire off a getMore mesage before the client consumes the current batch of data, and then wait for the response when the client asks for more data than has so far been received.

this would improve replication and cloning performance as client and server can then work concurrently – replication code (repl.cpp) should use this flag.

some care must be taken that the asynchronous more result is waited for if the client decides not to consume all the data from the query (as this would be an option, perhaps one must consume it all and this is simply an assert check that this is done)

the same pipelining feature would make sense in other drivers.



 Comments   
Comment by Dwight Merriman [ 14/Sep/10 ]

this is now available, although was implemented differently than described above

export utility should use it then can close this

/** uses QueryOption_Exhaust
use DBClientCursorBatchIterator if you want to do items in large blocks, perhpas to avoid granular locking and such.
*/
unsigned long long query( boost::function<void(const BSONObj&)> f, const string& ns, Query query, const BSONObj *fieldsToReturn = 0, int queryOptions = 0);

Comment by Dwight Merriman [ 27/Nov/09 ]

and the export utility

Comment by Dwight Merriman [ 27/Nov/09 ]

mongofiles should use this option too

Generated at Thu Feb 08 02:54:04 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.