Files
FruitServer/docs/plans/2026-10-22-transcode-claim-fix.md
T

1.2 KiB

转码任务认领与媒资 ID 校验

现场结论

  • media_asset.id=21 确实存在,source_url 对应分集 id=13。
  • 分集 13 的 video_asset_id=0,旧手动触发只拿媒资,不知道分集绑定, 因而创建了 media_asset_id=21、episode_id=0 的 QUEUED 任务。
  • claim 只筛选 episode_id>0,因此该任务永久跳过且没有原因日志。

修复

  1. POST /admin/media/{id}/transcode 严格只按 media_asset.id 查询; 不再把候选 id 当分集 id 兜底或补登记。
  2. 媒资存在时按 source_url 反查分集;找到后绑定 drama_id/episode_id。
  3. 找不到分集时拒绝建任务,避免生成永远无法认领的 episode_id=0 记录。
  4. claim 增加 media_asset_id/source_url 条件,并记录被跳过任务 id 与原因。
  5. RUNNING 无更新阈值收敛到 5 分钟,覆盖 worker 重启后的孤儿任务。
  6. 一次性 patch 将 media_asset_id 不存在且 episode_id=0 的 QUEUED/RUNNING 标记 FAILED。

验证

  • 非法 media id 拒绝、未绑定分集拒绝、合法 URL 自动绑定。
  • claim 跳过原因、进度更新、僵尸任务恢复。
  • mvn -pl fruitshorts-module-media,fruitshorts-transcode-worker test。