Skip to content

修复 History Import 失败分块在 Resume 时被跳过 - #138

Open
Iris3971 wants to merge 3 commits into
P0luz:testingfrom
Iris3971:codex/issue-137-testing
Open

Iris3971 wants to merge 3 commits into
P0luz:testingfrom
Iris3971:codex/issue-137-testing

Conversation

@Iris3971

@Iris3971 Iris3971 commented Nov 2, 2026

Copy link
Copy Markdown
Collaborator

改了什么

Fixes #137

修复 History Import 在分块处理失败后仍推进续传状态,导致 Pause 后 Resume 时跳过失败分块的问题。

新增 failed_chunk_indices 持久化记录失败分块。Resume 时会优先补跑历史失败分块,再继续处理主游标之后的新分块;补跑成功后同步清理失败状态。

为什么这么改

没有直接改成“分块失败就停止推进 processed”,因为当前 History Import 的既有行为允许长批次在单个 chunk 失败后继续处理后续内容,并最终以 partial 状态结束。

因此这里保留现有主游标继续向后的行为,同时单独记录失败分块:

  • 正常批量处理仍可继续,不因单块失败中断整次导入;
  • Pause / Resume 时不会因为 processed 已推进而静默跳过失败内容;
  • 历史失败分块重试成功后,会从失败集合中移除并同步更新 chunks_failed;
  • 同一失败分块再次失败时,不重复累计失败数;
  • fresh import 仍会重置状态,不改变原有 terminal partial 后重新导入的行为。

该问题使用合成输入和 mock extraction 独立复现,并确认在 main、3.8.0 testing 以及当前 testing 基线上均存在。

测过没有

已跑针对 History Import 的专项验证:

  • Ruff targeted static checks:通过
  • Import 相关 targeted tests:52 passed

回归测试覆盖:

  1. chunk 0 失败后 Pause → Resume,会先重试 chunk 0,再继续 chunk 1;
  2. 历史失败分块再次失败时,不会重复累计 chunks_failed;
  3. 历史失败分块补跑成功、后续新分块再次失败时,failed_chunk_indices、chunks_failed 与 terminal status 保持一致。

仓库普通 Tests workflow 仍会在既有 Bandit security check 处失败;当前 upstream testing 基线本身也存在同一 security-check failure,因此该红灯不由本次修改引入。


  • 我的提交都带了 Signed-off-by:(git commit -s),
    表示我有权提交这些代码 —— 见 [DCO](../DCO) 与 [CONTRIBUTING.md](../CONTRIBUTING.md)
  • 没有把真实记忆内容、API Key、密码带进这个 PR

Signed-off-by: Iris3971 <293864676+Iris3971@users.noreply.github.com>
Signed-off-by: Iris3971 <293864676+Iris3971@users.noreply.github.com>
Signed-off-by: Iris3971 <293864676+Iris3971@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant