-
Type: Bug
-
Resolution: Fixed
-
Priority: Major - P3
-
Affects Version/s: None
-
Component/s: Replication
-
None
-
Fully Compatible
-
ALL
-
v4.2
-
Repl 2019-09-09, Repl 2019-09-23, Repl 2019-10-07
-
14
The MultiApplier reads from the oplog to piece together a multi-document prepared transaction. The code is currently affected by oplog visibility issues, surfaced in an idempotency test. This ticket is to fix those problems.
Original description:
For example, this line:
https://github.com/mongodb/mongo/blob/36aacf391a13eba67648f1cf625fe26515454a70/src/mongo/db/repl/sync_tail_test.cpp#L3072
Attempts to process a prepare and a commit oplog entry in the same batch. By tweaking timing, I can get that test to fail with this error:
2019-08-20T14:18:22.223-0400 F - [main] Fatal assertion 31145 IncompleteTransactionHistory: oplog no longer contains the complete write history of this transaction, log with opTime { ts: Timestamp(90, 0), t: 1 } cannot be found at src/mongo/db/transaction_history_iterator.cpp 137
There are several tests in sync_tail_test that attempt to do this. It isn't clear to me why the test is currently passing most of the time. I managed to trigger this failure simply by switching the underlying storage engine from emphemeralForTest to wiredTiger.
- is related to
-
SERVER-42213 ephemeralForTest cursors need to be made thread_safe
- Closed