mirror of
https://github.com/open-webui/open-webui.git
synced 2026-10-05 02:41:34 +00:00
fix: server memory grows with every chat until a restart
Every chat that got a reply left a small lock behind in the server process, so a long-running server kept one for every chat it had ever answered and only a restart gave the memory back. The lock is now dropped as soon as nothing is using it, so a finished reply leaves nothing behind per chat, while replies, sub-agent results and timers for the same chat still wait for each other as before. Fixes #31521
This commit is contained in:
parent
176d31d1db
commit
d1789c889b
1 changed files with 2 additions and 1 deletions
|
|
@ -3,6 +3,7 @@ from __future__ import annotations
|
|||
import asyncio
|
||||
import copy
|
||||
import time
|
||||
import weakref
|
||||
from datetime import timedelta
|
||||
from uuid import uuid4
|
||||
|
||||
|
|
@ -41,7 +42,7 @@ MUTATING_MEMORY_TOOLS = {
|
|||
_background_active: set[str] = set()
|
||||
_background_lock = asyncio.Lock()
|
||||
_foreground_semaphore: asyncio.Semaphore | None = None
|
||||
_parent_locks: dict[str, asyncio.Lock] = {}
|
||||
_parent_locks: weakref.WeakValueDictionary[str, asyncio.Lock] = weakref.WeakValueDictionary()
|
||||
|
||||
|
||||
def _build_request(source: Request, user_id: str, *, internal: bool) -> Request:
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue