-
Type: Bug
-
Resolution: Unresolved
-
Priority: Major - P3
-
None
-
Affects Version/s: None
-
Component/s: None
-
None
-
Storage Execution
-
ALL
-
This was temporarily solved through SERVER-88523.
When the recordId is provided (as in colls with recordIdsReplicated:true), on secondaries / during initial sync we don't take any additional steps to update _nextId so that it points to the highest of the recordIds provided (i.e. something like _nextId = max(_nextId, providedRecordId)), and therefore, _nextId can fall behind the highest recordId on the node.
As a result, if the former secondary / initial syncing node becomes the primary, it will start allocating recordIds from the value of _nextId it has, which can mean it may use recordIds that are already in use, as _nextId might be smaller than the highest recordId on the node.
This will result in the bug SERVER-88309.
It's a surprise we haven't hit this dassert yet either.
- is related to
-
SERVER-88309 Prevent user from inserting doc via applyOps with recordId that already exists
- Open
-
SERVER-88816 Break up WiredTigerRecordStore::_insertRecords()
- Backlog
- related to
-
SERVER-88392 recordIdsReplicated:true collections can trigger dassert
- Closed
-
SERVER-88523 Inserts to the record store should update the in-memory largest recordId seen
- Closed