Skip to content

Commit d59b933

Browse files
authored
fix: apply REDIS_KEY_PREFIX to tool_servers and terminal_servers cache keys (open-webui#23649)
These four Redis calls were the only places in the backend still using bare cache keys. Every other call already namespaces through REDIS_KEY_PREFIX, which is how multiple Open WebUI instances sharing a Redis database stay isolated. Two instances with different TOOL_SERVER_CONNECTIONS or TERMINAL_SERVER_CONNECTIONS would otherwise clobber each other's cached OpenAPI specs.
1 parent a7d4c53 commit d59b933

1 file changed

Lines changed: 11 additions & 4 deletions

File tree

backend/open_webui/utils/tools.py

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
ENABLE_FORWARD_USER_INFO_HEADERS,
5252
FORWARD_SESSION_INFO_HEADER_CHAT_ID,
5353
FORWARD_SESSION_INFO_HEADER_MESSAGE_ID,
54+
REDIS_KEY_PREFIX,
5455
)
5556
from open_webui.utils.headers import include_user_info_headers
5657
from open_webui.tools.builtin import (
@@ -853,7 +854,9 @@ async def set_tool_servers(request: Request):
853854
request.app.state.TOOL_SERVERS = await get_tool_servers_data(request.app.state.config.TOOL_SERVER_CONNECTIONS)
854855

855856
if request.app.state.redis is not None:
856-
await request.app.state.redis.set('tool_servers', json.dumps(request.app.state.TOOL_SERVERS))
857+
await request.app.state.redis.set(
858+
f'{REDIS_KEY_PREFIX}:tool_servers', json.dumps(request.app.state.TOOL_SERVERS)
859+
)
857860

858861
return request.app.state.TOOL_SERVERS
859862

@@ -862,7 +865,7 @@ async def get_tool_servers(request: Request):
862865
tool_servers = []
863866
if request.app.state.redis is not None:
864867
try:
865-
tool_servers = json.loads(await request.app.state.redis.get('tool_servers'))
868+
tool_servers = json.loads(await request.app.state.redis.get(f'{REDIS_KEY_PREFIX}:tool_servers'))
866869
request.app.state.TOOL_SERVERS = tool_servers
867870
except Exception as e:
868871
log.error(f'Error fetching tool_servers from Redis: {e}')
@@ -988,7 +991,9 @@ async def _fetch_system_prompt(server):
988991
)
989992

990993
if request.app.state.redis is not None:
991-
await request.app.state.redis.set('terminal_servers', json.dumps(request.app.state.TERMINAL_SERVERS))
994+
await request.app.state.redis.set(
995+
f'{REDIS_KEY_PREFIX}:terminal_servers', json.dumps(request.app.state.TERMINAL_SERVERS)
996+
)
992997

993998
return request.app.state.TERMINAL_SERVERS
994999

@@ -998,7 +1003,9 @@ async def get_terminal_servers(request: Request):
9981003
terminal_servers = []
9991004
if request.app.state.redis is not None:
10001005
try:
1001-
terminal_servers = json.loads(await request.app.state.redis.get('terminal_servers'))
1006+
terminal_servers = json.loads(
1007+
await request.app.state.redis.get(f'{REDIS_KEY_PREFIX}:terminal_servers')
1008+
)
10021009
request.app.state.TERMINAL_SERVERS = terminal_servers
10031010
except Exception as e:
10041011
log.error(f'Error fetching terminal_servers from Redis: {e}')

0 commit comments

Comments
 (0)