Prhub

#43870 [KV Offload] Rename `SecondaryTierManager.get_finished()` to `get_finished_jobs()`

原始 PR 作者 ronensc 合并时间 2026-05-29 00:00 文件变更 6 提交数 1 评论 0 代码增减 +15 / -15

执行摘要

重命名 get_finished 为 get_finished_jobs

PR 说明中明确指出,重命名是为了减少关于“finished”所指内容的歧义,是 PR #43205 审查中讨论的后续行动(参见讨论链接)。原始名称 get_finished() 过于抽象,可能被误解为检查整体完成状态,而实际返回的是已完成的任务结果列表。

该 PR 值得精读以了解团队对命名规范的重视。其核心设计决策是明确的命名表达意图,这种做法值得在类似模糊命名的场景下效仿。

讨论亮点

无 review 评论。该 PR 是 PR #43205 审查中提出的后续改动,原有讨论已解决。

实现拆解

  1. 修改抽象基类 vllm/v1/kv_offload/tiering/base.py:将抽象方法 get_finished() 重命名为 get_finished_jobs(),并更新其文档字符串和类注释中对该方法的引用。
  2. 修改所有二级 Tier 实现
    • vllm/v1/kv_offload/tiering/example/manager.py:重命名 get_finished()get_finished_jobs(),并更新内部注释。
    • vllm/v1/kv_offload/tiering/fs/manager.py:重命名 get_finished()get_finished_jobs(),并更新类注释。
  3. 修改调用方
    • vllm/v1/kv_offload/tiering/manager.py:更新类的文档字符串和内部方法 _process_finished_jobs() 中的注释和代码调用,将 tier.get_finished() 替换为 tier.get_finished_jobs()
  4. 更新测试文件:同步更新测试文件中对重命名方法的调用,确保测试通过。
    - tests/v1/kv_offload/test_fs_tier.py:将 tier.get_finished() 替换为 tier.get_finished_jobs()
    - tests/v1/kv_offload/test_tiering_offloading.py:更新注释中的方法引用。
文件 模块 状态 重要度
vllm/v1/kv_offload/tiering/base.py KV 卸载 modified 6.19
vllm/v1/kv_offload/tiering/manager.py KV 卸载 modified 5.17
vllm/v1/kv_offload/tiering/example/manager.py KV 卸载 modified 5.87
vllm/v1/kv_offload/tiering/fs/manager.py KV 卸载 modified 5.87
tests/v1/kv_offload/test_fs_tier.py 文件系统卸载 modified 3.99
tests/v1/kv_offload/test_tiering_offloading.py 分层卸载 modified 3.42

关键符号

get_finished_jobs

关键源码片段

vllm/v1/kv_offload/tiering/base.py core-logic

抽象基类,定义了 `get_finished_jobs()` 抽象方法,是所有二级 tier 必须实现的核心接口。重命名在此文件中完成声明、文档字符串和类注释更新。

# vllm/v1/kv_offload/tiering/base.py
from abc import ABC, abstractmethod
from collections.abc import Iterableclass SecondaryTierManager(ABC):
    """
    Abstract interface for managing a single non-primary offloading tier.
    ...
    IMPORTANT: All methods run in the Scheduler process and must be
    lightweight and non-blocking. submit_load() and submit_store() submit
    async jobs; get_finished_jobs() polls for completion.
    """
​
    @abstractmethod
    def submit_store(self, job_metadata: JobMetadata) -> None:
        # ...
        # Report completion via ``get_finished_jobs()``.
        pass
​
    @abstractmethod
    def submit_load(self, job_metadata: JobMetadata) -> None:
        # ...
        # Report completion via ``get_finished_jobs()``.
        pass
​
    @abstractmethod
    def get_finished_jobs(self) -> Iterable[JobResult]:
        """
        Return all jobs (loads and stores) that completed since the last call.        The framework uses these results to release resources and finalize
        transfers.        Returns:
            Iterable of JobResult objects for jobs finished since the
            last call.
        """
        pass
​
    # other methods remain unchanged

评论区精华

没有提炼出高价值讨论线程

当前评论区没有形成足够清晰的争议点或结论,后续有更多讨论时会体现在这里。

风险与影响

风险极低。所有变更均为纯符号重命名,不涉及行为逻辑改动。改动已通过单元测试验证。若外部代码直接调用了 get_finished()(非通过抽象接口),将因缺少向后兼容而中断,但该接口为内部模块,影响面可控。

对用户无直接可感知影响。对系统影响仅限于模块内部方法名的统一和可读性提升。对团队影响为降低了后续开发者理解代码时的认知歧义。影响范围为 vllm/v1/kv_offload 模块及对应测试。

关联 Issue

未识别关联 Issue

当前没有检测到明确关联的 Issue 链接,后续同步到相关引用后会出现在这里。

完整报告

参与讨论