-
released this
2026-07-11 21:42:42 +03:00 | 2648 commits to dev since this releasewakeEndpoint reads RequestState flags under _mutex from lease-releasing
threads, which exposed two unlocked writers:-
commitAdmitted's delayed-open branch stored the admission/openSlot into
the still-enqueued state and then reset them via releaseAdmission()
outside _mutex, racing with claimFront/wakeEndpoint reads of
state->admission (torn std::optional read). The lease/reservation now
stay in the local verdict and are released after the unlock; the queued
front's state->admission is never mutated unlocked. Behavior is
unchanged (a delayed front always ended with an empty admission). -
scheduleOpenRetry cleared openRetryScheduled without the lock; now
cleared under _mutex, mirroring the wakeScheduled fix.
Also register test_broker_rechecks_scheduler_after_delayed_open_slot in
main (it was defined but never called, so its assertions never ran)
and update it plus the open-scheduler test to the new release path.Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-