-
Type: Bug
-
Resolution: Fixed
-
Priority: Major - P3
-
Affects Version/s: None
-
Component/s: Aggregation Framework
-
None
-
Fully Compatible
-
ALL
-
Query 2018-03-12
A deadlock is induced on the SessionCatalog:
- The operation performing the merging half of the pipeline checks out the Session for that lsid.
- That operation includes a $mergeCursors, which performs getMores on remote hosts, one of which is the same host performing the $mergeCursors.
- That operation will attempt to check out the same session once the getMore includes the lsid - blocking on a mutex in the SessionCatalog.
As a short term fix, we should do the following:
- Only check out the Session if the operation includes a transaction number.
- Ban aggregations with a transaction number on mongos.
As a long term fix, we will investigate either not using getMores over the network for what are really local reads. If that proves difficult, we will have to re-evaluate.
- is depended on by
-
SERVER-24978 Second batches in aggregation framework are asked synchronously
- Closed
- related to
-
SERVER-33683 Allow aggregation $mergeCursors stage to run inside a transaction
- Closed