mirror of
https://github.com/open-webui/open-webui.git
synced 2026-09-16 23:43:03 +00:00
- chatEventHandler queue now stores {event, cb} pairs. Live frames
buffered during a replay fence used to lose their Socket.IO ack
callback because we only pushed the event. When replayed, callback-
style events (confirmation / execute / input) would silently never
respond. Now we preserve cb and pass it through to chatEventHandler
on flush.
- resume_stream ownership check is now fail-CLOSED on DB exception.
Previous fail-open skipped the check precisely when infra was
unstable. Client still gets a deterministic reply (empty envelopes)
so the fence clears; it just can't resume in that specific failure
mode. Absent chat_id still falls through to the user-scoped key
guarantee.
- Added per-message asyncio.Lock via a WeakValueDictionary keyed by
(user_id, message_id). Serializes seq-alloc + log-append + emit so
concurrent emitters for the same message_id within a worker can't
interleave and produce out-of-seq live frames. WeakValueDictionary
cleans up automatically once no coroutine holds the lock.
Cross-worker concurrency is still unprotected (would need a
distributed lock) but that's an even rarer scenario.
|
||
|---|---|---|
| .. | ||
| data | ||
| open_webui | ||
| .dockerignore | ||
| .gitignore | ||
| dev.sh | ||
| requirements-min.txt | ||
| requirements.txt | ||
| start.sh | ||
| start_windows.bat | ||