Files
orbit/docs/reports/phase-7-regression-status.md

13 KiB
Raw Blame History

P7 当前回归状态

验证日期:2026-09-20。本记录只汇总当前环境实际执行的回归,不把跳过或预条件失败写成通过。

已执行

检查 环境/命令 结果
本地发布门禁统一入口 2026-09-20;make release-local-check PASS;服务端、SDK、独立示例竞态测试、vet、build、当前协议门禁、146个 Markdown 本地链接和 SDK 独立依赖检查均通过;命令明确不替代真实 MySQL 集成与目标生产验收
就绪探针排空门控 go test -race ./internal/transport/httpserver ./cmd/orbit;TestReadinessEntersDrainBeforeShutdown PASS;SIGTERM 关闭路径先将 /health/ready 置为 503,再进入限定优雅关闭窗口;响应不泄露内部错误
服务端单元与竞态、vet、构建 Docker golang:1.27.1,仓库声明版本;GOWORK=off go test -race ./... && go vet ./... && go build ./... PASS
后台运行参数边界 internal/config.TestRuntimeDefaultsAndBoundedOverrides;默认值与五个 ORBIT_* 覆盖项 PASS;循环间隔限定100ms–1m,批量限定1–100,排空超时限定1s–5m,服务启动日志记录生效值
生效运行参数指标 internal/observability.TestRuntimeObservationDoesNotExposeErrors;固定指标目录 PASS;workflow/schedule/execution_recovery 间隔、批量上限和排空超时以固定基数指标导出;排空状态同步为固定 gauge,不进入业务或租户标签
SDK 与独立示例竞态、vet、构建 Docker golang:1.27.1;SDK 全 module、全部示例、orbit-load、orbit-exec-load、orbit-schedule-load、orbit-workflow-load,以及 result-inbox/task-outbox PASS;健康/版本 SDK 契约包含 Client.Version(ctx),返回协议身份且不暴露敏感响应
容器发布物构建 make image;宿主平台 linux/arm64;显式 docker build --platform linux/amd64;带 VERSION、REVISION、BUILD_TIME 构建参数的版本化镜像;镜像内 GOWORK=off PASS;native 与 amd64 镜像均构建成功,包含 orbit、orbit-migrate、orbit-admin,运行用户为非 root;版本化 amd64 二进制和 OCI 标签均包含注入的构建身份,GET /version 契约单测通过;无 DSN 时服务按预期拒绝启动
当前协议门禁 make protocol-check PASS,当前 v1 契约同步
历史 SDK / 服务端任务 API 双向演练 Go 1.27.1、MySQL 8.4 一次性环境;make mysql-compatibility;历史提交 a50d5fa PASS;旧服务端+当前 SDK、当前服务端+旧 SDK 均完成真实任务受理、幂等、查询、分页和取消;不是正式标签或全协议矩阵
外键迁移防回归 TestPostRemovalMigrationGuard;服务端迁移运行时校验 PASS;000008 以前仅保留兼容清理历史,后续迁移在执行前拒绝引用约束 DDL
Go 1.27.1 MySQL 存储集成 MySQL 8.4.10,一次性容器;go test -race -count=1 -run Integration -v ./internal/storage/mysql PASS,206.706 秒;包含空库无外键基线、v7升级、Pulse/Weave/API/观测/恢复、提交故障、凭据故障与W16竞争;未设置服务二进制时仅 TestIntegrationWorkflowRuntimeProcess 跳过
Go 1.27.1 标准全量隔离回归(本轮) 宿主机 Go 1.27.1 darwin/arm64;GO=go DOCKER=docker ORBIT_TEST_MYSQL_IMAGE=mysql:8.4 sh scripts/test-mysql.sh;Docker MySQL 8.4.10 PASS,退出码0;存储与迁移263.017秒、指标进程6.731秒、流程全停接管45.636秒、SDK Worker/Event/任务进程组128.049秒、流程进程组13.812秒、Workflow SDK28.498秒、result-inbox34.628秒、task-outbox33.818秒;24个SDK示例、3个负载工具和两个独立业务模块均完成真实服务串跑,临时数据库已清理
Go 1.27.1 标准全量隔离回归(版本与观测标签变更后) 2026-09-20;宿主机 Go 1.27.1 darwin/arm64;GO=go DOCKER=docker ORBIT_TEST_MYSQL_IMAGE=mysql:8.4 sh scripts/test-mysql.sh;Docker MySQL 8.4.10 PASS,退出码0;000028 迁移、TestIntegrationOperationalSnapshot、metrics 启停进程、流程全停接管、Worker/Event 故障组、SDK 全量集成、24 个示例、3 个负载工具及 result-inbox/task-outbox 均完成真实服务串跑,临时数据库已清理;最新构建身份标签和 orbit_build_info 变更未破坏链路
Go 1.27.1 标准全量隔离回归(优雅下线排空门控后) 2026-09-20;宿主机 Go 1.27.1 darwin/arm64;GO=go DOCKER=docker ORBIT_TEST_MYSQL_IMAGE=mysql:8.4 sh scripts/test-mysql.sh;Docker MySQL 8.4.10 PASS,退出码0;存储/迁移252.852秒、metrics进程6.762秒、Orbit流程全停接管45.696秒、SDK Worker/Event/任务/流程故障组、24个示例、3个负载工具及 result-inbox/task-outbox 均完成真实服务串跑;就绪排空门控未破坏租约恢复、流程接续或优雅退出,临时数据库已清理
Go 1.27.1 标准全量隔离回归(排空状态指标后) 2026-09-20;宿主机 Go 1.27.1 darwin/arm64;GO=go DOCKER=docker ORBIT_TEST_MYSQL_IMAGE=mysql:8.4 sh scripts/test-mysql.sh;Docker MySQL 8.4.10 PASS,退出码0;存储/迁移249.882秒、metrics进程6.802秒、Orbit流程全停接管45.554秒、SDK Worker/Event/任务/流程故障组、24个示例、3个负载工具及 result-inbox/task-outbox 均完成真实服务串跑;orbit_process_draining 固定 gauge 和关闭路径未破坏既有行为,临时数据库已清理
MySQL COMMIT 包截断故障 MySQL 8.4.10 与 Go 测试容器共享网络命名空间;127.0.0.1 DSN;两组提交前/后切点 PASS;TestIntegrationWorkflowCommitFaults 8个子场景与 TestIntegrationCredentialCommitFaults 均通过,预期 unexpected EOF 为故障注入结果
Go 1.27.1 Orbit 控制进程全停/接管 同一共享网络命名空间;容器内构建 Linux Orbit 二进制;ORBIT_TEST_SERVER_BINARY=/tmp/orbit go test -race -run '^TestIntegrationWorkflowRuntimeProcess$' PASS,42.958 秒;强杀、全停、定时器、轮询、信号、人工复核和双节点接管均通过
Go 1.27.1 SDK Worker/Event 子进程故障 同一共享网络命名空间;容器内构建 Orbit 二进制;SDK TestIntegration(Worker|Event)Process PASS,121.600 秒;派发未送达、租约接管、ACK 提交回执丢失、慢消费者对等节点推进、重试未知结果、计划/优先级/键并发和任务接管均通过
Go 1.27.1 SDK Workflow 子进程故障 同一共享网络命名空间;容器内构建 Orbit 二进制;SDK TestIntegrationWorkflowProcess PASS,10.275 秒;流程暂停、信号/定时等待、任务结果和恢复后的版本/截止/预算均保持
Go 1.27.1 SDK 应用配额子进程故障 独立双命名空间应用配额凭据;共享网络命名空间;TestIntegrationWorkerProcessApplicationBackpressure PASS,1.055 秒;重启后共享额度、原回执和跨命名空间背压保持
Go 1.27.1 SDK 可运行示例真实服务串跑 MySQL 8.4.10 一次性库、真实 Orbit HTTP、Worker/Weave 凭据;24 个 SDK 示例及 orbit-exec-load、orbit-schedule-load、orbit-workflow-load PASS;24 个示例和 3 个负载工具均完成实际受理、执行、结果/事件/流程核对,所有负载样本 complete=true、unverified=0
Go 1.27.1 result-inbox 真实业务集成 独立接收方 MySQL 8.4.10;真实 Orbit HTTP/WSS;go test -race -run Integration ./...,含 COMMIT 回执丢失、进程强杀后 Inbox 接管、并发去重及事务回滚 PASS;测试包 34.183 秒,初始化与 demo 也完成;实际业务提交后才确认 ACK,最终业务效果只保留一次
Go 1.27.1 task-outbox 真实业务集成 独立发送方 MySQL 8.4.10;真实 Orbit HTTP;go test -race -run Integration ./...,含 CLI、三处 COMMIT 回执丢失、HTTP 回执丢失、发送进程强杀后租约接管、预算和错误分类 PASS;测试包 32.964 秒,初始化与 demo 也完成;原操作键恢复为单一平台任务
Go 1.27.1 备份恢复脚本 Go 1.27.1 交叉构建 macOS arm64 二进制;scripts/test-backup-restore.sh;MySQL 8.4 PASS;源/恢复核心计数均为 1,1,1,1,28,迁移校验完整、固定索引6个、外键0
Go 1.27.1 数据库短暂不可用脚本 Go 1.27.1 交叉构建 macOS arm64 二进制;scripts/test-db-recovery.sh;MySQL 8.4 同卷重启 PASS;readiness 200 → 503 → 200,恢复后使用原凭据成功受理任务
Go 1.27.1 MySQL GTID 复制与手工提升 两个一次性 MySQL 8.4 bridge 容器;真实 Orbit HTTP;scripts/test-mysql-replication.sh PASS;复制 IO/SQL 均为 Yes,任务记录复制到副本,源库停止后手工提升、结构核验和原幂等键重放通过;自动切换未验证
Orbit HTTP/metrics 子进程 同一共享网络命名空间;TestIntegrationMetricsProcess;metrics 启用/禁用各一组,禁用分支等待后台周期 PASS,5.304 秒;监听隔离、隐私、后台采样、metrics 关闭后调度器持续运行和优雅退出均通过;服务就绪排空门控另有单元/竞态覆盖
真实Worker执行测量 orbit-exec-load;最终短/混合/中长及截止不足四组,环境及原始JSON见测量报告 96+96+6项全部逐项核验,长任务18次续租;24项截止负例按预期非零退出。SDK全模块竞态/vet/build通过,生产容量未验收
真实Weave流程测量 orbit-workflow-load;24/100实例、固定发布版本双分支并行及24实例截止负例,见流程测量报告 124个正常实例、248个不同任务/唯一尝试和本地调用逐项关联;负例2成功/22未核验,非零退出。重新构建并保存源码/二进制哈希,替换旧证据;生产容量未验收

