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

Allow point-in-time read transactions on ephemeralForTest to obtain the appropriate snapshot

    • Fully Compatible
    • Execution Team 2020-07-27, Execution Team 2020-08-10

      Once SERVER-49547 is completed, the ephemeralForTest KVEngine is going to maintain a map of available history that snapshots can be opened on for transactions as long as they're not older than the oldest timestamp.

      Most of the work here will be performed on the ephemeralForTest RecoveryUnit to support point-in-time read transactions to obtain the appropriate snapshot for the transaction.

      In this ticket we should be able to implement support for a few ReadSource's, namely the following:

      1. ReadSource::kUnset
      2. ReadSource::kNoTimestamp
      3. ReadSource::kProvided
      4. ReadSource::kAllDurableSnapshot (all durable is already implemented)

      We'll need to implement the setTimestampReadSource method on ephemeralForTest's RecoveryUnit.

      The ReadSource's listed above should behave in the following ways:

      1. ReadSource::kUnset and ReadSource::kNoTimestamp will return the latest snapshot available from the storage engine. This is related to today's behaviour.
      2. ReadSource::kProvided will return the latest snapshot available from the storage engine whose timestamp is less than or equal to the provided timestamp.
        1. If the provided timestamp is less than the oldest timestamp, we should return an error.



            bynn.lee@mongodb.com Bynn Lee
            gregory.wlodarek@mongodb.com Gregory Wlodarek
            0 Vote for this issue
            3 Start watching this issue