-
Notifications
You must be signed in to change notification settings - Fork 1.8k
feat(NODE-6472): findOne and find no longer keep open cursors #4580
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
11b1cf5
to
9fe1c2d
Compare
src/collection.ts
Outdated
const res = await cursor.next(); | ||
await cursor.close(); | ||
return res; | ||
const opts = { ...options }; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I made the decision here to do the options changes - creating a new find one operation was much more code and was suspiciously failing 6 tests in load balancer mode. This creating the cursor object works just fine and passes all tests, no killCursors is sent and the cursor on the server side always comes back with id 0.
Co-authored-by: Bailey Pearson <bailey.pearson@mongodb.com>
Co-authored-by: Bailey Pearson <bailey.pearson@mongodb.com>
Description
Changes
findOne
to set options that will not require a cursor or a killCursors command. Updatesfind
to not leave cursors open on the server when batch size and limit are equal.What is changing?
batchSize
tobatchSize + 1
when the limit is equal to it.Is there new documentation needed for these changes?
API docs on the findOne options.
What is the motivation for this change?
NODE-6472
Release Highlight
collection.findOne()
andcollection.find()
will no longer potentially leave open cursors on the serverThe
findOne
command will now always set thelimit
option to1
andsingleBatch
totrue
. Thelimit
,noCursorResponse
andbatchSize
options have also been deprecated, and the command will guarantee no more cursors can be orphaned and nokillCursors
command will be potentially executed.find
will now setlimit
tobatchSize + 1
when both options were equal, to avoid leaving cursors open.Double check the following
npm run check:lint
scripttype(NODE-xxxx)[!]: description
feat(NODE-1234)!: rewriting everything in coffeescript