docs: 补充段结果表执行成功后清理策略
工作流执行成功时(BuildExecution 成功返回)与删 checkpoint 并列清理该执行的 flow_segment_result 段结果,执行失败则保留供 reExecute 复用,避免数据残留。
This commit is contained in:
@@ -56,7 +56,7 @@ flow_segment_result
|
||||
DAO 方法:
|
||||
- `Save(ctx, execId, nodeId, segmentIndex, videoURL) error` — 段成功后落库(INSERT ON CONFLICT DO UPDATE)
|
||||
- `ListByNode(ctx, execId, nodeId) (map[int]string, error)` — 返回 `segment_index → video_url`
|
||||
- `DeleteByExecution(ctx, execId) error` — 全新执行(forceNewRun)时清理旧段结果
|
||||
- `DeleteByExecution(ctx, execId) error` — 清理指定执行的段结果,两个时机:**全新执行(forceNewRun)清旧段**、**工作流执行成功后清理**
|
||||
|
||||
#### 组件 B:`FlowExecutionInput` 加 `ForceNewRun bool`
|
||||
|
||||
@@ -91,6 +91,7 @@ DAO 方法:
|
||||
2. `ModelLambda`:拆段得 5 份参数 → `DeleteByExecution` 清旧 → 需生成全部 5 段
|
||||
3. 并行调模型,每段失败重试 1 次;每段成功立即 `Save(execId, nodeId, idx, url)`
|
||||
4. 段 4 两次均失败 → 节点失败 → 工作流失败(段 1/2/3/5 已落库),exec_workflow 记失败
|
||||
5. 若全部段成功 → 节点成功 → 工作流继续 → `BuildExecution` 成功返回时删 checkpoint 并 `DeleteByExecution` 清理段结果
|
||||
|
||||
#### 重新执行(`ForceNewRun=false`,reExecute 断点续跑)
|
||||
|
||||
@@ -98,7 +99,7 @@ DAO 方法:
|
||||
2. `ModelLambda`:拆段仍得 5 段 → `!ForceNewRun` → `ListByNode` 得 `{1:url1, 2:url2, 3:url3, 5:url5}`
|
||||
3. 需生成段 = 仅段 4,只调模型生成它(失败重试 1 次)→ 成功 → `Save(…, 4, url4)`
|
||||
4. 合并 1-5 按段序 → `concat_videos` 按序拼接 → 节点成功,后续节点继续
|
||||
5. 工作流成功,删 checkpoint
|
||||
5. 工作流成功 → `BuildExecution` 返回时删 checkpoint + `DeleteByExecution` 清理段结果(下次全新执行无残留)
|
||||
|
||||
### 3.3 错误处理与边界
|
||||
|
||||
@@ -112,6 +113,7 @@ DAO 方法:
|
||||
| 并行段并发写表 | 每段 index 独立,唯一键 `(execution_id, node_id, segment_index)`,无冲突 |
|
||||
| 手动中断/断连 | 已成功段已落库,重跑自动复用 |
|
||||
| 重试次数 | 每段失败重试 1 次(共 2 次尝试),参数化可调 |
|
||||
| 工作流执行成功 | `BuildExecution` 成功返回 → 删 checkpoint 并 `DeleteByExecution` 清理该执行段结果,下次执行全新生成 |
|
||||
|
||||
### 3.4 测试
|
||||
|
||||
@@ -122,4 +124,4 @@ DAO 方法:
|
||||
|
||||
## 4. 开放问题
|
||||
|
||||
- 段结果表数据保留策略:当前 `forceNewRun` 清理 + 执行失败保留供复用;是否需定时清理历史成功段,暂不引入
|
||||
- 已解决:段结果表数据保留策略 = **`forceNewRun` 清理旧段 + 工作流执行成功后清理**(`BuildExecution` 成功路径与删 checkpoint 并列调用 `DeleteByExecution`);执行失败则保留,供 reExecute 复用。无残留、无需定时清理。
|
||||
Reference in New Issue
Block a user