| 真实定时集中触发测量 | orbit-schedule-load;4×6及32×4触发,2×12截止负例,见定时测量报告 | 正常152项逐项核验;负例18个未观察点、4个未核验任务,非零退出;38个计划均暂停,实际库外键0。SDK全模块竞态/vet/build通过;生产容量未验收 | | 长期积压与曲线 | make schedule-backlog;32×8共256个触发点,1 Worker/容量1,独立连接每2秒读取状态 | 最高等待249,180秒截止时173成功/83未核验,计划全部暂停,实际库外键0;目标硬件资源与生产容量未验收,见积压报告 | | SDK 重连边界 | TestEventConsumerReconnectStormUsesBoundedBackoff,真实 TLS 测试服务器,4次连续断线 | 第5次连接恢复,重连4次、处理器调用1次、ACK1次;真实慢消费者/跨节点重连仍未验收,见重连报告 | | 真实慢消费者背压 | MySQL 8.4.10 一次性库、真实 Orbit HTTP/WebSocket;单节点 TestIntegrationEventConsumerSlowHandlerBackpressure 与双进程 TestIntegrationEventProcessSlowConsumerPeerProgress | 容量1阻塞首个处理器时第二条交付保留在服务端;对等节点仍可推进,释放后2次处理/2次ACK、每条attempts=1;连接风暴、资源曲线和生产容量仍未验收,见慢消费者报告 |

