Prhub

#54310 [Test] Assert co-located RayExecutorV2 stores publish distinct ports

原始 PR 作者 aoshen02 合并时间 2026-08-29 13:13 文件变更 1 提交数 1 评论 2 代码增减 +32 / -6

执行摘要

新增测试断言共置 RayExecutorV2 各 rank-0 发布不同端口

PR #50969 用 bind 时内核分配的临时端口替换了派生的固定端口,并移除了相应的测试。但该测试保护的'同一主机上副本不得发布相同 rank-0 TCPStore 端口'的不变量具有外部意义,仍需覆盖。本 PR 在合并 #50969 时作为后续请求提出。

建议精读,因为其体现了如何通过测试保护关键不变量,并提供了重构共享辅助函数的良好实践。关注其如何通过端口持有和多实例隔离来确保测试有效性。

讨论亮点

Claude Code 自动审核因 fork 而禁用。维护者 AndreasKaratzas 已批准。无其他讨论。

实现拆解

本 PR 主要修改 tests/distributed/test_ray_v2_executor.py,改动分为三步:

  1. 提取辅助函数 _detached_rank0_worker:构造一个无需 Ray 即可创建 dist-init store 的 RayWorkerProc 实例,设置 world_size 为 1。
  2. 提取辅助函数 _assert_port_held:验证给定端口已被占用(bind 抛 EADDRINUSE)。
  3. 新增测试 test_colocated_dist_init_stores_hold_distinct_ports:创建三个 detached rank-0 worker,分别调用 create_dist_init_method() 获取端口,断言端口两两不同、等于各 store 实际绑定端口、不是特权端口(≥1024)且均被持有(EADDRINUSE)。
    测试配套:修改了现有 test_dist_init_store_owns_port 以复用新辅助函数,行为不变。
文件 模块 状态 重要度
tests/distributed/test_ray_v2_executor.py 分布式测试 modified 6.19

关键符号

test_colocated_dist_init_stores_hold_distinct_ports _detached_rank0_worker _assert_port_held

分析完成后,这里会展示 LLM 生成的相对完整源码片段和详细注释。

评论区精华

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

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

风险与影响

纯测试改动,不涉及生产代码。风险主要在于测试本身的稳定性:依赖内核临时端口分配,偶尔可能存在端口冲突或重复,但通过断言端口被持有且互不相同,能够降低误报风险。测试在 CI 中运行,可能受环境并发影响,但已通过本地验证。

影响局限于测试层面:新增对 RayExecutorV2 分布式初始化端口分配不变量的覆盖,防止回归到固定/派生端口的旧行为。对生产代码无影响。对团队而言,提高了分布式初始化的可靠性信心。

测试稳定性依赖内核端口

关联 Issue

未识别关联 Issue

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

参与讨论