Prhub

#35843 refactor(disagg): remove dead build_and_send_encode_request

原始 PR 作者 ShangmingCai 合并时间 2026-08-21 17:58 文件变更 1 提交数 1 评论 2 代码增减 +0 / -8

执行摘要

删除无调用的 build_and_send_encode_request 死代码

该变更旨在清理无用的死代码。PR body 明确指出,build_and_send_encode_request 在整个仓库中没有调用者,且由于 send_encode_request 存在多个签名冲突的定义,该方法若被调用会失败。移除死代码可以减少维护负担,避免误导开发者。

该 PR 简单直接,仅做死代码清理,建议快速合入。对于开发者,可以借此例了解代码库中死代码清理的流程和验证方法。

讨论亮点

该 PR 无 review 评论,但在 issue 评论中作者请求重新运行 test_epd_disaggregation.py,该测试最终通过。这说明作者通过 CI 验证了删除死代码没有破坏现有功能。

实现拆解

  1. 入口:修改文件 python/sglang/srt/disaggregation/encoder/receiver.py,在 MMReceiverGrpc 类中删除整个 build_and_send_encode_request 方法。
  2. 核心逻辑:删除的代码块包括该方法定义以及其中对 GenerateReqInputImageData 的使用。删除后,这两个导入符号仍在文件其他地方被引用(_extract_url_data 和多模态处理部分),因此保留导入。
  3. 配套:该变更不涉及测试、配置或部署改动,因为被删除的代码无调用者,不改变任何执行路径。CI 通过,包括 EP D 分离测试。
文件 模块 状态 重要度
python/sglang/srt/disaggregation/encoder/receiver.py disagg 接收 modified 5.24

关键符号

build_and_send_encode_request

关键源码片段

python/sglang/srt/disaggregation/encoder/receiver.py core-logic

删除了 `MMReceiverGrpc.build_and_send_encode_request` 方法,该方法无调用者且签名不兼容。

# receiver.py 中 MMReceiverGrpc 类内部(删除方法前后对比)# 变更前:存在一个无调用者的死方法
# def build_and_send_encode_request(self, image_urls, rid):
# encode_req = GenerateReqInput(
# image_data=[ImageData(url=url) for url in image_urls],
# rid=rid,
# )
# # 这里调用 send_encode_request,但该方法在本模块存在两个签名:
# # 继承的 MMReceiverBase.send_encode_request(self, obj, time_stats_json=None)
# # 和同文件中三个无参数的 send_encode_request(self) 定义,
# # 因此如果被调用会导致 TypeError,实际上无法工作。
# self.send_encode_request(encode_req)
# return encode_req# 变更后:该方法被删除,其他逻辑不受影响
# For zmq_to_scheduler
def process_waiting_requests(self, recv_reqs):
    return self._process_waiting_requests(recv_reqs, WaitingZmqRequestGrpc)async def encode(
    self,
    req_id,
    mm_data,
    embedding_port,
    endpoint_encode,
    num_items_assigned=None,
    encode_urls=None,
):
    # ... 原有逻辑不变

评论区精华

CI 重跑 other

作者在 issue 评论中请求重跑 `test_epd_disaggregation.py`,github-actions 回复测试通过。

结论:CI 验证通过,证明删除死代码无副作用。 · 已解决

风险与影响

该变更是纯删除死代码,无调用者,风险极低。唯一潜在风险是如果未来有人误以为该方法存在而调用,但通过代码搜索可以避免。由于 GenerateReqInputImageData 仍有其他用途,导入未受影响。

影响范围极小,仅涉及 disaggregation 模块中 receiver.py 文件,不影响任何功能、性能或接口。对用户无感知,对团队降低了维护成本。

纯死代码删除 无调用者

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论