-
Type: Bug
-
Resolution: Gone away
-
Priority: Major - P3
-
None
-
Affects Version/s: None
-
Component/s: None
-
Storage Execution
-
ALL
-
15
EFT does not correctly implement oplog visibility. It checks the "all committed" value after forking and obtaining a snapshot. This means that the highest-visible point in the oplog can actually reflect uncommmited operations in the oplog cursor's snapshot.
For example. Say operations with timestamps T1 and T3 are committed, but T2 is not. The "all committed" (aka "highest visible") operation should be T1.
Consider the sequence:
- An oplog reader obtains a snapshot. T1 and T3 are visible, T2 is not.
- T2 commits in parallel
- The oplog reader opens a cursor sees the highest visible record as T3. The operation returns T1 and T3, but skips T2.
See SERVER-38499 for details on how this was implemented in MongoDB.