Skip to content

enhance: use weak session lock registry#344

Merged
liujuanjuan1984 merged 1 commit intomainfrom
issue-326-session-lock-lifecycle
Mar 27, 2026
Merged

enhance: use weak session lock registry#344
liujuanjuan1984 merged 1 commit intomainfrom
issue-326-session-lock-lifecycle

Conversation

@liujuanjuan1984
Copy link
Copy Markdown
Collaborator

概要

  • 实现 #326,收敛 SessionManager 空闲 session lock 的生命周期
  • 避免 manager 对空闲 asyncio.Lock 长期强持有

关联 Issues

按模块说明

1. Session Lock 生命周期

  • SessionManager._session_locks 从普通 dict 改为 weakref.WeakValueDictionary[str, asyncio.Lock]
  • 保持 get_session_lock() 对同一 session_id 的活跃 lock 复用语义不变
  • 当 lock 不再被执行路径持有时,允许其自动回收,避免长生命周期进程中 lock 字典持续累计

2. 回归测试

  • 新增 tests/execution/test_session_lock_lifecycle.py
  • 覆盖:
    • 同一 session_id 的 live lock 仍复用
    • 空闲 lock 在无外部强引用后会被自动回收
  • 同时通过既有 cancellation / session ownership 路径,确认没有破坏串行语义

回归验证

  • ./scripts/doctor.sh
  • 结果:439 个测试通过,coverage 91.48%

设计说明

  • 不新增新的 TTL/LRU 配置,也不引入 sweep 任务
  • 采用弱引用是更小、更稳妥的对象生命周期收敛方式,符合 #326 的“最小机制”目标

@liujuanjuan1984 liujuanjuan1984 changed the title use weak session lock registry enhance: use weak session lock registry Mar 27, 2026
@liujuanjuan1984 liujuanjuan1984 merged commit 2ced8b2 into main Mar 27, 2026
3 checks passed
@liujuanjuan1984 liujuanjuan1984 deleted the issue-326-session-lock-lifecycle branch March 27, 2026 13:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

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

1 participant