974 B
974 B
转码 rendition 幂等与失败落库
根因
- 成功事务只按 media_asset_id 删除旧 rendition。
- 同一分集替换视频后 media_asset_id 改变、episode_id 不变, 旧行未被删除,触发 uk_rendition(episode_id, quality, format)。
- rendition 插入异常后任务未被可靠置为 FAILED。
修复
- 成功事务删除条件分组为:
media_asset_id = 本次媒体 OR (episode_id > 0 AND episode_id = 本次分集)。 - 缩略图登记按 episode_id 删除旧行后重新插入。
- 主流程异常调用 failFinal,直接写 FAILED、错误、finished_at,保留 progress。
- failFinal 自身异常在 worker 中 catch 并打印 ERROR,不静默。
- error 截断同时保留头部与尾部,长度仍 <= 500。
验证
- 不同 media_asset_id、同 episode_id 的重复转码清理条件。
- thumbnail 旧行替换。
- 失败落库字段与尾段错误保留。
mvn -q -DskipTests=false test -pl ... -am。