Details
-
Bug
-
Resolution: Fixed
-
Major - P3
-
None
-
None
-
None
-
Fully Compatible
-
ALL
-
Execution Team 2021-06-28
Description
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) |
|
Attachments
Issue Links
- 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
-