-
Type: Task
-
Resolution: Fixed
-
Priority: Major - P3
-
Affects Version/s: None
-
Component/s: None
-
None
-
Fully Compatible
-
v5.2, v5.1
-
183
When getting the start fetch time from a donor during a tenant migration, if the last oplog entry on the donor is for a commit transaction and this transaction spanned multiple oplog entries, the recipient will not fetch the transaction's previous oplog entries. Currently, if a transaction commits before the start fetch timestamp, we walk its oplog chain to fetch all oplog entries in the transaction. For any transactions that haven't yet committed, we'll change the start fetch time to be equal to startOpTime of the transaction to make sure we fetch all oplog entries for any open transactions. However, if a transaction commits at exactly the start fetch op time, we skip fetching its chain entirely. When applying oplog entries, the recipient will attempt to apply the commit transaction entry, but won't have fetched any previous oplog entries for the transaction and will fail with NoSuchKey, aborting the transaction.
A repro is attached.