From 4c84c5957d5f7403bdfec5e88bb28fd1ea589225 Mon Sep 17 00:00:00 2001 From: GareArc Date: Wed, 8 Jul 2026 21:57:07 -0700 Subject: [PATCH] fix: run user_connect authorization inside Flask app context Socket.IO event handlers run in plain gevent greenlets without a Flask application context, so the db.session() call added in #38227 raises RuntimeError: Working outside of application context, and every user_connect is rejected as unauthorized. Wrap the authorization call in sio.app.app_context(), matching the existing connect handler. --- api/controllers/console/socketio/workflow.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/api/controllers/console/socketio/workflow.py b/api/controllers/console/socketio/workflow.py index db5a4144dd3..6d8d316ad90 100644 --- a/api/controllers/console/socketio/workflow.py +++ b/api/controllers/console/socketio/workflow.py @@ -69,7 +69,8 @@ def handle_user_connect(sid, data): if not workflow_id: return {"msg": "workflow_id is required"}, 400 - result = collaboration_service.authorize_and_join_workflow_room(workflow_id, sid, session=db.session()) + with sio.app.app_context(): + result = collaboration_service.authorize_and_join_workflow_room(workflow_id, sid, session=db.session()) if not result: return {"msg": "unauthorized"}, 401