-
Type:
Bug
-
Resolution: Fixed
-
Priority:
Major - P3
-
Affects Version/s: None
-
Component/s: None
-
None
-
Networking & Observability
-
Fully Compatible
-
ALL
-
Cluster Scalability 2023-12-25, Cluster Scalability 2024-1-8, Cluster Scalability 2024-1-22, Cluster Scalability 2024-2-5, Cluster Scalability 2024-2-19, Cluster Scalability 2024-3-4, Cluster Scalability 2024-3-18, Cluster Scalability 2024-4-1, Cluster Scalability 2024-4-15, Cluster Scalability 2024-4-29, Cluster Scalability 2024-5-13, Workload Scheduling 2025-05-12, Workload Scheduling 2025-05-26, Workload Scheduling 2025-06-09, N&O 2026-01-19
-
200
-
5
-
None
-
None
-
None
-
None
-
None
-
None
-
None
The constructor of Fetcher accepts two timeout values: findNetworkTimeout and getMoreNetworkTimeout. Despite their names, these timeouts govern the entire find/getMore command invocations, not just the network portions. In at least a few cases, these timeouts are derived from a maxTimeMS value, but because they are passed to the Fetcher on their own and not attached to an opCtx, they lose their identities as maxTimeMS values. As a result, if either timeout is hit during the fetching process, a NetworkInterfaceExceededTimeLimit error will be returned (the default defined on RemoteCommandRequest) rather than a MaxTimeMSExpired error, as expected. A potential negative side effect of this would be a process' replica set monitor marking the host as unreachable, when in reality a fetching query just took longer than expected.
An example of this issue can be seen in ShardRemote::_runExhaustiveCursorCommand, which manually extracts the remaining maxTimeMS value from the opCtx and then passes it into a Fetcher.
- blocks
-
SERVER-109023 Require specification of timeoutCode when timeout is specified in RemoteCommandRequest
-
- Blocked
-
- is depended on by
-
SERVER-90622 Do not mark host as failed on NetworkInterfaceExceededTimeLimit
-
- Closed
-
- is related to
-
SERVER-43155 Queries which exceed maxTimeMS may return NetworkInterfaceExceededTimeLimit
-
- Closed
-
-
SERVER-81877 Use MaxTimeMsExpired in ShardRemote::_scheduleCommand if pass maxTimeMs for timeout
-
- Closed
-