# PR #25432 完整报告

- 仓库：`sgl-project/sglang`
- 标题：Remove dead self.adder/can_run_list/running_bs writes in Scheduler._get_new_batch_prefill_raw
- 合并时间：2026-05-16 09:12
- 原文链接：http://prhub.com.cn/sgl-project/sglang/pull/25432

---

# 执行摘要

- 一句话：清理调度器中的死代码赋值
- 推荐动作：该 PR 是低风险的清理工作，无需深入审查。但可作为理解 Scheduler 中 prefill 统计信息演进历史的参考：从 `self.adder` 等临时存储迁移到 `new_batch.prefill_stats` 对象化。

# 功能与动机

PR 描述指出：这些写操作用于捕获局部 prefill builder 状态供其他读取者使用，但整个代码库中已无任何地方读取 `self.adder`、`self.can_run_list`、`self.running_bs`。它们是旧的临时存储，已被 `new_batch.prefill_stats = PrefillStats.from_adder(adder, ...)` 替代。删除它们可以消除死代码，提高可维护性。

# 实现拆解

1. 在 `python/sglang/srt/managers/scheduler.py` 的 `Scheduler._get_new_batch_prefill_raw` 方法末尾，定位到三行 `self.adder = adder`、`self.can_run_list = can_run_list`、`self.running_bs = len(self.running_batch.reqs)` 的赋值语句。
2. 通过全仓 grep 确认无任何其他代码读取这三个属性，确认其已死。
3. 直接删除这三行代码（共 5 行，含注释），其余逻辑保持不变。
4. 未引入任何测试变更，因为删除死代码无需新增测试。

关键文件：
- `python/sglang/srt/managers/scheduler.py`（模块 调度器；类别 source；类型 core-logic；符号 _get_new_batch_prefill_raw）: 唯一变更文件，删除了 `_get_new_batch_prefill_raw` 方法末尾的三行死代码赋值。

关键符号：Scheduler._get_new_batch_prefill_raw

## 关键源码片段

### `python/sglang/srt/managers/scheduler.py`

唯一变更文件，删除了 `_get_new_batch_prefill_raw` 方法末尾的三行死代码赋值。

```python
# 以下为变更前代码（删除的三行）
# 注释 : 之前用于记录 prefill 统计信息，现已无读者
# self.adder = adder
# self.can_run_list = can_run_list
# self.running_bs = len(self.running_batch.reqs)

# 清理后，prefill 统计信息已通过以下方式附加到 batch 上 :
new_batch.prefill_stats = PrefillStats.from_adder(
    adder,
    self.running_batch.reqs,
    self.enable_priority_scheduling,
    num_pending_tokens=self._get_num_pending_tokens(...)
)

```

# 评论区精华

该 PR 的 review 评论数量为 0，提交历史仅 1 个 commit，无讨论。作者 `fzyzcjy` 同时也是合并者，表明这是一个自审查的机械式清理变更。

- 暂无高价值评论线程

# 风险与影响

- 风险：风险极低。删除的代码是已无读者的写操作，不影响任何读取路径。但若未来有其他代码误引这些属性，可能会出现 AttributeError。不过由于这些属性从未被正式定义为类属性，之前也只是在方法内赋值，因此即使保留也极易被遗忘。总体风险可忽略。
- 影响：影响范围仅限于 `python/sglang/srt/managers/scheduler.py` 中的一个方法，删除 5 行代码。无功能影响、无性能影响、无 API 变更。对用户透明，对开发者仅意味着少维护一些死代码。
- 风险标记：极小变更

# 关联脉络

- PR #25435 Replace single-line defensive getattrs with direct access: 同属清理死代码和防御性编程的系列重构，且都涉及 scheduler 文件。
- PR #25437 Drop dead hasattr guards (hisparse_coordinator, metrics_collector): 同样删除调度器中的死代码守卫，属于同一个清理方向。