-
Type:
Bug
-
Resolution: Fixed
-
Priority:
Major - P3
-
Affects Version/s: None
-
Component/s: None
-
None
-
Storage Execution
-
Fully Compatible
-
ALL
-
-
Storage Execution 2025-12-8, Storage Execution 2025-12-22
-
200
-
None
-
None
-
None
-
None
-
None
-
None
-
None
Non-clustered collections utilizing non-replicated recordIds should not generate oplog entries containing the rid field. The presence of the rid field in the oplog for these collections can lead to data corruption.
Context
When the overwrite parameter is set to true (the default for non-clustered collections), an insert oplog containing a rid that points to a document with a different _id than the one in the oplog can result in data corruption. The existing document is replaced, but the indexes, such as the _id index and the index on other fields, incorrectly retain additional entries referencing the overwritten document. These entries point to the new document but the content of the document doesn't match the data on the index.
Proposed Solution:
Add an assert to ensure the rid field is not included in oplogs of non-replicated recordIds collections.
- related to
-
SERVER-88309 Prevent user from inserting doc via applyOps with recordId that already exists
-
- Open
-