open-webui/backend/open_webui/socket
Claude 418ef25dc4
fix(stream): fence lifecycle ownership, strict done filter, narrower terminal
- onResumeStreamReplay no longer blindly clears the fence in finally.
  It stops deleting the active request_id on entry and instead checks,
  in the finally, whether it is still the active request before
  calling clearResumeFence. A newer request arriving during replay
  sets its own id; the older handler now leaves that state alone and
  lets the newer request's lifecycle drive cleanup.

- requestResumeForAllInProgress filters by `done === false` instead of
  `!done`. Legacy messages with a missing `done` field used to fan
  out as spurious resume requests on every reconnect/load; now only
  explicitly in-progress assistants get targeted.

- Terminal-event detection for TTL shortening no longer treats any
  event with `data.error` present as terminal. Restricted to
  `type === 'chat:completion' AND data.error`, matching the exact
  shape middleware.py emits when the provider actually errors out.
  A transient warning on some other event type won't shorten the log
  TTL prematurely anymore.
2026-04-15 07:46:21 +00:00
..
main.py fix(stream): fence lifecycle ownership, strict done filter, narrower terminal 2026-04-15 07:46:21 +00:00
utils.py refac 2026-03-22 05:48:05 -05:00