Details
-
Bug
-
Resolution: Fixed
-
Major - P3
-
None
-
None
-
None
-
Fully Compatible
-
ALL
-
-
Repl 2020-11-16
Description
Global locks are required to perform storage engine operations.
Without holding any locks, the function waitForSpeculativeMajorityReadConcernImpl calls getPointInTimeReadTimestamp() which starts a storage transaction implicitly if one is not already active.
This means it is possible for a speculative majority reader to start a transaction while the storage engine is shutting down, which is unsafe because it does not have defined behavior.