Files
orbit/docs/reports/phase-6-reconnect-storm.md

27 lines
1.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# P6 SDK 重连风暴边界回归
日期:2026-09-20。本批为独立 Go SDK 的受控协议回归,补充连接连续中断时的退避、处理器调用和最终 ACK 证据。它不是生产网络故障、跨节点公平性或慢消费者容量验收。
## 场景
`TestEventConsumerReconnectStormUsesBoundedBackoff` 使用真实 TLS WebSocket 客户端和受控测试服务器:前 4 次连接在握手后立即以传输错误关闭,第 5 次连接交付一条相同结果事件。消费器配置容量1、重连退避10–40ms、收尾1秒。处理器只在收到事件时增加一次本地调用计数,服务端收到合法 ACK 后才结束测试。
| 证据 | 结果 |
| --- | ---: |
| 连接尝试 | 5 |
| 断线后重连次数 | 4 |
| 退避上限 | 40ms |
| 事件处理器调用 | 1 |
| ACK确认 | 1 |
| 重复/本地立即重跑 | 0 |
| SDK竞态测试耗时 | 1.964s |
| SDK vet/build | 通过 |
测试通过 `go test -race ./...`、`go vet ./...` 和 `go build ./...`(Docker Go 1.25.14 临时 modfile)运行;仓库 `go.mod` 声明的 Go 1.27.1 未修改。协议服务器只用于测试,未调用外部业务副作用。
重连时消费器保留订阅和事件交付身份;只有处理器返回成功后才提交 ACK。这个用例只验证连接层的有界重连和一次处理器调用,不能证明断线期间服务端租约、跨消费者业务 Inbox 去重、真实网络分区或多节点重连风暴的全局结果。处理器必须在业务 Inbox 与业务效果同一事务中按事件 ID 去重,SDK 本地计数不能替代该持久事实。
## 后续门槛
生产验收仍需固定目标网络和节点数量,加入慢处理器、事件积压、租约到期、多个消费者同时重连、数据库锁等待和采集资源曲线;应记录交付租约、ACK确认、Inbox处理、连接池、CPU、内存和磁盘指标,并核对重启后原身份恢复。当前证据不升级为跨故障域高可用、RPO/RTO或容量结论。