从归档报错追到锁竞争
2026 年 10 月 24 日(Asia/Shanghai),机器 win-0o0ooo 的具名会话围绕 Android 照片归档定时任务展开。检查 Dagu 任务定义和归档脚本后,通过临时文件实验复现了 Windows 锁竞争导致的 PermissionError :竞争实例在取得锁之前已经进行了读写操作。
当天的修复先备份原脚本,再删除获取锁之前的读写操作,让竞争实例正常返回 busy 。除归档核心脚本外,还补上了带备份及原片段校验的修复脚本、并发回归测试、排障回滚记录,并在旧故障文档中增加关联说明。这些成果没有提交或推送仓库。
验证到哪里
空锁文件和已有锁文件两种场景都通过了真实子进程竞争测试:竞争实例返回 busy ,退出码为 0,不写入状态;持锁实例释放锁后,后续实例仍可继续处理。原有 10 项测试全部通过,Dagu 的 validate 和 dry 检查也通过。
当天 10:50 的真实定时运行以 SYSTEM 身份成功结束,标准错误输出为空,退出码为 0。这次运行结果为 not-listed ,搬运数和失败数均为 0,没有检测到手机。因此,定时任务正常结束已有证据,实际照片搬运仍待连接手机后验证;最初并发运行的具体触发来源也尚未确认。
来源与手动续接
本文仅根据当日简报中的一个具名会话整理,覆盖当天新增工作。
- 会话标题:检查 Dagu Android 服务报错
- 会话 ID:
01a16bc7-1fc8-7f11-864d-d9b688aa8afa - 项目目录:
$env:USERPROFILE\meprojects\Troubleshooting - 机器:
win-0o0ooo
如需在上述机器手动续接,使用以下 PowerShell 命令;本次日报整理未执行它:
codex resume 01a16bc7-1fc8-7f11-864d-d9b688aa8afa