-
Notifications
You must be signed in to change notification settings - Fork 1.8k
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
fix(NODE-3810): delay timeout errors by one event loop tick #3180
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
nbbeeken
force-pushed
the
NODE-3810-delay-timeout-errors-pr-version
branch
from
March 25, 2022 18:09
74d3718
to
eff2be2
Compare
nbbeeken
added
Primary Review
In Review with primary reviewer, not yet ready for team's eyes
and removed
wip
labels
Mar 31, 2022
durran
reviewed
Mar 31, 2022
durran
previously approved these changes
Mar 31, 2022
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.
LGTM if we're ok with my one question. Nice work.
durran
added
Team Review
Needs review from team
and removed
Primary Review
In Review with primary reviewer, not yet ready for team's eyes
labels
Mar 31, 2022
dariakp
requested changes
Mar 31, 2022
baileympearson
requested changes
Mar 31, 2022
dariakp
reviewed
Mar 31, 2022
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.
agree with Bailey's suggestion but otherwise LGTM
baileympearson
approved these changes
Apr 1, 2022
dariakp
approved these changes
Apr 1, 2022
durran
approved these changes
Apr 1, 2022
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
What is changing?
Delay timeout errors from a socket by one event loop tick.
What is the motivation for this change?
In FAAS environments timers will expire between invocations but will only execute upon waking up. Node.js always runs timeouts first in the event loop, this means our monitoring socket will give us a timeout error before it reads the already pending hello response. By putting the timeout error logic inside another (small as possible) timeout callback it will enforce timeout errors to be handled on the next event loop iteration, giving the driver the opportunity to first read from the socket. If it is able to read, it will clear the timeout preventing the error from being raised to our monitoring logic. If nothing is ready pending to be read from the socket, the (small as possible) timeout will fire making the timeout error occur as usual.
Double check the following
npm run check:lint
script<type>(NODE-xxxx)<!>: <description>