[SERVER-74429] Point-in-time view definitions Created: 28/Feb/23  Updated: 28/Feb/23

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

Type: New Feature Priority: Major - P3
Reporter: Henrik Edin 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:
Related
Assigned Teams:
Storage Execution
Participants:

 Description   

Currently, view definitions are cached in memory without any concept of a timestamp when they were created. When performing reads on views we resolve the view to a read on a collection with an aggregation pipeline. This view resolve step always uses the latest version of that view.

A read on a specific timestamp can, as a result of the above, use a view before it was created or use a view definition that does not match with how it was persisted at the read timestamp if the view has been dropped and recreated with a new aggregation pipeline.

To complicate the matter further, the resolve step of a view is currently performed before the storage snapshot is opened (and the read timestamp determined) for the read on the underlying collection. Between resolving the view and executing the resolved pipeline storage snapshot and locks are released and then re-acquired for the read on the collection.

We should fix this so that view definitions used for point-in-time reads match their persisted definition/pipeline in the storage snapshot used when reading on the underlying collection.


Generated at Thu Feb 08 06:27:24 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.