[SERVER-49553] Allow point-in-time read transactions on ephemeralForTest to obtain the appropriate snapshot Created: 16/Jul/20  Updated: 29/Oct/23  Resolved: 06/Aug/20

Status: Closed
Project: Core Server
Component/s: Storage
Affects Version/s: None
Fix Version/s: 4.7.0

Type: Improvement Priority: Major - P3
Reporter: Gregory Wlodarek Assignee: Bynn Lee
Resolution: Fixed Votes: 0
Labels: intern_ephemeral_for_test
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Depends
depends on SERVER-49547 ephemeralForTest needs to keep track ... Closed
is depended on by SERVER-49792 Implement a snapshot manager for ephe... Closed
is depended on by SERVER-48314 ephemeralForTest should support times... Closed
is depended on by SERVER-49391 Run ephemeralForTest/biggie suites wi... Closed
Backwards Compatibility: Fully Compatible
Sprint: Execution Team 2020-07-27, Execution Team 2020-08-10
Participants:

 Description   

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.

 

 



 Comments   
Comment by Githook User [ 06/Aug/20 ]

Author:

{'name': 'Bynn Lee', 'email': 'bynn.lee@mongodb.com', 'username': 'bynn'}

Message: SERVER-49553 Allow point-in-time read transactions on ephemeralForTest to obtain the appropriate snapshot
Branch: master
https://github.com/mongodb/mongo/commit/6f776d77902dd28fa71fb657bb9483fc383ac01b

Generated at Thu Feb 08 05:20:14 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.