已开启
[Bug] packaging.py 多处 subprocess.run 无超时,打包/建环境可能挂起 #160
zhangzj创建于 9月23日
9月23日 添加了label:bug
openJiuwen-bot
9月23日 评论:
9月23日 评论:
9月23日 关联了pull request:fix: 补充子进程超时、修复部署器 fd 泄漏与 CLI 资源清理
Yuren1231
14 天前 评论:
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 个单元测试覆盖超时分支,本地验证全部通过。


缺陷描述
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。