summaryrefslogtreecommitdiffstats
path: root/library/cpp/threading/thread_local/generic.cpp
diff options
context:
space:
mode:
authorbabenko <[email protected]>2026-06-07 20:25:31 +0300
committerbabenko <[email protected]>2026-06-07 21:00:46 +0300
commite211f313308ba508d351979d52091dccd44798fe (patch)
treee3b86e09237e406d1c7916f7557fc5dc7623b772 /library/cpp/threading/thread_local/generic.cpp
parentc906b7501b1f5f91adc8316e883755aa5ab38dbc (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/threading/thread_local/generic.cpp')
0 files changed, 0 insertions, 0 deletions