Uploaded image for project: 'Core Server'
  1. Core Server
  2. SERVER-74429

Point-in-time view definitions

    • Type: Icon: New Feature New Feature
    • Resolution: Unresolved
    • Priority: Icon: Major - P3 Major - P3
    • None
    • Affects Version/s: None
    • Component/s: None
    • None
    • Catalog and Routing

      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.

            Assignee:
            Unassigned Unassigned
            Reporter:
            henrik.edin@mongodb.com Henrik Edin
            Votes:
            0 Vote for this issue
            Watchers:
            12 Start watching this issue

              Created:
              Updated: