46 lines
3.9 KiB
Markdown
46 lines
3.9 KiB
Markdown
# P4 结果消费与自动推进回归
|
||
|
||
日期:2026-09-18。范围为内部运行器,不是完整Weave或生产高可用验收。
|
||
|
||
## 已实现
|
||
|
||
- Orbit后台按数据库到期索引消费内部结果和根检查点;同一事务校验固定实例图、接受结果、更新步骤、创建后继或保存待续,并写确认、事件和审计。
|
||
- 顺序、分支、有限并行汇合及32步预算接续;重复消费者不重复创建后继。
|
||
- 满额SAVEPOINT回滚本轮后继,保留已确认结果;暂停/停用收集在途结果并保留检查点;失败或超期关闭新执行门控。
|
||
- 来源/激活/任务版本校验,非法来源隔离,旧激活或旧结果留痕;数据库故障不被误认成业务失败。
|
||
- POLL当前轮次的成功/等待/失败/核查分类,独立保留轮次与尝试预算、绝对截止和下一查询时间。
|
||
- 系统审计保存节点、来源记录与实例版本;真实进程强杀、全停时保存结果和双节点接管。
|
||
|
||
实现说明及明确边界见[运行器文档](../12-workflow-runtime.md)。本轮未增加实体、持久化字段、迁移或外键。
|
||
|
||
## 环境与执行记录
|
||
|
||
本机darwin/arm64,Go 1.27.1,独立Docker MySQL 8.4.10;隔离一次性数据库。未使用业务数据库或远端生产环境。
|
||
|
||
| 检查 | 结果 |
|
||
| --- | --- |
|
||
| `make fmt test vet build` | 已通过;服务端、独立SDK及两个业务示例module |
|
||
| 运行器真实MySQL定向回归 | 14个一级场景,含任务失败/未知/取消/非法输出4种分类及5个POLL分类;最终修订连续3轮通过,20.018秒 |
|
||
| 真实Orbit进程故障 | 已通过:确认唯一控制进程SIGKILL退出后保存结果,两个新进程只生成一个后继,最终3个任务、3条消费确认及3条推进审计 |
|
||
| 全量`make integration`等价脚本 | 已通过,退出码0;全存储132.893秒、流程进程8.506秒、Worker SDK 91.172秒、SDK进程故障93.679秒;19个SDK示例及2个独立业务示例全部通过 |
|
||
|
||
定向命令为`go test -race -count=3 -run '^TestIntegrationWorkflowRuntime$' -v ./internal/storage/mysql`,依赖`ORBIT_TEST_MYSQL_DSN`指向隔离测试库。进程用例额外需要构建后的`ORBIT_TEST_SERVER_BINARY`;全量入口[脚本](../../scripts/test-mysql.sh)负责创建隔离库、构建并执行该用例。
|
||
|
||
文档复核834个本地链接与53个JSON代码块,错误0;差异空白检查通过。
|
||
|
||
数据库复核MySQL 8.4.10、外键0、缺少COMMENT的业务列0。完整迁移升级回归与现有索引/数据保留检查通过。
|
||
|
||
开发中真实回归发现并修复了:未完成步骤NULL输出的SQL读取不兼容、分批复用检查点引发审计操作身份冲突;随后增加迟到结果历史版本回归,确保新确认不与先前实例事件冲突。后继额度中途失败和审计失败分别注入验证了事务回滚。
|
||
|
||
全量回归启动后,代码审阅补充了TASK确认取消保留CANCELLED状态,并新增对应真实Worker回归。最终修订另跑全部运行器场景三轮(20.018秒)、真实进程故障(9.183秒)及基础检查;全量记录与最后定向记录分别保留,不能把较早的全量结果声称为包含后续修改。
|
||
|
||
## 尚未完成的原定范围
|
||
|
||
1. SIGNAL/TIMER等待消费及到期扫描;早到、重复、超时和回执竞态。
|
||
2. POLL下一轮派发、完整定时扫描、信号与在途查询结清;已有next_poll_at不代表下一轮已自动运行。
|
||
3. FAIL_AFTER_SETTLED分支取消和失败终态收敛、暂停/继续/取消公共管理API、带证据人工恢复。
|
||
4. 实例/步骤/来源公共HTTP和独立SDK、全节点可运行接入例子。
|
||
5. 全量监控、负载与故障矩阵、MySQL高可用拓扑和备份恢复、P6–P7交付审计。
|
||
|
||
本地进程回归使用内部Start和Pulse执行存储驱动业务结果;这验证真实控制进程接管,不能替代公共HTTP/SDK端到端验收,也不证明生产数据库RPO/RTO或容量。
|