[SERVER-15883] Deadlock exceptions thrown during delete unsafe and skip documents Created: 30/Oct/14 Updated: 10/Dec/14 Resolved: 31/Oct/14 |
|
| Status: | Closed |
| Project: | Core Server |
| Component/s: | Concurrency, Querying |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Type: | Bug | Priority: | Blocker - P1 |
| 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 |
|
Also may occur during update - haven't dug in. When a deadlock exception is thrown in the DeleteStage, the stage is not restored before reusing via DeleteStage::restoreStage - this can allow a primary stepdown to go undetected or undetected cursor invalidation and is generally undefined behavior. Also, the DeleteStage does not store the working set member (WSM) when the problem occurs, so on resume the child stage will return the next member. |
| Comments |
| Comment by Greg Studer [ 31/Oct/14 ] |
|
There's more work needed with yielding and DeadlockExceptions, but this issue is no longer relevant given other changes. |
| Comment by Greg Studer [ 30/Oct/14 ] |
|
Just raising this issue so it isn't lost - discovered during the general yield audit. Working on some sort of a fix related to |