mirror of
https://github.com/open-webui/open-webui.git
synced 2026-09-16 23:43:03 +00:00
Critical: the seq counter was emitter-local and reset to 0 whenever a new emitter was created for the same message_id (crash-retry, continuation, etc.). The client's dedupe guard drops any frame with seq <= lastSeq, so a second emitter starting at 1 after the first hit 120 meant every live frame from the retry was silently dropped AND the replay filter (seq > after_seq) excluded them too. Exactly the failure scenarios this feature is for. Fix: seed the counter from the log's existing max seq on emitter construction via a new _stream_log_max_seq (XREVRANGE + COUNT 1 — cheap tail read). Retries now continue the sequence instead of colliding with it. Warning: _stream_log_truncate became dead code after the switch to TTL-shortening at done. Removed — if destructive reset is ever needed again it can come back with a specific call site. Suggestion: _stream_log_append / _stream_log_read / done-TTL-shorten upgraded from log.debug to log.warning. Silent Redis failures in debug-level were effectively invisible in prod; warnings surface the outage at the right severity without being noisy when Redis is healthy (these paths only log on exceptions). |
||
|---|---|---|
| .. | ||
| data | ||
| open_webui | ||
| .dockerignore | ||
| .gitignore | ||
| dev.sh | ||
| requirements-min.txt | ||
| requirements.txt | ||
| start.sh | ||
| start_windows.bat | ||