[SERVER-2660] $atomic update may yield before any writes and possibly between $or clauses Created: 01/Mar/11 Updated: 07/Mar/14 Resolved: 28/Nov/12 |
|
| Status: | Closed |
| Project: | Core Server |
| Component/s: | Concurrency, Write Ops |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Type: | Bug | Priority: | Minor - P4 |
| Reporter: | Aaron Staple | Assignee: | Unassigned |
| Resolution: | Done | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Operating System: | ALL |
| Participants: |
| Description |
|
In an update operation, each time we have a chance to select indexes we pick the index that produces the first match. When we are doing this index selection, we currently may yield even if $atomic has been set for the update operation. This yield can occur before any writes take place, and potentially between $or clauses. |
| Comments |
| Comment by Aaron Staple [ 22/Aug/11 ] |
|
Same issue with atomic delete I think. |
| Comment by Aaron Staple [ 01/Mar/11 ] |
|
This resulted in a failure of the update_yield1 test Sun Feb 27 09:01:41 [conn3] query admin.$cmd ntoreturn:1 command: { listDatabases: 1 } reslen:301 10906ms 13321ms , ,\n\t\t\"client\" : \"127.0.0.1:39805\",\n\t\t\"desc\" : \"conn\"\n\t}\n]] are not equal : should have been atomic")@shell/utils.js:32 Sun Feb 27 09:01:41 uncaught exception: [[ ]] != [[ , |