Prhub

#25982 Fix disaggregation bootstrap server lifetime

原始 PR 作者 fzyzcjy 合并时间 2026-05-22 14:10 文件变更 1 提交数 4 评论 20 代码增减 +2 / -1

执行摘要

修复分解服务 bootstrap server 被垃圾回收的问题

由 @merrymercy 在 PR#25430 的 review 评论(https://github.com/sgl-project/sglang/pull/25430#discussion_r3280241269)中提出:start_disagg_service 的返回值必须保持引用,否则 bootstrap server 会被垃圾回收,导致分解行为错误。

建议精读:改动虽小,但涉及 Python 对象生命周期管理,是常见的 GC 陷阱。值得关注的是如何在代码中通过注释保护这种隐式依赖。

讨论亮点

无 reviewer 争议。Review 由 gemini-code-assist[bot] 自动完成,确认变更无额外反馈。

实现拆解

  1. python/sglang/srt/managers/tokenizer_manager.pyinit_disaggregation 方法中,将原先的裸调用 start_disagg_service(self.server_args) 改为赋值语句 self.bootstrap_server = start_disagg_service(self.server_args)
  2. 在赋值语句前添加注释 # Keep a reference so the bootstrap server is not garbage-collected.,说明引用的意图,防止后续清理误认为未使用而删除。
  3. 已有字段 self.fake_bootstrap_room_counter 等不受影响。
文件 模块 状态 重要度
python/sglang/srt/managers/tokenizer_manager.py 调度器 modified 4.98

关键符号

init_disaggregation

关键源码片段

python/sglang/srt/managers/tokenizer_manager.py core-logic

核心修改文件:修复分解 bootstrap server 生命周期问题,确保服务不会被提前回收。

# python/sglang/srt/managers/tokenizer_manager.pydef init_disaggregation(self):
    # PD Disaggregation
    self.disaggregation_mode = DisaggregationMode(
        self.server_args.disaggregation_mode
    )
    # Keep a reference so the bootstrap server is not garbage-collected.
    # 将返回值赋值给 self.bootstrap_server,确保 TokenizerManager
    # 生命周期内 bootstrap server 保持存活,否则可能被 GC 回收
    self.bootstrap_server = start_disagg_service(self.server_args)
    # Single-source counter for auto-assigning fake bootstrap_room.
    self.fake_bootstrap_room_counter = 0
​
    # Encoder Disaggregation
    if self.server_args.language_only:
        self.mm_receiver = create_mm_receiver(
            self.server_args,
            dtype=self.model_config.dtype,
            hf_config=self.model_config.hf_config,
        )

评论区精华

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

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

风险与影响

风险极低。仅将裸调用改为赋值,不改变 start_disagg_service 的调用语义,不影响其内部逻辑。CI 中出现的 CUDA 失败经分析均为 FlashInfer/CUTLASS/CuTe 等基础设施问题,与本次修改无关。

影响范围仅限于使用了分解(disaggregation)模式的场景,确保底层 bootstrap server 存活,避免因垃圾回收导致的分解行为异常。对未启用分解模式的场景无任何影响。

无相关风险

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论