[HiCache] Fix hicache host memory leak by bounding PP-sync work_list (#28916)

This commit is contained in:
ybyang
2026-06-23 16:39:03 +08:00
committed by GitHub
parent 7b1a20344c
commit 349a6af6b8
3 changed files with 70 additions and 20 deletions
@@ -0,0 +1,50 @@
"""Unit test for HiRadixCache._drain_async_work PP-sync backpressure."""
import unittest
from sglang.srt.mem_cache.hiradix_cache import HiRadixCache
from sglang.srt.mem_cache.unified_radix_cache import UnifiedRadixCache
from sglang.test.ci.ci_register import register_cpu_ci
register_cpu_ci(est_time=1, suite="base-a-test-cpu")
class _FakeWork:
def __init__(self):
self.waited = False
def wait(self):
self.waited = True
class _Holder:
"""Minimal carrier exposing only what _drain_async_work touches."""
class TestPPSyncDrain(unittest.TestCase):
def _drain_fns(self):
return (HiRadixCache._drain_async_work, UnifiedRadixCache._drain_async_work)
def test_drain_waits_all_and_clears(self):
for drain in self._drain_fns():
holder = _Holder()
works = [_FakeWork(), _FakeWork(), _FakeWork()]
holder.work_list = list(works)
drain(holder)
self.assertTrue(all(w.waited for w in works))
self.assertEqual(holder.work_list, [])
def test_drain_empty_is_noop(self):
for drain in self._drain_fns():
holder = _Holder()
holder.work_list = []
drain(holder)
self.assertEqual(holder.work_list, [])
if __name__ == "__main__":
unittest.main()