open-webui/backend/open_webui
Claude fb212156f3
fix(stream): mark flushed events _replayed, add Redis hot-path breaker
Critical: last round's fence-flush fix (keep the queue in the map
while draining) turned into an infinite loop because every shifted
event went back through chatEventHandler's fence-check branch and
was re-queued into the same queue we were trying to drain. Mark
each flushed event `_replayed = true` before dispatch so the
chatEventHandler fence-buffering branch short-circuits. Re-entrancy
ordering is still preserved: live frames arriving during an await
inside a flushed-event's handler still don't carry `_replayed` and
continue to buffer into the same queue, staying ordered after the
current flush batch.

Warning: under sustained Redis slowness every emit was paying
100ms on INCR and another 100ms on XADD+EXPIRE, so live token
delivery could stall 200ms/frame during an outage. Added a
module-level circuit breaker that trips after 3 consecutive
failures/timeouts and short-circuits the hot-path Redis calls for
a 10s cooldown window. First successful call after cooldown resets
the counter. Replay reads deliberately bypass the breaker because
they're user-initiated and worth the slower timeout.
2026-04-15 06:44:35 +00:00
..
data refac: mv backend files to /open_webui dir 2024-09-04 16:54:48 +02:00
internal refac 2026-04-12 19:41:02 -05:00
migrations refac 2026-04-01 18:26:46 -05:00
models refac 2026-04-13 21:29:03 -05:00
retrieval fix(retrieval): offload Loader.load to a worker thread so file uploads stop blocking the event loop (#23705) 2026-04-14 10:55:46 -05:00
routers fix(retrieval): offload Loader.load to a worker thread so file uploads stop blocking the event loop (#23705) 2026-04-14 10:55:46 -05:00
socket fix(stream): mark flushed events _replayed, add Redis hot-path breaker 2026-04-15 06:44:35 +00:00
static refac 2026-03-23 23:39:52 -05:00
storage refac 2026-04-12 19:08:30 -05:00
test refac 2026-03-17 17:58:01 -05:00
tools fix(retrieval): offload sync VECTOR_DB_CLIENT calls in async paths via AsyncVectorDBClient (#23706) 2026-04-14 10:50:18 -05:00
utils refac 2026-04-14 10:55:11 -05: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 refac 2026-04-14 00:07:50 -05:00
constants.py refac 2026-04-13 14:08:58 -05:00
env.py refac 2026-04-13 16:25:44 -05:00
functions.py refac: async db 2026-04-12 14:22:11 -05:00
main.py fix(middleware): replace BaseHTTPMiddleware HTTP middlewares with pure ASGI implementations (#23709) 2026-04-14 10:47:48 -05:00
tasks.py refac 2026-03-17 17:58:01 -05:00