16 KiB
P7 当前回归状态
验证日期:2026-09-20。本记录只汇总当前环境实际执行的回归,不把跳过或预条件失败写成通过。
已执行
| 检查 | 环境/命令 | 结果 |
|---|---|---|
| 本地发布门禁统一入口 | 2026-09-20;make release-local-check |
PASS;服务端、SDK、独立示例竞态测试、vet、build、当前协议门禁、146个 Markdown 本地链接和 SDK 独立依赖检查均通过;命令明确不替代真实 MySQL 集成与目标生产验收 |
| 发布物静态身份清单 | 2026-09-20;make release-manifest;无 ORBIT_MYSQL_DSN |
PASS;输出构建/协议身份及28条迁移名称与SHA-256校验和,未读取数据库、凭据或业务数据;目标库仍需单独执行 orbit-admin verify |
| 发布物与管理二进制绑定校验 | 2026-09-20;go test -race ./cmd/orbit-admin;匹配/修改 revision/未知命令场景 |
PASS;verify --manifest 在数据库连接前拒绝身份、协议或迁移校验和不一致的清单,匹配清单通过;不修改数据库 |
| 提交前事务死锁恢复 | go test -race -run TestRetryableTransactionErrorOnlyMatchesPreCommitLockFailures ./internal/storage/mysql;真实 MySQL TestIntegrationWithTxRetriesPreCommitDeadlock |
PASS;两事务真实锁环触发 1213,失败事务仅在提交前按有界退避重试一次,最终两笔事务各提交一次,且真实集成断言重试计数增长;Begin/Commit 错误不重放,目标拓扑锁等待和死锁率仍需生产观测 |
| 提交前事务重试观测 | internal/observability.TestRuntimeObservationDoesNotExposeErrors;固定指标目录;make release-local-check |
PASS;orbit_db_transaction_retries_total 与 orbit_db_transaction_retry_exhausted_total 以无标签固定计数器导出,重试只在退避成功后计数,提交回执不明不计入;目标拓扑告警阈值和跨节点聚合仍待生产验收 |
| 就绪探针排空门控 | go test -race ./internal/transport/httpserver ./cmd/orbit;TestReadinessEntersDrainBeforeShutdown |
PASS;SIGTERM 关闭路径先将 /health/ready 置为 503,再进入限定优雅关闭窗口;响应不泄露内部错误 |
| 健康探针响应契约 | 2026-09-20;go test ./internal/transport/httpserver && go test -race ./internal/transport/httpserver && make docs-check |
PASS;/health/live 与 /health/ready 返回 Cache-Control: no-store、X-Content-Type-Options: nosniff;未就绪和排空状态返回 Retry-After: 1,并由 HTTP 契约测试覆盖 |
| 数据模型中文注释门禁 | 2026-09-20;`go test ./internal/storage/mysql -run 'Test(FreshInstallBaselineHasChineseModelComments | FreshInstallBaselineContainsNoReferenceDDL |
| 服务端单元与竞态、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,不进入业务或租户标签 |
| WebSocket Hub 背压参数 | 2026-09-20;go test -race ./internal/config ./internal/observability ./internal/transport/httpserver ./cmd/orbit |
PASS;Worker/Event 连接上限、每个 Hub 的领取协程和有界内存排队可由环境配置,范围校验、应用和固定运行指标均有测试;持久化授权、租约和配额规则不由内存参数替代 |
| 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 和关闭路径未破坏既有行为,临时数据库已清理 |
| Go 1.27.1 标准全量隔离回归(Hub 背压配置后) | 2026-09-20;宿主机 Go 1.27.1 darwin/arm64;GO=go DOCKER=docker ORBIT_TEST_MYSQL_IMAGE=mysql:8.4 make integration;Docker MySQL 8.4.10 |
PASS,退出码0;存储与迁移、metrics 启停、流程全停接管、Worker/Event 租约与 ACK 恢复、队列背压、优先级/键并发、重试与未知结果、定时任务、Weave 流程暂停/信号/定时器/查询/恢复、24 个 SDK 示例、3 个负载工具及 result-inbox/task-outbox 均完成真实服务串跑;Hub 连接上限、派发协程和有界队列配置未破坏既有行为,临时数据库已清理 |
| Go 1.27.1 标准全量隔离回归(提交前事务重试后) | 2026-09-20;宿主机 Go 1.27.1 darwin/arm64;GO=go DOCKER=docker ORBIT_TEST_MYSQL_IMAGE=mysql:8.4 make integration;Docker MySQL 8.4.10 |
PASS,退出码0;存储/迁移254.604秒,其中真实 TestIntegrationWithTxRetriesPreCommitDeadlock 触发两事务锁环并确认 1205/1213 前提交重试;metrics进程7.156秒、流程全停接管45.734秒、SDK Worker/Event/任务进程组130.052秒、流程进程组14.121秒、Workflow SDK29.432秒、result-inbox35.737秒、task-outbox34.500秒,24个示例和3个负载工具均完成真实服务串跑;提交回执不明故障、租约恢复、Weave流程恢复和原幂等行为均保持,临时数据库已清理 |
| 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和生产发布审批。