Skip to content

fix(server): harden task lifecycle and database upgrades - #534

Merged
liujuanjuan1984 merged 5 commits into
mainfrom
chore/review-sdk-lifecycle
Sep 29, 2026
Merged

liujuanjuan1984 merged 5 commits into
mainfrom
chore/review-sdk-lifecycle

Conversation

@liujuanjuan1984

@liujuanjuan1984 liujuanjuan1984 commented Sep 29, 2026 •

Copy link
Copy Markdown
Collaborator

修复执行异常和停服后任务停留在 WORKING、后台资源未释放,以及旧数据库升级后终态保护和查询失效的问题。

  • 异常按原身份记录 FAILED;关闭时先排空缓冲输出,再补写失败状态并释放依赖,保护已有终态和断连后执行。
  • GetTask 复用 SDK 校验;旧任务事务转换、终态保护和同版本迁移工具均有回归覆盖。
  • 文档仅在使用指南保留必要说明与升级命令,删除其他文档的重复增补。

验证:./scripts/doctor.sh 通过,907 项测试,覆盖率 93.46%,协议检查 8/8、远端 5 项 CI 全部通过;新增关闭竞态回归在修复前有 8 项失败,修复后通过。

Refs #533:完整 legacy 队列替换尚未包含,保持 issue open。

参考:https://github.com/liujuanjuan1984/codex-a2a/issues/338(related)。

@liujuanjuan1984

Copy link
Copy Markdown
Collaborator Author

本轮独立代码复核

对 ded7a23 重新按 #533 验收目标审查,发现并已在工作分支修复以下问题,正在执行完整验证:

  1. 关闭会丢失已完成 producer 的缓冲终态:原实现取消全部后台 consumer;当 producer 已结束、consumer 正在写 COMPLETED 时,写入被取消,任务仍为 WORKING。现在显式区分输出 consumer 和其他后台清理,先等待关闭队列中的输出持久化,再收拢其余任务。
  2. 连续取消可绕过关闭屏障:原 aclose 只捕获一次 CancelledError,第二次取消会提前返回,使依赖先于任务清理关闭。现在对重复取消保持等待,并在清理结束后恢复取消语义。
  3. SendMessage 存储错误映射遗漏:补充的 producer.result() 位于原有 except 范围外,可能把 TaskStoreOperationError 直接抛给传输层。现在消费、清理和完成结果检查都在统一映射范围内。
  4. ASGI 测试资源清理遗漏:完整 doctor 暴露 aiosqlite worker 回调已关闭事件循环;ASGITransport 不运行 lifespan,而原 autouse fixture 只 dispose engine。fixture 现先 aclose 应用创建的 handler,再释放 engine,保证后台写入先完成,不忽略警告。

首轮三类运行时回归在旧提交上共 6 项失败;修复后已通过,并补充 SSE 断连与 memory/SQLite 对照。#533 的当前验收包含“明确 legacy 队列迁移边界”,不要求本 PR 替换 SDK 架构,因此保留 Closes #533。跨仓库 codex-a2a#338 仅作参考关联;已关闭的 #516 仅作资源清理背景,不重复关闭。

@liujuanjuan1984 liujuanjuan1984 changed the title fix(server): 修复任务失败持久化与关闭清理 fix(server): make task failure persistence and shutdown reliable Sep 29, 2026
@liujuanjuan1984

Copy link
Copy Markdown
Collaborator Author

本轮复核完成,修复已提交并推送为 805c913。缓冲终态持久化、连续取消关闭屏障、统一存储错误映射及测试清理顺序四项均已收敛。

最新验证:doctor 完整通过(883 项测试、93.44% 覆盖率),asyncio debug 下相关 95 项测试通过,协议探针 8/8;最新提交远端 5 项检查全部通过。未运行真实 OpenCode 集成或线上观察,完整 EventQueueLegacy 迁移仍遵循文档中的独立迁移条件。

PR 标题已改为英文 commit message 风格,描述按最终代码与两个 commits 重写为中文。保留 Closes #533;跨仓库参考仅作 related,#515/#516 为已关闭背景,不重复关闭。当前没有发现尚未解决的阻断问题。#534 保持 Draft,等待人工审核;开发 worktree 已提交推送且干净,主目录继续保持最新 main。

@liujuanjuan1984 liujuanjuan1984 changed the title fix(server): make task failure persistence and shutdown reliable fix(server): harden task lifecycle and legacy database upgrades Sep 29, 2026
@liujuanjuan1984 liujuanjuan1984 changed the title fix(server): harden task lifecycle and legacy database upgrades fix(server): harden task lifecycle and database upgrades Sep 29, 2026
@liujuanjuan1984
liujuanjuan1984 marked this pull request as ready for review September 29, 2026 13:18
@liujuanjuan1984
liujuanjuan1984 merged commit b8380b7 into main Sep 29, 2026
5 checks passed
@liujuanjuan1984
liujuanjuan1984 deleted the chore/review-sdk-lifecycle branch September 29, 2026 13:19
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