diff --git a/middlewares/session.py b/middlewares/session.py index 83aad0d5..c933d329 100644 --- a/middlewares/session.py +++ b/middlewares/session.py @@ -15,7 +15,24 @@ class SessionMiddleware(BaseMiddleware): data["session"] = session try: result = await handler(event, data) - await session.commit() + try: + await session.commit() + except Exception as commit_err: + handler_name = getattr(handler, "__qualname__", getattr(handler, "__name__", str(handler))) + event_type = type(event).__name__ + logger.warning( + "Session commit failed, rollback performed — handler=%s, event=%s, error=%s: %s", + handler_name, + event_type, + type(commit_err).__name__, + commit_err, + exc_info=True, + ) + try: + await session.rollback() + except Exception: + pass + raise commit_err return result except Exception as e: handler_name = getattr(handler, "__qualname__", getattr(handler, "__name__", str(handler)))