diff --git a/python/sglang/srt/managers/scheduler.py b/python/sglang/srt/managers/scheduler.py index 078240792..43290075a 100644 --- a/python/sglang/srt/managers/scheduler.py +++ b/python/sglang/srt/managers/scheduler.py @@ -349,6 +349,9 @@ class Scheduler( dp_rank: Optional[int], ): self.is_initializing = True + # init_soft_watchdog starts a daemon thread that reads these on its first tick. + self.forward_ct: int = 0 + self.cur_batch: Optional[ScheduleBatch] = None self.init_soft_watchdog(server_args) # Parse args diff --git a/python/sglang/srt/managers/scheduler_runtime_checker_mixin.py b/python/sglang/srt/managers/scheduler_runtime_checker_mixin.py index ebf929f71..9b5f7709c 100644 --- a/python/sglang/srt/managers/scheduler_runtime_checker_mixin.py +++ b/python/sglang/srt/managers/scheduler_runtime_checker_mixin.py @@ -594,9 +594,8 @@ def create_scheduler_watchdog( return WatchdogRaw( debug_name="Scheduler", - get_counter=lambda: getattr(scheduler, "forward_ct", 0), - is_active=lambda: scheduler.is_initializing - or getattr(scheduler, "cur_batch", None) is not None, + get_counter=lambda: scheduler.forward_ct, + is_active=lambda: scheduler.is_initializing or scheduler.cur_batch is not None, watchdog_timeout=watchdog_timeout, soft=soft, dump_info=dump_info,