lili 5d0f17a410 fix(ai): AI 异步 runtime 链补 updater 回填,修 scheduled 写 muse_ai_* updater null 死锁
问题: 剥离 sourceSnapshotId 后 AI task 首次真正进入 executor 执行,撞上预存 bug——AI 异步 runtime 链(dispatcher failClaimedJob、recorder recordFinished、projection createShadow)在 scheduled 线程用 new DO + updateById,yudao DefaultDBFieldHandler.updateFill 仅当登录用户存在才回填 updater(if userId!=null && updater==null);worker 线程无登录上下文 → updater 保持 null → updater 列(fill=UPDATE)进 SET=null → muse_ai_job/call/generation updater NOT NULL 违约 → 写回失败 → job 永久 running、task 卡 queued。

根因对比: knowledge parse worker 用 selectById DO(updater 保留原值)故不中招;AI 异步链用 new DO(updater=null)中招。该链此前从未在真实 scheduled 环境跑过(长期被 runtime permission 死锁遮蔽),方案 1 修复后首次触达才暴露。

修正(局部): 三处 new-DO updateById 显式 setUpdater(ownerUserId 保持 task 链审计连贯,fallback ai-runtime);insert 路径靠列 default '' 兜底不违约,不改。

验证: dispatcher 5 + projection 5 + permission 15 + MuseAiTaskService 40 全绿;待 e2e 重跑 AI task 坐实 job 推进 + 检索 snapshot。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-24 01:51:57 -07:00
2026-06-19 04:26:32 -07:00
Description
No description provided
36 MiB
Languages
Java 64.8%
TypeScript 17.2%
Vue 13.8%
HTML 1.5%
JavaScript 1.2%
Other 1.3%