feat(worker): ffmpeg渲染失败时捕获stderr写入error_detail,增强排障能力
AI Code Review / AI Code Review (pull_request) Failing after 32s
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 22s
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Has been cancelled
CI/CD Pipeline / Unit Tests (pull_request) Has been cancelled
CI/CD Pipeline / Integration Tests (pull_request) Has been cancelled
CI/CD Pipeline / Frontend Lint (pull_request) Has been cancelled
Auto Merge CI PRs / Auto Merge on CI Green + Approved (pull_request) Successful in 17m53s
Auto Approve CI PRs / Auto Approve on CI Green (pull_request) Successful in 19m11s
CI Build & Deploy Pipeline / Production Browser E2E (pull_request) Failing after 1462h22m7s
CI Build & Deploy Pipeline / Staging E2E Tests (pull_request) Failing after 1462h22m9s
CI Build & Deploy Pipeline / Deploy Production (pull_request) Failing after 1462h22m7s
CI Build & Deploy Pipeline / Build Production Worker Image (pull_request) Failing after 1462h22m9s
CI Build & Deploy Pipeline / Build Staging Web Image (pull_request) Failing after 1462h22m11s
CI Build & Deploy Pipeline / Build Production Web Image (pull_request) Failing after 1462h22m9s
CI Build & Deploy Pipeline / Build Production API Image (pull_request) Failing after 1462h22m9s
CI Build & Deploy Pipeline / Build Staging API Image (pull_request) Failing after 1462h22m11s
CI Build & Deploy Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Failing after 1462h22m9s
CI Build & Deploy Pipeline / Staging API Integration Tests (pull_request) Failing after 1462h54m9s
CI Build & Deploy Pipeline / Build Staging Worker Image (pull_request) Failing after 1462h54m11s
AI Code Review / AI Code Review (pull_request) Failing after 32s
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 22s
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Has been cancelled
CI/CD Pipeline / Unit Tests (pull_request) Has been cancelled
CI/CD Pipeline / Integration Tests (pull_request) Has been cancelled
CI/CD Pipeline / Frontend Lint (pull_request) Has been cancelled
Auto Merge CI PRs / Auto Merge on CI Green + Approved (pull_request) Successful in 17m53s
Auto Approve CI PRs / Auto Approve on CI Green (pull_request) Successful in 19m11s
CI Build & Deploy Pipeline / Production Browser E2E (pull_request) Failing after 1462h22m7s
CI Build & Deploy Pipeline / Staging E2E Tests (pull_request) Failing after 1462h22m9s
CI Build & Deploy Pipeline / Deploy Production (pull_request) Failing after 1462h22m7s
CI Build & Deploy Pipeline / Build Production Worker Image (pull_request) Failing after 1462h22m9s
CI Build & Deploy Pipeline / Build Staging Web Image (pull_request) Failing after 1462h22m11s
CI Build & Deploy Pipeline / Build Production Web Image (pull_request) Failing after 1462h22m9s
CI Build & Deploy Pipeline / Build Production API Image (pull_request) Failing after 1462h22m9s
CI Build & Deploy Pipeline / Build Staging API Image (pull_request) Failing after 1462h22m11s
CI Build & Deploy Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Failing after 1462h22m9s
CI Build & Deploy Pipeline / Staging API Integration Tests (pull_request) Failing after 1462h54m9s
CI Build & Deploy Pipeline / Build Staging Worker Image (pull_request) Failing after 1462h54m11s
- RenderAdapterResult新增error_detail字段存完整stderr - render_adapter单独捕获CalledProcessError,把stderr写入error_message和error_detail - edit_plan_generation失败时把error_detail拼进gen_task.error_message - 新增test_ffmpeg_error_captures_stderr测试 - 35个render_adapter测试全绿
This commit is contained in:
@@ -16,6 +16,7 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import logging
|
||||
import subprocess
|
||||
import tempfile
|
||||
from dataclasses import dataclass
|
||||
from pathlib import Path
|
||||
@@ -70,6 +71,7 @@ class RenderAdapterResult:
|
||||
rendered_clip_ids: list[str] = None # 成功渲染的 clip id 列表
|
||||
failed_clip_ids: list[str] = None # 失败的 clip id 列表
|
||||
error_message: str = ""
|
||||
error_detail: str = "" # 详细错误信息(如 ffmpeg stderr),用于排查
|
||||
|
||||
def __post_init__(self):
|
||||
if self.rendered_clip_ids is None:
|
||||
@@ -249,6 +251,20 @@ class RenderAdapter:
|
||||
failed_clip_ids=failed_clip_ids,
|
||||
)
|
||||
|
||||
except subprocess.CalledProcessError as exc:
|
||||
stderr_text = (exc.stderr or "").strip()
|
||||
logger.error(
|
||||
"[render-adapter] ffmpeg渲染失败: plan_id=%s job_id=%s exit_code=%d\nstderr:\n%s",
|
||||
plan_id,
|
||||
job_id,
|
||||
exc.returncode,
|
||||
stderr_text[:3000],
|
||||
)
|
||||
return RenderAdapterResult(
|
||||
success=False,
|
||||
error_message=f"FFmpeg渲染失败(exit={exc.returncode}): {stderr_text[:200]}",
|
||||
error_detail=stderr_text[:3000],
|
||||
)
|
||||
except Exception as exc:
|
||||
logger.exception(
|
||||
"[render-adapter] render failed: plan_id=%s job_id=%s engine=unified error=%s",
|
||||
|
||||
Reference in New Issue
Block a user