[SERVER-56749] Remove validation prohibiting $-prefix fields in _id Created: 07/May/21 Updated: 06/Dec/22 |
|
| Status: | Backlog |
| Project: | Core Server |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Type: | Improvement | Priority: | Major - P3 |
| Reporter: | Alya Berciu | Assignee: | Backlog - Query Optimization |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Assigned Teams: |
Query Optimization
|
| Participants: |
| Description |
|
As part of However, this caused a failure in a fuzzer test: BF-21074 The cause was that while this validation was removed on document inserts, when a subsequent update is made and written to the oplog, the generated update request follows a path that still enforces the validation that _id cannot contain $-prefixed fields, which results in a uassert being triggered. Relevant code: https://github.com/mongodb/mongo/blob/master/src/mongo/db/repl/oplog.cpp#L1360-L1366 This path on inserts may potentially experience the same problem if we remove the validation on _id: Subsequently, removing the validation on _id will need to fix the first and possibly also the second path mentioned above. |