[SERVER-74809] Yield call into storage engine after releasing global lock Created: 13/Mar/23 Updated: 14/Mar/23 Resolved: 14/Mar/23 |
|
| Status: | Closed |
| Project: | Core Server |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Type: | Bug | Priority: | Major - P3 |
| Reporter: | Henrik Edin | Assignee: | Backlog - Storage Execution Team |
| Resolution: | Duplicate | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Issue Links: |
|
||||||||||||||||||||
| Assigned Teams: |
Storage Execution
|
||||||||||||||||||||
| Operating System: | ALL | ||||||||||||||||||||
| Participants: | |||||||||||||||||||||
| Description |
|
Query yield call saveLockStateAndUnlock which returns true if locks were released. If locks were released we proceed to check for interrupt and finally abandoning the WT snapshot. It is not safe to call into the storage engine without a global lock. There could for example be a shutdown in progress that has acquired the global lock in MODE_X and is shutting down the storage engine. If this is the case, we may throw when checking for interrupt which again causes the snapshot do be abandoned when the GlobalLock type is destroyed. |