环境
- 后端 v0.3.207,Chrome MV3 扩展
现象
把 OPENBILICLAW_YT_BOOTSTRAP_SCROLL_ROUNDS 调到 30 后(任务耗时变长),YouTube bootstrap_profile 任务被扩展 claim 后长期卡在 in_progress(claimed_at 有值、completed_at 为空),fetch-youtube 等到 300s 超时也等不到结果。此后:
GET /api/sources/yt/next-task 一直返回 204 No Content(因为有一个 in_progress 任务占着),新的 YouTube 任务无法再被领取;
- 必须手动进 SQLite 把该任务
status 改成 failed 才能恢复。
推测根因
任务耗时变长后,Chrome MV3 的 service worker 进入休眠,扩展 yt-task-dispatcher.ts 里 armTaskTimeout() 用的 setTimeout 不再触发,任务没有超时回收;后端也没有对 stale in_progress 任务的恢复机制。
建议
- 后端增加 stale
in_progress 任务回收(超过阈值自动置 failed / 释放);
- 扩展侧用
chrome.alarms 替代 setTimeout 做任务超时,避免 service worker 休眠导致定时器丢失。
环境
现象
把
OPENBILICLAW_YT_BOOTSTRAP_SCROLL_ROUNDS调到 30 后(任务耗时变长),YouTubebootstrap_profile任务被扩展 claim 后长期卡在in_progress(claimed_at有值、completed_at为空),fetch-youtube等到 300s 超时也等不到结果。此后:GET /api/sources/yt/next-task一直返回204 No Content(因为有一个 in_progress 任务占着),新的 YouTube 任务无法再被领取;status改成failed才能恢复。推测根因
任务耗时变长后,Chrome MV3 的 service worker 进入休眠,扩展
yt-task-dispatcher.ts里armTaskTimeout()用的setTimeout不再触发,任务没有超时回收;后端也没有对 stalein_progress任务的恢复机制。建议
in_progress任务回收(超过阈值自动置 failed / 释放);chrome.alarms替代setTimeout做任务超时,避免 service worker 休眠导致定时器丢失。