diff options
| author | babenko <[email protected]> | 2026-06-07 20:25:31 +0300 |
|---|---|---|
| committer | babenko <[email protected]> | 2026-06-07 21:00:46 +0300 |
| commit | e211f313308ba508d351979d52091dccd44798fe (patch) | |
| tree | e3b86e09237e406d1c7916f7557fc5dc7623b772 /library/cpp | |
| parent | c906b7501b1f5f91adc8316e883755aa5ab38dbc (diff) | |
Reclaim hazard pointers periodically on idle worker threads
Worker threads that park via TNotifyManager::Wait (TThreadPool,
TTwoLevelFairShareThreadPool) could strand hazard-retired objects on an
idle thread: an object still protected at the pre-park reclamation scan
stayed in the thread-local retire list and was never reclaimed while the
thread remained parked, pinning the object (and the memory it transitively
held, e.g. an unmounted tablet's lookup row cache) indefinitely.
Idle workers now reclaim hazard pointers periodically; while any retired
pointers remain pending a worker wakes up at most once per
HazardPointerReclaimPeriod to retry instead of blocking indefinitely. The
throttled per-thread reclamation is unified into a single
ReclaimHazardPointersPeriodically helper shared by TSchedulerThread,
TTwoLevelFairShareQueue and TNotifyManager.
commit_hash:862b70b662e47ca85d55864627e723a8f3feb2f8
Diffstat (limited to 'library/cpp')
0 files changed, 0 insertions, 0 deletions
