[SERVER-15850] DeadlockExceptions thrown during multi-writes may trigger stale configs Created: 28/Oct/14 Updated: 10/Dec/14 Resolved: 04/Nov/14 |
|
| Status: | Closed |
| Project: | Core Server |
| Component/s: | Concurrency, Sharding |
| Affects Version/s: | 2.7.8 |
| Fix Version/s: | None |
| Type: | Bug | Priority: | Major - P3 |
| Reporter: | Greg Studer | Assignee: | Greg Studer |
| Resolution: | Done | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Issue Links: |
|
||||||||
| Operating System: | ALL | ||||||||
| Participants: | |||||||||
| Description |
|
See: batch_executor.cpp::multiRemove()/multiUpdate(). The legacy write path is not necessarily affected as mongos no longer uses it. If data has already been written these operations should not be aborted, and DeadlockExceptions can get thrown at any time during a multi-write. Generally multi-writes are broadcast to all shards, but we should not rely on this behavior for correctness. |
| Comments |
| Comment by Greg Studer [ 04/Nov/14 ] |
|
WAD - operation for deletes and updates now retries full operations except in the case of multi-updates, which cannot not throw stale exceptions on yield as in v2.6. |