Interruptible/UninterruptibleLockGuard exist today to mark an operation as interruptible/uninterruptible. This is implemented as a set of members of Locker that get modified by the RAII class.
The expectation is that the Locker is wholly owned by an OperationContext and the locker will not be shifted from beneath it. However, this is not true in the case of multi-document transactions that perform a remote call as they will yield the session back to avoid deadlocking if we call. The Locker is owned by the Session and could be checked out by another operation while the remote call hasn't yet finished.
This means that at this point two operations would believe to own the same Locker instance. This is a problem since both operations would concurrently be modifying the same Locker instance expecting to be the only writers.
- is depended on by
-
SERVER-84470 Allow $lookup to target an unsplittable collection on a primary shard within a multi-document transaction
- Closed