Skip to content

[Priority: Low] [Reliability] 评估 SessionManager 空闲 session lock 的清理策略 #326

@liujuanjuan1984

Description

@liujuanjuan1984

背景

#312 原始提出的“内存活跃 Session 实例缺乏上限控制”在当前主干上已不成立:

  • SessionManager 已通过 SessionStateRepository 管理 session binding / owner state
  • memory repository 中的 sessionssession_owners 已采用带 ttl + maxsize_TTLCache
  • 已有测试验证 owner cache 为有界缓存

因此,不需要再引入新的 A2A_MAX_ACTIVE_SESSIONS_IN_MEMORY 或额外的 LRU 驱逐层。

剩余问题

当前更窄但仍值得评估的残余是:SessionManager._session_lockssession_id 懒创建后,缺少显式清理路径。若服务长时间运行且遇到大量不同 session id,lock 字典可能持续累计。

这个问题与 session binding / owner cache 是否有界不同,应单独跟踪,不与 #312 混在一起。

建议方向

  1. 审查 session lock 的生命周期是否需要显式回收。
  2. 若需要,采用最小机制清理空闲 lock,避免引入新的全局配置复杂度。
  3. 保持现有 session binding / owner repository 语义不变,不重复设计已有 TTL/maxsize 边界。

回归测试建议

  • 构造大量不同 session_id 的锁获取路径,验证清理策略不会破坏并发串行语义。
  • 验证长期运行后空闲 lock 不会无界累计。

Related #312

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions