# PR #7132 完整报告

- 仓库：`PaddlePaddle/FastDeploy`
- 标题：[CI] Optimize log cleanup and isolation in unittest
- 合并时间：2026-04-01 22:07
- 原文链接：http://prhub.com.cn/PaddlePaddle/FastDeploy/pull/7132

---

# 执行摘要

- 一句话：优化单元测试日志清理逻辑，解决残留日志和空目录问题。
- 推荐动作：该 PR 变更聚焦于 CI 脚本优化，逻辑清晰且风险低。对于关注 CI 流程和测试隔离的工程师，值得快速浏览以了解日志清理的最佳实践；对于其他开发者，无需深入阅读。

# 功能与动机

根据 PR body 描述，单元测试日志清理存在三个问题：1) 某些日志（如 console_error.log）可能被后台进程重新生成；2) 空目录未能完全删除；3) 难以确保只保留失败用例的日志目录。这些问题的存在影响了日志隔离的可靠性，可能导致不必要的日志残留和调试困难。

# 实现拆解

主要修改了 scripts/coverage_run.sh 文件中的两个函数：1) 在 run_test_with_logging 函数中，将日志清理逻辑从端口进程清理之前移到之后，以避免清理后文件被重新生成的竞态条件；2) 在脚本末尾的日志打包前清理部分，新增了删除 console_error.log* 文件的命令，并引入了 while 循环递归删除空目录的逻辑，确保嵌套空目录也能被完全清理。

关键文件：
- `scripts/coverage_run.sh`（模块 CI/ 测试脚本）: 唯一修改的文件，包含了日志清理逻辑的全部优化点，直接决定了单元测试日志的隔离和清理行为。

关键符号：run_test_with_logging


# 评论区精华

Review 中只有 AI bot 的自动化评论，没有人工讨论。AI bot 的评论肯定了变更的合理性，指出主要改进包括：代码顺序调整以避免竞态条件、新增 console_error.log 清理、多轮空目录清理。评论认为代码逻辑清晰，错误处理完善，符合 shell 脚本最佳实践。

- 日志清理顺序调整以避免竞态条件 (correctness): 变更被认可为合理改进，符合 shell 脚本最佳实践。
- 新增 console_error.log 清理和多轮空目录删除 (design): 变更被认可为有效的优化，提升了清理彻底性。

# 风险与影响

- 风险：风险较低，主要涉及脚本执行逻辑：1) 顺序调整可能影响极端情况下的进程清理和日志删除的时序，但 AI bot 认为这是正确的做法；2) 新增的 find 删除命令和 while 循环如果路径异常可能导致意外删除，但使用了 || true 错误抑制；3) 变更仅影响 CI 脚本，不涉及核心业务逻辑。
- 影响：影响范围限于 CI 测试环境：1) 对用户无直接影响；2) 对系统：提升单元测试日志的隔离性和清理彻底性，减少磁盘空间占用，便于失败日志分析；3) 对团队：简化 CI 维护，减少因日志残留导致的调试干扰。影响程度为低到中，主要改善运维体验。
- 风险标记：脚本时序调整 , 文件删除逻辑

# 关联脉络

- PR #7085 [CI] Optimize test execution with single-GPU parallelism: 同样涉及 CI 测试优化，修改了相同文件 scripts/coverage_run.sh，关注测试执行和日志收集的改进。
- PR #7098 [Feature] Add logging parameters and error output to terminal: 涉及日志系统优化，虽然聚焦于应用层日志参数，但与本 PR 的日志清理主题相关，共同提升日志管理效率。