SessionDB & Concurrency

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 避堵算法自愈这一错误,休眠一个随机抖动时间,打散抢锁时段。

数据库表关系 ER 图
📊 图 4-1-2:SessionDB 核心数据表、外键关系与索引结构 ER 关系图

📂 2. WAL 模式降级与 writable_schema 在线自愈

  1. NFS/挂载盘下 WAL 自动降级 (apply_wal_with_fallback):系统在启动时尝试设置 WAL,若报错则立刻降级为常规事务,保证智能体能正常运行。
  2. 在线更新 Schema 容错:当升级 Hermes 发现新版本新增了数据表字段而导致老 DB 报错时,SessionDB 会在捕获到错误后自动执行 ALTER TABLE,在运行时实现在线热更新。