open-webui/backend/open_webui
Prometheus 532c60fe8c fix(mcp): remove asyncio.wait_for/shield from MCP cleanup in chat handler
asyncio.wait_for() and asyncio.shield() create new asyncio Tasks which
violate anyio cancel-scope task-ownership rules. The MCPClient's
exit_stack contains anyio resources (streamable_http transport) that
use anyio cancel scopes. When exited from a different task, anyio raises
'Attempted to exit a cancel scope that isn't the current task's current
cancel scope' as a BaseException.

This BaseException propagates through the finally block, discards the
completed response return value, and surfaces as a 500 Internal Server
Error / 'No response returned.' - silently swallowing successful MCP
tool calls and blocking the chat endpoint.

Fix: call client.disconnect() directly in a simple loop. MCPClient.disconnect()
already catches BaseException internally (see prior commit), so no
wrapper is needed.

Co-Authored-By: Circe (Claude Code Sonnet 4.6) <circe@athena-council.org>
Co-Authored-By: Claude <noreply@anthropic.com>
2026-04-26 18:48:55 +02:00
..
data refac: mv backend files to /open_webui dir 2024-09-04 16:54:48 +02:00
internal chore: format 2026-04-24 18:48:21 +09:00
migrations refac 2026-04-24 18:20:10 +09:00
models chore: format 2026-04-24 18:48:21 +09:00
retrieval chore: format 2026-04-24 18:48:21 +09:00
routers chore: format 2026-04-24 18:48:21 +09:00
socket refac 2026-04-17 13:29:51 +09:00
static chore: format 2026-04-19 22:45:54 +09:00
storage refac 2026-04-12 19:08:30 -05:00
test refac 2026-03-17 17:58:01 -05:00
tools refac 2026-04-24 18:06:19 +09:00
utils chore: format 2026-04-24 18:48:21 +09:00
__init__.py refac (#22987) 2026-03-24 15:41:26 -05:00
alembic.ini fix: Alembic CLI commands from failing 2025-08-15 04:17:47 -04:00
config.py feat: add PaddleOCR-vl loader support and implement retrieval router infrastructure (#23945) 2026-04-24 15:19:37 +09:00
constants.py chore: format 2026-04-14 17:27:31 -05:00
env.py refac 2026-04-24 16:23:28 +09:00
functions.py refac 2026-04-21 14:31:04 +09:00
main.py fix(mcp): remove asyncio.wait_for/shield from MCP cleanup in chat handler 2026-04-26 18:48:55 +02:00
tasks.py refac 2026-03-17 17:58:01 -05:00