当前环境仍未覆盖

此前使用容器网络别名运行存储集成时,两组 COMMIT 故障测试曾因自身 127.0.0.1 明文连接前置条件被拒绝;本轮已改用共享网络命名空间单独复跑并通过,因此不再把它们列为未验证场景。共享网络命名空间只解决测试进程的 loopback 观察条件,不改变生产部署约束。

当前已完成仓库声明 Go 1.27.1 下的模块级门禁、MySQL 存储集成、关键 SDK/Orbit 进程故障组、24 个可运行 SDK 示例的真实服务串跑、两个独立业务模块的真实 MySQL/HTTP/进程故障集成、隔离 MySQL GTID 复制和手工提升演练,以及一个历史提交的稳定任务 API 双向 smoke;正式标签的完整 SDK/服务端跨版本矩阵仍未完成。新增长期积压和慢消费者样本见报告与慢消费者报告,仍未升级为生产容量结论。此前 Docker Go 1.25 共享网络结果作为历史对照保留,不替代 Go 1.27.1 集成回归、目标拓扑和版本兼容门禁。

历史 macOS arm64 + Go 1.27.1 + loopback MySQL 的完整切点记录见故障边界报告;该记录与本轮 Go 1.27.1 模块门禁互相独立,仍不能替代声明工具链下的无过滤 MySQL 集成复跑。

结论

本轮证明新增无外键空库基线、运维快照和协议门禁没有破坏现有服务端/SDK单元与真实 MySQL 存储行为。P7 仍未完成跨标签 SDK/服务端矩阵、宿主机进程全链路回归、目标拓扑容量、复制切换、RPO/RTO和生产发布审批。