[SERVER-86247] Non-Linux SemaphoreTicketHolder starves uninterruptible waiters Created: 05/Feb/24  Updated: 07/Feb/24

Status: In Code Review
Project: Core Server
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Bug Priority: Major - P3
Reporter: Louis Williams Assignee: Louis Williams
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Depends
Related
related to SERVER-86269 stdx::condition_variable starves wait... Backlog
Sprint: Execution Team 2024-02-19
Participants:
Linked BF Score: 19

 Description   

The non-Linux semaphore ticketholder implementation has two waiting paths: if an OperationContext is provided, we use waitForConditionOrInterrupt. If not, we use a regular condition variable wait() or wait_until().

Due to the problem described in SERVER-86269, this causes starvation for non-interruptible callers without an OperationContext. Specifically, the ThroughputProbingTicketholderMonitor get starved because it does not have an interruptible OpCtx.


Generated at Thu Feb 08 06:59:45 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.