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.
- related to
-
SERVER-86269 stdx::condition_variable starves waiters who don't use waitForConditionOrInterrupt
- Backlog