[GH-ISSUE #23268] Background tasks silently skipped when Socket.IO disconnected #58602

Closed
opened 2026-05-05 23:31:23 -05:00 by GiteaMirror · 2 comments
Owner

Originally created by @ataraxiaone on GitHub (Mar 31, 2026).
Original GitHub issue: https://github.com/open-webui/open-webui/issues/23268

Description

When the Socket.IO connection is not established (e.g., stale auth state after upgrade, network blip, or browser reconnection failure), the streaming response handler in middleware.py takes the fallback path which silently skips all background tasks — title generation, follow-up suggestions, and tag generation.

No error is logged. No warning is emitted. The chat response streams normally via SSE, but the title stays "New Chat" forever.

Steps to Reproduce

  1. Upgrade from v0.8.8 to v0.8.11
  2. If the browser has stale auth/session state, Socket.IO may fail to connect
  3. Send a message in a new chat
  4. Observe: response streams normally, but title is never generated

Root Cause

streaming_chat_response_handler in backend/open_webui/utils/middleware.py branches on event_emitter and event_caller:

if event_emitter and event_caller:
    # Main path — processes response + runs background_tasks_handler
    # (title gen, follow-ups, tags)
else:
    # Fallback path — streams SSE passthrough, NO background tasks

event_emitter requires session_id (from Socket.IO $socket?.id). If Socket.IO isn't connected, session_id is null, event_emitter is None, and the fallback path is taken.

The fallback path has no logging indicating that background tasks were skipped. From the user's perspective, everything works except titles/follow-ups/tags silently stop.

Expected Behavior

  • At minimum: a warning log when background tasks are skipped due to missing event_emitter
  • Ideally: background tasks (especially title generation) should still execute via a fallback mechanism (e.g., REST callback, inline processing) when Socket.IO is unavailable

Environment

  • Open WebUI v0.8.11
  • Deployed on ECS Fargate behind AWS ALB
  • WebSocket upgrade works (confirmed via curl: 101 Switching Protocols)
  • Socket.IO endpoint responds at /ws/socket.io/ (rejects polling: "Invalid transport")
  • Browser client fails to establish Socket.IO after version upgrade

Impact

This is a silent production failure. All background task features (title generation, follow-up suggestions, tag generation) stop working with no indication to admins or users. The only symptom is "New Chat" titles, which is easily mistaken for a config issue.

Originally created by @ataraxiaone on GitHub (Mar 31, 2026). Original GitHub issue: https://github.com/open-webui/open-webui/issues/23268 ## Description When the Socket.IO connection is not established (e.g., stale auth state after upgrade, network blip, or browser reconnection failure), the streaming response handler in `middleware.py` takes the fallback path which **silently skips all background tasks** — title generation, follow-up suggestions, and tag generation. No error is logged. No warning is emitted. The chat response streams normally via SSE, but the title stays "New Chat" forever. ## Steps to Reproduce 1. Upgrade from v0.8.8 to v0.8.11 2. If the browser has stale auth/session state, Socket.IO may fail to connect 3. Send a message in a new chat 4. Observe: response streams normally, but title is never generated ## Root Cause `streaming_chat_response_handler` in `backend/open_webui/utils/middleware.py` branches on `event_emitter and event_caller`: ```python if event_emitter and event_caller: # Main path — processes response + runs background_tasks_handler # (title gen, follow-ups, tags) else: # Fallback path — streams SSE passthrough, NO background tasks ``` `event_emitter` requires `session_id` (from Socket.IO `$socket?.id`). If Socket.IO isn't connected, `session_id` is null, `event_emitter` is None, and the fallback path is taken. The fallback path has **no logging** indicating that background tasks were skipped. From the user's perspective, everything works except titles/follow-ups/tags silently stop. ## Expected Behavior - At minimum: a warning log when background tasks are skipped due to missing event_emitter - Ideally: background tasks (especially title generation) should still execute via a fallback mechanism (e.g., REST callback, inline processing) when Socket.IO is unavailable ## Environment - Open WebUI v0.8.11 - Deployed on ECS Fargate behind AWS ALB - WebSocket upgrade works (confirmed via curl: 101 Switching Protocols) - Socket.IO endpoint responds at `/ws/socket.io/` (rejects polling: "Invalid transport") - Browser client fails to establish Socket.IO after version upgrade ## Impact This is a **silent production failure**. All background task features (title generation, follow-up suggestions, tag generation) stop working with no indication to admins or users. The only symptom is "New Chat" titles, which is easily mistaken for a config issue.
Author
Owner

@pr-validator-bot commented on GitHub (Mar 31, 2026):

⚠️ Missing Issue Title Prefix

@ataraxiaone, your issue title is missing a prefix (e.g., bug:, feat:, docs:).

Please update your issue title to include one of the following prefixes:

  • bug: Bug report or error you've encountered
  • feat: Feature request or enhancement suggestion
  • docs: Documentation issue or improvement request
  • question: Question about usage or functionality
  • help: Request for help or support

Example: bug: Login fails when using special characters in password

<!-- gh-comment-id:4163848794 --> @pr-validator-bot commented on GitHub (Mar 31, 2026): # ⚠️ Missing Issue Title Prefix @ataraxiaone, your issue title is missing a prefix (e.g., `bug:`, `feat:`, `docs:`). Please update your issue title to include one of the following prefixes: - **bug**: Bug report or error you've encountered - **feat**: Feature request or enhancement suggestion - **docs**: Documentation issue or improvement request - **question**: Question about usage or functionality - **help**: Request for help or support Example: `bug: Login fails when using special characters in password`
Author
Owner

@tjbck commented on GitHub (Apr 1, 2026):

Version upgrades force a refresh so this should not have happened in the first place. With that being said, event_emitter no longer depend on Socket.IO connectivity (session_id) at all in dev.

<!-- gh-comment-id:4169041497 --> @tjbck commented on GitHub (Apr 1, 2026): Version upgrades force a refresh so this should not have happened in the first place. With that being said, event_emitter no longer depend on Socket.IO connectivity (session_id) at all in dev.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/open-webui#58602