已关闭
[issue] 中断安装遗留 pending journal/锁/脏检测状态 #33
cezarbbb创建于  21 天前关闭于  16 天前
cezarbbb
21 天前 创建
name about title labels
BotForge 问题单 报告 BotForge 中可复现的问题 [Issue] 中断安装遗留 pending journal/锁/脏检测状态 bug

问题概述

SIGINT/SIGTERM/SIGKILL/超时中断后,事务遗留 pending journal、锁文件与脏检测状态;同目录后续操作受脏状态影响,需 --abandon 或换新数据目录恢复。首次出现:本版 1.0.3 新观察。受影响安装场景:安装过程中断(信号/超时/进程终止)后的恢复路径。实际影响:中断后同目录不可直接续用,恢复操作有额外成本。Windows 平台无 POSIX 信号,取消/硬杀以 exit=1 表现(平台差异已记录),遗留状态行为一致。

影响范围

项目 内容
执行模式 □ plan ☑ install □ status □ doctor
受影响的工具、资源或目标版本 journals 目录(pending journal)、锁文件、脏检测状态
安装后端 ☑ cargo(编译中断场景) □ archive □ apt-mirror □ 托管 Cargo □ 其他
影响程度 ☑ 一般
临时规避办法 resume --abandon 清理后重试,或换新数据目录

复现步骤

  1. 安装过程中发送 SIGINT/SIGTERM/SIGKILL(Windows 为终止进程)
  2. 检查 journals 目录、锁文件与脏检测状态
  3. 重试安装并观察恢复路径

预期结果

中断后状态可自动恢复,或给出明确的恢复指引。

实际结果

遗留 pending journal/锁/脏检测状态,需 --abandon 或新目录恢复;绿区 SIGINT 另遗留孤儿 cargo(本机与 sample 记录不同,已记录)。证据:T6.03/T6.04/T8.03/T8.08。分态实测(绿区 x86):

SIGINT(T6.03):BF1001/exit1 "command error: cancelled while waiting for Cargo work lock"
  → cargo 子进程仍存活(孤儿,需 kill -9);staging 无残留;journal 转 pending(1 个 rust-bot)
SIGKILL(T6.04):exit 137;locks 含 cache-lifecycle.lock(无 registry.lock);无孤儿 cargo;后续 install 正常恢复
失败(T8.03):BF1008 → 遗留 pending
合计 8 个 pending journal(bfh-data3:2/6:2/7:2/8:1/9:1)逐个 --abandon 后清零(0→8→0,T8.08)

各平台确认:绿区 Linux x86_64 复现(本机与 sample 记录存在孤儿 cargo 差异,已记录);绿区 Linux aarch64 / Windows x86_64 复现(Windows 无 POSIX 信号,exit=1 表现,平台差异);黄区 Linux x86_64 / ARM 复现。

运行环境与供应信息

项目 内容
BotForge 版本或提交号 bot-forge-hw 1.0.3(绿区/黄区)
操作系统与架构 Linux x86_64 / aarch64 / Windows x86_64(绿区);Linux x86_64 / ARM(黄区)
Shell bash(Linux)/ PowerShell(Windows)
配置来源 默认配置(中断实验)
软件仓库 / 镜像 不涉及
校验和清单 不涉及
相关工具及版本 cargo(SIGINT 孤儿进程,绿区 x86)

安全、性能与恢复证据

  • ☐ 已提供校验和、签名或来源验证结果
  • ☐ 已提供冷缓存/热缓存、执行次数和基线
  • ☐ 已提供总耗时、并发度、处理器、内存、磁盘或网络数据
  • ☑ 已提供取消、事务日志、失败恢复、回滚或幂等性表现(SIGINT/SIGTERM/SIGKILL/超时四类中断的遗留与恢复路径)
  • ☑ 已说明失败后的残留文件、进程或系统状态(pending journal/锁/脏检测状态;绿区 x86 另有孤儿 cargo 进程)

附件与提交确认

  • ☑ 已检索现有问题单,确认不是重复问题
  • ☑ 已提供最小复现步骤、预期结果和实际结果
  • ☑ 已提供可核对的安装、校验或恢复证据(如适用)
  • ☑ 已完成日志、配置和附件脱敏
likedislike
Ccezarbbb
21 天前 修改了issue 的描述
KKarliosQu成员
17 天前 关联了pull request:fix: route Linux SIGTERM through cancellation cleanup (issue#33)
VVaynNecol成员
16 天前 关闭了 issue