Skip to content

Conversation

@emadum
Copy link
Contributor

@emadum emadum commented Nov 19, 2020

This PR ensures that awaitable isMaster handshakes respect an unlimited timeout (connectionTimeoutMS=0) as per the SDAM specification section on socket timeouts:

Clients MUST use connectTimeoutMS as the timeout for the connection handshake. When connectTimeoutMS=0, the timeout is unlimited and MUST remain unlimited for awaitable isMaster replies. Otherwise, connectTimeoutMS is non-zero and clients MUST use connectTimeoutMS + heartbeatFrequencyMS as the timeout for awaitable isMaster replies.

NODE-2874

@emadum emadum changed the title test: reproduce NODE-2874 fix: monitor socket timeout should be unlimited when connectTimeoutMS=0 Nov 19, 2020
@emadum emadum changed the title fix: monitor socket timeout should be unlimited when connectTimeoutMS=0 fix: make monitor socket timeout unlimited when connectTimeoutMS=0 Nov 19, 2020
emadum and others added 5 commits November 19, 2020 13:13
When the legacy ReplSet and Server topology types are destroyed
they transition their internal state after a potentially long async
close process has completed. With the recently introduced infinite
default socket timeout, we are hitting this race condition more
consistently. This patch ensures the types transition their state
immediately, reducing the chance that such race conditions can
occur.

NODE-2916
@emadum emadum marked this pull request as ready for review November 28, 2020 23:36
@emadum emadum requested review from mbroadst and nbbeeken November 30, 2020 13:48
@emadum emadum changed the title fix: make monitor socket timeout unlimited when connectTimeoutMS=0 fix: awaitable isMaster timeout must respect connectTimeoutMS Nov 30, 2020
@emadum emadum requested a review from mbroadst December 1, 2020 01:20
Copy link
Member

@mbroadst mbroadst left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@emadum emadum merged commit b365c50 into 3.6 Dec 1, 2020
@emadum emadum deleted the NODE-2874/fix-monitor-timeout branch December 1, 2020 17:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants