From b1b3fe8cf530206d4517dbef9c3be4c4ede1426b Mon Sep 17 00:00:00 2001 From: Hommy <16620803786@163.com> Date: Thu, 9 Apr 2026 15:19:22 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E9=94=81=E5=86=85=E5=AD=98?= =?UTF-8?q?=E6=B3=84=E6=BC=8F=E9=97=AE=E9=A2=98=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/utils/draft_lock_manager.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/utils/draft_lock_manager.py b/src/utils/draft_lock_manager.py index 001a5b6..0b02692 100644 --- a/src/utils/draft_lock_manager.py +++ b/src/utils/draft_lock_manager.py @@ -172,6 +172,18 @@ class DraftLockManager: raise finally: async with self._manager_lock: + # 无持有者、未锁定、且无等待者时回收锁对象,避免 draft_id 维度常驻增长 + lock_obj = self._locks.get(draft_id) + if lock_obj is not None: + waiters = getattr(lock_obj, "_waiters", None) + has_waiters = bool(waiters) if waiters is not None else False + if ( + self._lock_counts.get(draft_id, 0) <= 0 + and not lock_obj.locked() + and not has_waiters + ): + self._locks.pop(draft_id, None) + self._lock_counts.pop(draft_id, None) self._lock_owner.pop(draft_id, None) self._lock_acquired_at.pop(draft_id, None)