-
Type:
Bug
-
Resolution: Unresolved
-
Priority:
Major - P3
-
None
-
Affects Version/s: None
-
Component/s: None
-
Workload Resilience
-
ALL
-
WR Prioritized list
-
None
-
None
-
None
-
None
-
None
-
None
-
None
Several smaller issues were identified during the analysis:
- Truncation in doubleToMillis: every nap is rounded down to whole milliseconds, so every queued waiter wakes up to 1ms early, systematically; rounding up would be strictly conservative.
- Clock mixing: maturity is computed on the TickSource (monotonic), but the deadline is built on the passed ClockSource (wall clock for opCtx), so wall-clock jumps shift all sleepers together.
- Overshoot baked into adjustedNapTime: the nap is computed against nowInSeconds() captured before the borrow, but _timeEnqueued is captured after enqueue and metrics, so every waiter oversleeps by the enqueue-path latency; storing the absolute maturity (debtPaid) in the DeferredToken would be cleaner and race-free.
- Metrics: averageTimeQueuedMicros records the original _napTime rather than the actual wait on success, and is not recorded at all on the interrupt path, inconsistent with timeQueuedMicros.