Repository navigation
v2.7.7
v2.7.7 - 2026-10-20
本版本修复热更新后旧插件实例在退出时覆盖新快照、导致历史请求、花费和周额度统计回退的问题。无需新增配置,存储快照格式保持 v3。
修复
- 实现
plugin.quiesce:热替换前等待已开始的调用和兜底入账结束,排空持久化队列、保存快照并释放数据目录。暂停后拒绝新的业务调用,重复 shutdown 不再写出旧快照。 - 为持久化目录增加操作系统独占写入锁
.writer.lock,覆盖加载、写入和分片清理。其他实例占用目录时停止当前实例的持久化,并通过存储状态及健康告警报告错误,避免两个实例互相覆盖数据。锁随正常交接或进程退出自动释放,无需删除锁文件。 - 支持热替换失败后,由宿主通过
plugin.reconfigure重新启用已暂停的旧实例并从磁盘恢复统计。
首次升级步骤
从 v2.7.6 及更早版本首次升级到 v2.7.7,必须停服替换,不能直接在运行中的旧实例上热更新。 旧二进制不支持暂停和写入锁,新版无法约束已驻留的旧代码。
- 停服前先做完整用量导出,另备份存储目录和模型价格文件;事件筛选导出不能替代完整用量备份。
- 停止 CPA 服务或容器,再替换对应平台的插件文件并启动,保留原持久化路径。
- 核对总请求数、token、花费及
/health的存储错误。若停服时已驻留的旧实例覆盖了快照,导入停服前的完整用量备份恢复记录。
已支持此交接协议的版本之间可由宿主在热替换前暂停旧实例并移交写入权。多实例部署仍应分别使用独立数据目录。排除写入锁冲突后需重新配置或重启,以恢复持久化。
本修复防止后续覆盖,无法补回已经丢失且没有备份的历史请求与花费。回退到旧版前应保留当前完整导出及数据目录,并使用升级前的备份恢复旧版。
Full Changelog: v2.7.6...v2.7.7