4.4 KiB
P4 进展:实例受理与首批事务
日期:2026-09-18。本阶段实现实例内部服务/存储Start/Get/Steps,以及初始最多32个变更的原子落库。未开放实例HTTP/SDK;Inbox消费与等待运行器仍未实现,不能按首批任务执行证明整个流程闭环。
实现
- 显式版本、输入契约、当前队列权限、独立启动/读取权限、命名空间未终结实例上限。
- 原身份回执恢复;固定版本/门控/全部静态步骤/首批任务或等待/轮次/检查点/事件/审计同事务。
- 六类节点持久化,任务和POLL截止受父绝对截止限制;内部根步骤支持有限推进检查点。
- 元数据步骤查询核验固定定义与当前激活,实例查询核验输入及冻结策略。
- 新迁移000018保留旧等待的完整UTF8关联和尾部空格,补齐信号名称及契约版本;无外键,字段提供中文注释。
验证状态
环境为macOS arm64、Go 1.27.1、隔离Docker MySQL 8.4.10;所有数据库为一次性测试库。
| 用例 | 当前证据 |
|---|---|
| 并发受理 | 12个同键Start只创建一份实例及任务;精确数字、固定版本、原截止和同键冲突验证通过 |
| 真实首批Worker | 服务真实创建任务,Worker开始并完成后恰好一条内部结果;普通任务取消接口不能绕过流程所有权 |
| 六类节点 | TASK/BRANCH/PARALLEL/SIGNAL/TIMER/POLL初始记录、未选中路径、等待不占Worker、512字节关联、128字符名称、轮次和父截止通过 |
| 事务故障与背压 | 队列只能容纳2个但首批需要3个时全部回滚,原键扩容后成功;步骤、等待、任务和审计注入失败均无半套图或额度泄漏 |
| 权限及读取 | 范围撤销后原键和查询拒绝,跨namespace不可见;损坏当前激活和冻结策略的查询拒绝通过 |
| 有限检查点和升级 | 114个静态步骤的32变更首批边界、根检查点及v17等待完整升级通过;相关存储/升级/零外键定向回归连续3轮通过,共59.628秒 |
| 完整检查 | make fmt/test/vet/build通过;完整隔离脚本退出0,存储、SDK、21个示例及进程故障通过;临时容器已清理 |
| 查询关联补强 | 完整脚本运行期间补充Steps直接任务的所有者、门控及固定队列核对,新增损坏owner/queue用例;最新实例受理组race连续3轮通过,共12.673秒,随后完整make检查再次通过 |
完整脚本测试组耗时如下(秒);最后的只读实例查询补强以上方专门回归为验证证据,未重新运行无关SDK/进程组:
| 测试组 | 耗时 |
|---|---|
| MySQL存储全量 | 119.723 |
| Worker连接及运行SDK | 91.108 |
| 计划 / 队列资源SDK | 5.651 / 4.479 |
| 批量受理 / 任务查询SDK | 1.378 / 1.412 |
| 订阅管理 / 事件SDK | 33.434 / 52.879 |
| 人工恢复 / 定义发布SDK | 3.406 / 1.356 |
| 独立Inbox / Outbox | 35.611 / 34.673 |
| 应用额度SDK | 1.521 |
| SDK进程故障 | 93.931 |
共运行19个SDK例子和独立Inbox/Outbox的2个示例,10个SDK进程故障父用例及两个独立模块的进程故障用例通过。它们验证既有Pulse/定义发布链路,不能充当Weave后续自动运行的证据。
复现入口:
make fmt test vet build
make integration
本次通过GO参数选择Go 1.27.1、DOCKER参数选择本机Docker。脚本自行建库并清理,普通测试在数据库环境变量缺失时会跳过集成用例,不能代替实际integration结果。
首轮数据库回归发现实例字段均未变化时MySQL返回affected_rows=0,不能据此判断实例丢失。已改为每次持久化决策递增实例revision并校验旧版本,首批回执为revision="2"。同时修正测试定义的POLL任务/节点/最终信号时限不一致;生产发布校验保持严格。
直接查询完整回归临时数据库:外键数量为0,业务表字段空COMMENT数量为0。代码扫描核对含公共Record共295个持久化字段声明,中文注释无遗漏;808个本地文档链接、53个JSON块及git diff --check通过。
尚待完成
当前测试中的实例由真实内部受理服务创建,首批任务走真实Pulse执行与内部交付;Get不会隐式消费Inbox。尚无流程后继自动推进、定时/信号/轮询恢复或流程进程强杀验收。公共API、SDK启动例子和完整运行器在后续阶段接入。生产容量、跨节点拓扑、清理和运维继续属于P6–P7。