From 03e48de1a950c804f7fe5eab1587b38a0e272649 Mon Sep 17 00:00:00 2001 From: Jason Kidd Date: Thu, 19 Dec 2024 14:15:02 -0800 Subject: [PATCH] fix: Issue in some environments running in dev mode with redis where periodic cleanup takes longer than TIMEOUT_DURATION*2 seconds to be called and the lock expires. --- backend/open_webui/socket/main.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/backend/open_webui/socket/main.py b/backend/open_webui/socket/main.py index add952331..dbc4d66f4 100644 --- a/backend/open_webui/socket/main.py +++ b/backend/open_webui/socket/main.py @@ -49,7 +49,6 @@ TIMEOUT_DURATION = 3 # Dictionary to maintain the user pool -run_cleanup = True if WEBSOCKET_MANAGER == "redis": log.debug("Using Redis to manage websockets.") SESSION_POOL = RedisDict("open-webui:session_pool", redis_url=WEBSOCKET_REDIS_URL) @@ -61,18 +60,18 @@ if WEBSOCKET_MANAGER == "redis": lock_name="usage_cleanup_lock", timeout_secs=TIMEOUT_DURATION * 2, ) - run_cleanup = clean_up_lock.aquire_lock() + aquire_func = clean_up_lock.aquire_lock renew_func = clean_up_lock.renew_lock release_func = clean_up_lock.release_lock else: SESSION_POOL = {} USER_POOL = {} USAGE_POOL = {} - release_func = renew_func = lambda: True + aquire_func = release_func = renew_func = lambda: True async def periodic_usage_pool_cleanup(): - if not run_cleanup: + if not aquire_func(): log.debug("Usage pool cleanup lock already exists. Not running it.") return log.debug("Running periodic_usage_pool_cleanup")