|
In wiredTigerPrepareConflictRetry, we make the attempt to do the read here
https://github.com/mongodb/mongo/blob/916a5553/src/mongo/db/storage/wiredtiger/wiredtiger_prepare_conflict.h#L66
We then wait by noting the value of the _lastCommitOrAbortCounter and waiting for it to change here:
https://github.com/mongodb/mongo/blob/916a5553/src/mongo/db/storage/wiredtiger/wiredtiger_session_cache.cpp#L336
But we don't lock the mutex associated with _lastCommitOrAbortCounter until here
https://github.com/mongodb/mongo/blob/916a5553/src/mongo/db/storage/wiredtiger/wiredtiger_session_cache.cpp#L334
So if _lastCommitOrAbortCounter updates after the prepare conflict but before we get the lock, we could wait indefinitely
|