执行摘要
本 PR 为 NVSHMEM 下载的 curl 命令增加重试机制(--retry 3 --retry-delay 2),以应对 DNS 解析失败等瞬态网络问题,提升 CI 脚本可靠性。仅一行变更,风险极低。
功能与动机
CI 流程中下载 NVSHMEM 库时偶现 DNS 解析失败(curl exit code 6),导致构建中断。PR body 中给出了错误示例:
curl: (6) Could not resolve host: developer.download.nvidia.com
通过增加重试参数,可使命令自动重试瞬态网络错误,无需手动重新触发 CI。
实现拆解
- 定位变更文件:
tools/ep_kernels/install_python_libraries.sh 第 104 行的 NVSHMEM 下载命令。
- 修改参数:将
curl -fSL "${NVSHMEM_URL}" 改为 curl -fSL --retry 3 --retry-delay 2 "${NVSHMEM_URL}"。
- 讨论调整:首次提交还包含了
--retry-all-errors,但 review 建议移除以避免掩盖 404 等永久错误,最终版本仅保留默认瞬态错误重试。
配套变更:无(仅有脚本参数调整)。
评论区精华
使用 --retry-all-errors 会掩盖持久问题,例如 URL 变更后返回 404,curl 仍会多次尝试。建议仅重试瞬态错误(默认行为已覆盖超时、DNS 失败、5xx 服务器错误)。
—— gemini-code-assist[bot]
作者确认并移除了 --retry-all-errors,只保留 --retry 3 --retry-delay 2。
风险与影响
- 风险:极低。若网络永久不可达,重试会将失败延迟 6 秒,但不会造成其他危害。
- 影响:仅 CI 构建流程中的 NVSHMEM 下载步骤,无用户可见影响。预期降低 CI 因网络瞬态故障而失败的频率。
关联脉络
本 PR 是独立的可靠性改进,与同仓库近期其他 PR(如 #40730 移除 asyncio 基础设施)不同,不涉及 MoE、Spec Decode 等核心模块。类似模式可推广到其他 curl 下载命令。
参与讨论