open-webui/backend/open_webui
Classic298 8cf32ae2a7
fix: prevent worker death during document upload by using run_coroutine_threadsafe (#21158)
* fix: prevent worker death during document upload by using run_coroutine_threadsafe

Replace asyncio.run() with asyncio.run_coroutine_threadsafe() in
save_docs_to_vector_db() to prevent uvicorn worker health check failures.

The issue: asyncio.run() creates a new event loop and blocks the thread
completely, preventing the worker from responding to health checks during
long-running embedding operations (>5 seconds default timeout).

The fix: Schedule the async embedding work on the main event loop using
run_coroutine_threadsafe(). This keeps the main loop responsive to health
check pings while the sync caller waits for the result.

Changes:
- main.py: Store main event loop reference in app.state.main_loop at startup
- retrieval.py: Use run_coroutine_threadsafe() instead of asyncio.run()

https://claude.ai/code/session_01UQSYvSTkXb57sFb7M85Kcw

* add env var

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-02-12 15:22:57 -06:00
..
data refac: mv backend files to /open_webui dir 2024-09-04 16:54:48 +02:00
internal chore: format 2026-02-11 16:24:11 -06:00
migrations chore: format 2026-02-11 16:24:11 -06:00
models refac 2026-02-11 16:45:47 -06:00
retrieval chore: format 2026-02-11 16:24:11 -06:00
routers fix: prevent worker death during document upload by using run_coroutine_threadsafe (#21158) 2026-02-12 15:22:57 -06:00
socket chore: format 2026-02-11 16:24:11 -06:00
static refac 2025-08-10 00:02:58 +04:00
storage chore: format 2026-02-11 16:24:11 -06:00
test rm: outdated tests 2025-12-28 23:35:09 +04:00
tools chore: format 2026-02-11 16:24:11 -06:00
utils add message id (#21214) 2026-02-12 15:04:27 -06:00
__init__.py Update __init__.py 2025-04-15 09:55:35 +02:00
alembic.ini fix: Alembic CLI commands from failing 2025-08-15 04:17:47 -04:00
config.py chore: format 2026-02-11 16:24:11 -06:00
constants.py feat/enh: optional password validation 2025-11-20 17:44:49 -05:00
env.py add message id (#21214) 2026-02-12 15:04:27 -06:00
functions.py chore: format 2026-02-11 16:24:11 -06:00
main.py fix: prevent worker death during document upload by using run_coroutine_threadsafe (#21158) 2026-02-12 15:22:57 -06:00
tasks.py chore: format 2026-02-11 16:24:11 -06:00