[SERVER-12368] Do not reacquire collection* in recoverFromYield during Update Created: 15/Jan/14 Updated: 12/Jun/15 Resolved: 12/Jun/15 |
|
| Status: | Closed |
| Project: | Core Server |
| Component/s: | Internal Code, Performance, Write Ops |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Type: | Improvement | Priority: | Minor - P4 |
| Reporter: | Scott Hernandez (Inactive) | Assignee: | Scott Hernandez (Inactive) |
| Resolution: | Done | Votes: | 0 |
| Labels: | mutex, perfomance, update | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Backwards Compatibility: | Fully Compatible |
| Participants: |
| Description |
|
After fixing the underlying issue in update some defensive code was left in recoveryFromYield (update.cpp) which is (probably) no longer needed and will only degrade performance because of the mutexes needed to reacquire the collection*. |
| Comments |
| Comment by Scott Hernandez (Inactive) [ 12/Jun/15 ] |
|
After the rewrite of update into a (query system) stage the collection* is now valid for the lifetime of the update, and the update cannot resume from a yield if the collection changes because the update will be killed, from the query side of things, resulting in the update ending during/before yield recovery. |
| Comment by Andy Schwerin [ 11/Jun/15 ] |
|
scotthernandez, is this still a problem? |