-
Type: Bug
-
Resolution: Gone away
-
Priority: Major - P3
-
None
-
Affects Version/s: None
-
Component/s: None
-
None
-
Storage Execution
-
ALL
-
Execution Team 2022-02-21, Execution Team 2022-03-07
There is a problem with prepared transactions whose durable timestamp is greater than their commit timestamp, which is that it's possible for another transaction to read them and commit before them, then get checkpointed without them, such that a crash causes the first transaction to disappear but not the second that depended on it.
See WT-8747 for additional information and examples.
This is a potential data consistency error.
The ideal fix for WiredTiger is to return ::WT_ROLLBACK to the reader, which requires the reader to handle transaction rollback and which may not be possible for Server. We considered returning ::WT_NOTFOUND in this case (although that is problematical as well and could lead to its own problems), but patch builds returning the two different errors have roughly similar numbers of failures.
The patch build returning ::WT_ROLLBACK is here: https://evergreen.mongodb.com/version/61fc61400305b973ad2bf953?redirect_spruce_users=true
The patch build returning ::WT_NOTFOUND is here: https://evergreen.mongodb.com/version/61fd6248a4cf472d4bc3243c?redirect_spruce_users=true
Can someone please help us investigate this problem? – Thanks!
- is depended on by
-
WT-8747 Reading between commit_timestamp and durable_timestamp can produce inconsistency
- Closed
- related to
-
SERVER-63615 Avoid deadlocks in wiredtiger_prepare_conflict.h
- Closed