v3.12.0 — P1 正确性加固批次
本版本为 P1 正确性加固批次:修复熔断器并发/低流量缺陷、缓存击穿与 goroutine 泄漏,并消除多处文档与代码不一致。
✨ 新增
- 熔断器
MinRequests配置:样本数达到MinRequests且错误率超阈值即可熔断,无需填满整个滑动窗口。默认 10,为 0 时回退为WindowSize(向后兼容)。解决低流量接口永不熔断问题。
🐛 修复
- 熔断器 HalfOpen 并发准入竞态:
allow()在准入时即占用试探配额,不再等到record()计数,杜绝高并发下超过HalfOpenMaxRequests的请求涌入。 - 缓存击穿:
MemoryStore/RedisStore的Remember接入singleflight,同 key 并发未命中合并为一次回源。 - 内存缓存 goroutine 泄漏:
cache.NewStore/DefaultStore的内存实现改为进程级共享单例,不再每次调用新起后台 GC goroutine。
🔧 变更
- secure_headers:注释校准——默认不启用 CSP(与页面强相关),改为文档化按需配置方式。
- gzip:落实跳过 SSE(
text/event-stream)与已编码响应;移除未实现的minSize死注释。 - validation:字段错误名改用真实
jsontag(支持snake_case)。 golang.org/x/sync提升为直接依赖。
全量测试通过(20 包),并发测试 -count=5 稳定。完整记录见 CHANGELOG.md。