Details
Description
The update query executor runs the document insert inside a WriteUnitOfWork. When run atomically, the applyOps command also wraps lower level function calls (such as upsert) in a WriteUnitOfWork This may lead to an invariant when a WriteConflictException is thrown while inserting the document as part of an upsert.
To reproduce this issue, run the following JS test code using resmoke.py with --repeat=100:
load("jstests/replsets/libs/apply_ops_insert_write_conflict.js"); |
|
new ApplyOpsInsertWriteConflictTest({ |
testName: 'apply_ops_insert_write_conflict_atomic', |
atomic: true |
}).run();
|
Attachments
Issue Links
- is related to
-
SERVER-30049 applyOperation_inlock() allows exceptions from Collection::insertDocument() to percolate to caller
-
- Closed
-
-
SERVER-31087 adorn secondary updates with timestamps
-
- Closed
-