[SERVER-59444] Enable lock-free reads with multi-document transactions Created: 19/Aug/21  Updated: 06/Dec/22

Status: Backlog
Project: Core Server
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Task Priority: Major - P3
Reporter: Dianna Hohensee (Inactive) Assignee: Backlog - Storage Execution Team
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Depends
is depended on by SERVER-62602 Remove unnecessary durable catalog re... Backlog
Assigned Teams:
Storage Execution
Participants:

 Description   

In theory, this should not be too difficult, but would take some work.

Multi-document transactions save the RecoveryUnit (and thus snapshot) and locks held (LockerImpl) across operations/commands. Lock-free reads store the CollectionCatalog on the opCtx, so any new collections accessed can be from the same point-in-time view of the catalog: we would need to save this for the multi-doc transaction like the RecoveryUnit and LockerImpl is saved today.

The part I'm unfamiliar with is how storage snapshots are handled in multi-document transactions, whether they can ever be reset. If snapshot resets happen, then that would make it a little trickier to handle a stored CollectionCatalog – the CollectionCatalog would need refreshing, too, to maintain the same catalog view in-memory and on-disk.



 Comments   
Comment by Yuhong Zhang [ 19/Aug/21 ]

We would want to prototype on the project and timebox it in one sprint.

Comment by Dianna Hohensee (Inactive) [ 19/Aug/21 ]

Note:

  • unfamiliar with how snapshots are handled, whether they are released and reacquired.
  • not sure how to handle upgrading to locked if the transaction starts doing writes.
Generated at Thu Feb 08 05:47:15 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.