-
Type: Bug
-
Resolution: Fixed
-
Priority: Major - P3
-
Affects Version/s: None
-
Component/s: None
-
Fully Compatible
-
ALL
-
-
QE 2022-02-21, QE 2022-03-07, QE 2022-03-21
In a sharded cluster, when the client performs a find, mongos will open a set of cursors on the shards and pass them to RouterStageMerge. When the mongos is done with the cursors (exhausted, errored, etc.) RouterStageMerge:kill will get invoked, which will end up calling AsyncResultsMerger::kill. There, _scheduleKillCursors will attempt to invoke killCursors onto the shards.
This is a best-effort – we ignore any failures. However, in the the event of a MaxTimeMSExpired failure, because in the mongos the opCtx deadline is also expired, this best-effort killCursors won't even get scheduled because the executor will immediately timeout when attempting to get a connection from the pool. This will leak the shard cursors.
Attached repro script.
- is depended on by
-
SERVER-43099 Reenable random chunk migration failpoint for concurrency with_balancer suites
- Closed
- is related to
-
SERVER-46255 establishCursors/AsyncRequestsSender can leave dangling request if interrupted
- Closed