From ffd9bb40de2ea081ede5155d02f741bb651d4641 Mon Sep 17 00:00:00 2001 From: Tom Date: Wed, 30 Sep 2026 07:39:50 +0800 Subject: [PATCH] Copy evaluation engine GPU counts under the controller lock Materialize M48 G30 from the frozen revision-003 patch and source map 86efe0f5. Preserve the reviewed patch boundary and keep unit-test migrations in the final GU operation. --- miles/ray/rollout/eval_fleet.py | 7 ++++--- miles/ray/rollout/inference_controller.py | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/miles/ray/rollout/eval_fleet.py b/miles/ray/rollout/eval_fleet.py index 2cd9c9ea41..01c3b6e72c 100644 --- a/miles/ray/rollout/eval_fleet.py +++ b/miles/ray/rollout/eval_fleet.py @@ -87,11 +87,12 @@ class InferenceControllerEvalFleet: self.args = args self._srv = srv - @property - def info(self) -> EvalFleetInfo: + async def info(self) -> EvalFleetInfo: + async with self._srv.context_lock: + engine_gpu_counts = list(self._srv.engine_gpu_counts) return EvalFleetInfo( router=HostAndPort(host=self._srv.router_ip, port=self._srv.router_port), - engine_gpu_counts=self._srv.engine_gpu_counts, + engine_gpu_counts=engine_gpu_counts, ) async def pin(self, checkpoint_dir: str, weight_version: str) -> EvalFleetPin: diff --git a/miles/ray/rollout/inference_controller.py b/miles/ray/rollout/inference_controller.py index 17fdcbae88..a40e21ff6a 100644 --- a/miles/ray/rollout/inference_controller.py +++ b/miles/ray/rollout/inference_controller.py @@ -304,7 +304,7 @@ class InferenceController: @lock_exempt async def get_eval_fleet_info(self) -> EvalFleetInfo | None: - return self._eval_fleet.info if self._eval_fleet is not None else None + return await self._eval_fleet.info() if self._eval_fleet is not None else None @lock_exempt async def pin_eval_fleet(self, checkpoint_dir: str, weight_version: str) -> EvalFleetPin: