-
Type: Bug
-
Resolution: Fixed
-
Priority: Major - P3
-
Affects Version/s: None
-
Component/s: None
-
None
-
Fully Compatible
-
ALL
-
Execution Team 2021-06-28
SERVER-51387 introduced an invariant that MDB never sets a stable timestamp that is smaller than the all durable timestamp.
However, it uses a method that subtly returns the maximum ever seen all_durable value. It would be preferable to use a raw value.
An example of an assertion that passes when it should fail:
| Good Writer | Ghost Writer | all_durable | max(all_durable) | Stable Setter | |-----------------+-----------------------+-------------+------------------+-------------------------------------------| | BeginTxn | | | | | | SetTimestamp 10 | | 9 | 9 | | | | | | | Reads 9 | | | | | | Asserts 9 <= max(all_durable, 9) | | | | | | Sets 9 | | Commit | | 10 | 10 | | | | | | | Reads 10 | | | | | | Asserts 10 <= max(all_durable, 10) | | | | | | Sets 10 | | | BeginTxn | | | | | | Read LogicalClock(20) | | | | | BeginTxn | | | | | | SetTimestamp 20 | | 19 | 19 | | | Commit | | | | | | | | 20 | 20 | | | | | | | Reads 20 | | | SetTimestamp 20 | 19 | 20 | | | | | | | Asserts 20 <= max(all_durable, 20) versus | | | | | | Asserts 20 <= all_durable (19) |
- is related to
-
WT-7714 Prepared commit race with moving stable timestamps
- Closed
-
SERVER-51387 Assert that the stable timestamp is never set higher than the WT all_durable timestamp
- Closed