SessionDB 高并发写锁与 Jitter Retry 规避
解密 hermes_state.py 中 SQLite 事务重试、WAL 模式降级细节
📊 图 4-1-1:多智能体并发事务冲突、OperationalError 捕获与 Jitter 退避重试 UML 时序图
💾 1. SQLite Concurrency 并发避堵算法
在 hermes_state.py 中,智能体的会话状态全部由 SessionDB 管理。在大规模并发时,SQLite 容易爆出 OperationalError: database is locked。系统采用 Jitter Retry 避堵算法自愈这一错误,休眠一个随机抖动时间,打散抢锁时段。
📊 图 4-1-2:SessionDB 核心数据表、外键关系与索引结构 ER 关系图
📂 2. WAL 模式降级与 writable_schema 在线自愈
- NFS/挂载盘下 WAL 自动降级 (apply_wal_with_fallback):系统在启动时尝试设置 WAL,若报错则立刻降级为常规事务,保证智能体能正常运行。
- 在线更新 Schema 容错:当升级 Hermes 发现新版本新增了数据表字段而导致老 DB 报错时,
SessionDB会在捕获到错误后自动执行ALTER TABLE,在运行时实现在线热更新。