背景
#312 原始提出的“内存活跃 Session 实例缺乏上限控制”在当前主干上已不成立:
SessionManager 已通过 SessionStateRepository 管理 session binding / owner state
- memory repository 中的
sessions 与 session_owners 已采用带 ttl + maxsize 的 _TTLCache
- 已有测试验证 owner cache 为有界缓存
因此,不需要再引入新的 A2A_MAX_ACTIVE_SESSIONS_IN_MEMORY 或额外的 LRU 驱逐层。
剩余问题
当前更窄但仍值得评估的残余是:SessionManager._session_locks 按 session_id 懒创建后,缺少显式清理路径。若服务长时间运行且遇到大量不同 session id,lock 字典可能持续累计。
这个问题与 session binding / owner cache 是否有界不同,应单独跟踪,不与 #312 混在一起。
建议方向
- 审查
session lock 的生命周期是否需要显式回收。
- 若需要,采用最小机制清理空闲 lock,避免引入新的全局配置复杂度。
- 保持现有 session binding / owner repository 语义不变,不重复设计已有 TTL/maxsize 边界。
回归测试建议
- 构造大量不同
session_id 的锁获取路径,验证清理策略不会破坏并发串行语义。
- 验证长期运行后空闲 lock 不会无界累计。
Related #312