Skip to content

v0.1.1

Choose a tag to compare

@EchoPing07 EchoPing07 released this 20 Aug 05:22
· 3 commits to main since this release
fix: 修复并发安全缺陷并优化鉴权热路径性能

修复 review 发现的崩溃、并发阻塞与计费/日志准确性问题,
并将 Docker 默认监听调整为 0.0.0.0 以便局域网访问。

并发安全与崩溃防护
- upstream/billing: EnsureValid 与 Get 之间可能因并发登出返回 nil,
  补 nil 判断,消除空指针解引用 panic
- auth/TokenStore: 互斥锁改读写锁 + 独立刷新锁,刷新 HTTP 移出 token
  锁外执行,单飞靠「进入后重检 + 落盘前指针校验」,避免刷新期间阻塞
  所有 Get(原实现刷新全程持锁,高并发下全站卡顿最长 30s)

鉴权热路径性能
- apikey/Manager: 内存缓存全量 key(变更后 reload),去掉每请求
  SELECT 全表;RecordUsage 改异步队列,去掉 defer 同步 UPDATE;
  比对去掉 break,使总耗时与命中位置无关

计费与日志准确性
- proxy/aggregate: 工具停转重试改为累计 token(首轮 + 重试),
  不再覆盖首轮 usage 导致漏计费
- proxy/passthroughSSE: 写失败/客户端断开统一在循环出口记录
  ErrorMsg,修复「写失败型断开」日志误判为成功

错误处理与加固
- proxy/Chat: 上游非 200 不再原样透传错误体,改为解析 {code,msg}
  生成 OpenAI 风格错误,避免非 JSON/HTML 当 JSON 返回
- store: GetCache/SetCache 表名加白名单,防拼接 SQL 注入
- main: HTTP 服务异常退出改走统一关闭路径,显式关闭 DB 后再退出,
  避免跳过资源释放
- admin: 资源列表排序由 O(n²) 冒泡改 sort.Slice

部署文档
- docker-compose/README: Docker 默认监听 0.0.0.0:10082(局域网可访问),
  同步更新文档说明,公网部署需放反代加 TLS

影响范围
- 鉴权与刷新热路径的并发稳定性与吞吐提升
- 请求计费与日志更准确
- 上游错误响应规范化
- Docker 部署默认对局域网开放
- 不涉及配置格式与 API 兼容性变更