-
Type: Bug
-
Resolution: Won't Fix
-
Priority: Major - P3
-
None
-
Affects Version/s: None
-
Component/s: None
-
None
-
ALL
-
-
Execution Team 2020-06-01, Execution Team 2020-06-15, Execution Team 2021-02-08
-
22
When aborting an index build, we determine whether or not to write a ghost timestamp through a call to "getCommitTimestamp" here, however this only returns a timestamp on secondaries.
On primaries, this is always false, and results in a call to RecoveryUnit::setTimestamp.
This is immediately followed by a call to write an abortIndexBuild oplog entry via the onCleanUp handler. This overwrites and updates the commit timestamp, so the catalog write ends up being timestamped correctly.
TLDR: I believe this can temporarily cause the WiredTiger "all_durable" value to move backwards, which violates the contract "all_durable" on primaries.
Say, for example, there are no open WT transactions. Both lastApplied and "all_durable" all 10. If I open a WT transaction and set its commit timestamp to 10 (a timestamp that has already been committed), "all_durable" will move backwards to 9. After the transaction commits, "all_durable" can advance back to 10.
- related to
-
SERVER-47867 Remove ghost timestamping code
- Closed