[SERVER-38478] Remove UninterruptibleLockGuard in query yield Created: 07/Dec/18 Updated: 29/Oct/23 Resolved: 26/Apr/19 |
|
| Status: | Closed |
| Project: | Core Server |
| Component/s: | Concurrency |
| Affects Version/s: | None |
| Fix Version/s: | 4.1.11 |
| Type: | Task | Priority: | Major - P3 |
| Reporter: | Siyuan Zhou | Assignee: | Eric Milkie |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | prepare_interruptibility, uninterruptibleLockGuardRemoval | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Issue Links: |
|
||||||||||||
| Backwards Compatibility: | Fully Compatible | ||||||||||||
| Sprint: | Storage NYC 2019-01-28, Storage NYC 2019-02-11, Storage NYC 2019-03-25, Storage NYC 2019-04-08, Storage NYC 2019-04-22, Storage NYC 2019-05-06 | ||||||||||||
| Participants: | |||||||||||||
| Linked BF Score: | 17 | ||||||||||||
| Story Points: | 8 | ||||||||||||
| Description |
|
restoreLockState() is used by query yielding and transaction reaper. To make sure they don't conflict with prepared transactions on stepdown and shutdown, we need to guarantee they only restore IS or IX locks or they restore locks that won't conflict with transactions. |
| Comments |
| Comment by Githook User [ 26/Apr/19 ] |
|
Author: {'name': 'Eric Milkie', 'username': 'milkie', 'email': 'milkie@10gen.com'}Message: |
| Comment by Eric Milkie [ 23/Jan/19 ] |
|
I'm investigating whether we can simply remove the UninterruptibleLockGuard that the query executor uses for restoreLockState(). |
| Comment by Louis Williams [ 20/Dec/18 ] |
|
Note: non document-locking storage engines like ephemeralForTest will be incompatible with this because they take collection X locks to do queries that involve writes (for example index build table scans). |
| Comment by Gregory McKeon (Inactive) [ 17/Dec/18 ] |
|
Sending to storage to do as part of the UninterruptibleLockGuard work. |