-
Type: Improvement
-
Resolution: Won't Do
-
Priority: Major - P3
-
None
-
Affects Version/s: None
-
Component/s: Storage
-
Storage Execution
-
Execution Team 2020-12-14, Execution Team 2020-12-28, Execution Team 2021-01-11, Execution Team 2021-03-22, Execution Team 2021-10-04, Execution Team 2021-10-18, Execution Team 2021-11-01, Sharding 2022-05-02
-
(copied to CRM)
There are some types of requests that in a single storage transaction write multiple oplog entries. Because each oplog entry sets a different WT timestamp, there's risk that any data writes correlate with the wrong oplog entry.
There's a category of these cases where one of the oplog writes is a no-op write for recording pre/post images that get linked to a following oplog entry. Because the no-op entries themselves do not represent any data writes, it would be safer to write these no-oplog entries in their own storage transaction.
E.g:
Usages that will go away with SERVER-59443 and we can omit "fixing":
- https://github.com/mongodb/mongo/blob/fa5aff14111de4fe23ae0094c597673cc4a48d3b/src/mongo/db/op_observer_impl.cpp#L169-L178
- https://github.com/mongodb/mongo/blob/fa5aff14111de4fe23ae0094c597673cc4a48d3b/src/mongo/db/op_observer_impl.cpp#L182-L190
- https://github.com/mongodb/mongo/blob/fa5aff14111de4fe23ae0094c597673cc4a48d3b/src/mongo/db/op_observer_impl.cpp#L226-L233
- is depended on by
-
SERVER-78482 Implement change stream pre/post-images in a way that does not violate timestamp assertions
- Backlog
- related to
-
SERVER-78482 Implement change stream pre/post-images in a way that does not violate timestamp assertions
- Backlog
-
SERVER-70903 support multi-oplog format for batched operations
- Closed
-
SERVER-48771 Enforce constraints on "multi-timestamp" transactions
- Closed
-
SERVER-59443 Remove storeFindAndModifyImagesInSideCollection=false code paths
- Closed