已开启
[Bug] packaging.py 多处 subprocess.run 无超时,打包/建环境可能挂起 #160
zhangzj创建于  9月23日
zhangzj
zhangzj
9月23日 创建

缺陷描述

foundation/openjiuwen_runtime/foundation/packaging.py 中 4 处 subprocess.run 均未设置 timeout:

  • package_python_to_whl 调用 python -m build(第 44-49 行)
  • create_virtualenv 调用 python -m venv(第 84 行)
  • install_package 调用 pip install(第 121-125 行)
  • uninstall_package 调用 pip uninstall(第 143-147 行)

影响

  • 打包或建环境时子进程卡住会导致整个部署/打包流程无限期挂起
  • TimeoutExpired 也未按各函数的异常契约(RuntimeError / bool)处理

文件位置

foundation/openjiuwen_runtime/foundation/packaging.py

修复建议

为每个 subprocess.run 增加合理 timeout(build 600s、venv 300s、install 600s、uninstall 300s),并将 TimeoutExpired 分别包装为 RuntimeError 或返回 False。

likedislike
zhangzjzhangzj
9月23日 添加了label:bug
openJiuwen-bot成员
9月23日 评论:

欢迎来到 openJiuwen 社区

Hey @gp1000 , 感谢你对社区的贡献.

机器人使用手册

有关指令的使用,可以点击 此处 查看详情。开发人员可以在每个PR或Issue下方评论特定指令来触发机器人任务。

likedislike
zhangzjzhangzj
9月23日 关联了pull request:fix: 补充子进程超时、修复部署器 fd 泄漏与 CLI 资源清理
YYuren1231
14 天前 关联了pull request:fix: 为 packaging.py 的 subprocess.run 增加超时,避免打包/建环境永久挂起
Yuren1231
14 天前 评论:

已修复并提交 PR:https://gitcode.com/openJiuwen/agent-runtime/merge_requests/583

根因:packaging.py 中 4 处 subprocess.run 均未设置 timeout,子进程因网络/私有源问题卡住时会导致部署/打包流程无限期挂起。

改动:为 4 处 subprocess.run 分别增加 BUILD_TIMEOUT=600、VENV_TIMEOUT=300、INSTALL_TIMEOUT=600、UNINSTALL_TIMEOUT=300,并捕获 subprocess.TimeoutExpired:package_python_to_whl / create_virtualenv 包装为 RuntimeError,install_package / uninstall_package 返回 False,异常契约保持不变。同时新增 4 个单元测试覆盖超时分支,本地验证全部通过。

likedislike