sgl-project/sglang · error · ValueError
L3 cleaner low_watermark must be lower than high_watermark (
Error message
L3 cleaner low_watermark must be lower than high_watermark (low_watermark={}, high_watermark={}) What it means
Error "L3 cleaner low_watermark must be lower than high_watermark (low_watermark={}, high_watermark={})" thrown in sgl-project/sglang.
Source
Thrown at python/sglang/srt/mem_cache/storage/nixl/nixl_cleaner.py:112
low_watermark: float = _DEFAULT_LOW_WATERMARK,
interval_sec: float = _DEFAULT_INTERVAL_SEC,
recheck_groups: int = _DEFAULT_RECHECK_GROUPS,
unlink_workers: Optional[int] = None,
) -> None:
if isinstance(storage_dirs, str):
storage_dirs = [storage_dirs] if storage_dirs else []
self.storage_dirs = [path for path in storage_dirs if path]
self.tp_rank = tp_rank
self.high_watermark = high_watermark
self.low_watermark = low_watermark
self.interval_sec = interval_sec
self.recheck_groups = max(1, recheck_groups)
self.unlink_workers = unlink_workers or max(
8, 8 * max(len(self.storage_dirs), 1)
)
if self.low_watermark >= self.high_watermark:
raise ValueError(
"L3 cleaner low_watermark must be lower than high_watermark "
f"(low_watermark={self.low_watermark}, "
f"high_watermark={self.high_watermark})"
)
self._stop = threading.Event()
self._thread: Optional[threading.Thread] = None
def start(self) -> None:
"""Start the cleaner thread on TP rank 0."""
if self.tp_rank != 0 or not self.storage_dirs:
return
if self._thread is not None and self._thread.is_alive():
return
self._thread = threading.Thread(
target=self._loop, name="hicache-l3-cleaner", daemon=True
)
self._thread.start()View on GitHub (pinned to 0132848349)
When it happens
Trigger: Thrown at python/sglang/srt/mem_cache/storage/nixl/nixl_cleaner.py:112 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of sgl-project/sglang@0132848349 (2026-08-28).
Data as JSON: /api/errors/5daf1825a368c3cd.
Report an issue: GitHub.