test: bound event consumer reconnect storms
This commit is contained in:
26
docs/reports/phase-6-reconnect-storm.md
Normal file
26
docs/reports/phase-6-reconnect-storm.md
Normal file
@@ -0,0 +1,26 @@
|
||||
# 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或容量结论。
|
||||
@@ -22,6 +22,7 @@
|
||||
|
||||
| 真实定时集中触发测量 | `orbit-schedule-load`;4×6及32×4触发,2×12截止负例,见[定时测量报告](phase-6-schedule-load.md) | 正常152项逐项核验;负例18个未观察点、4个未核验任务,非零退出;38个计划均暂停,实际库外键0。SDK全模块竞态/vet/build通过;生产容量未验收 |
|
||||
| 长期积压与曲线 | `make schedule-backlog`;32×8共256个触发点,1 Worker/容量1,独立连接每2秒读取状态 | 最高等待249,180秒截止时173成功/83未核验,计划全部暂停,实际库外键0;目标硬件资源与生产容量未验收,见[积压报告](phase-6-backlog.md) |
|
||||
| SDK 重连边界 | `TestEventConsumerReconnectStormUsesBoundedBackoff`,真实 TLS 测试服务器,4次连续断线 | 第5次连接恢复,重连4次、处理器调用1次、ACK1次;真实慢消费者/跨节点重连仍未验收,见[重连报告](phase-6-reconnect-storm.md) |
|
||||
|
||||
## 当前环境仍未覆盖
|
||||
|
||||
|
||||
Reference in New Issue
Block a user