From 79844fc54bfb500dc4f66583394a3629cc2a88e9 Mon Sep 17 00:00:00 2001 From: Gabriel Luiz Freitas Almeida Date: Wed, 22 Jan 2025 15:53:24 -0300 Subject: [PATCH] fix: make `with_session` rollback only on SQLAlchemy errors (#5865) * fix: remove unnecessary session commit in DatabaseService * fix: improve error logging in DatabaseService session management * fix: enhance error handling in DatabaseService session management by specifying SQLAlchemyError --- src/backend/base/langflow/services/database/service.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/backend/base/langflow/services/database/service.py b/src/backend/base/langflow/services/database/service.py index 72205efe2..088e2e32b 100644 --- a/src/backend/base/langflow/services/database/service.py +++ b/src/backend/base/langflow/services/database/service.py @@ -14,7 +14,7 @@ import sqlalchemy as sa from alembic import command, util from alembic.config import Config from loguru import logger -from sqlalchemy import event, inspect +from sqlalchemy import event, exc, inspect from sqlalchemy.dialects import sqlite as dialect_sqlite from sqlalchemy.engine import Engine from sqlalchemy.exc import OperationalError @@ -148,12 +148,11 @@ class DatabaseService(Service): @asynccontextmanager async def with_session(self): async with AsyncSession(self.engine, expire_on_commit=False) as session: + # Start of Selection try: yield session - if session.is_active: - await session.commit() - except Exception: - logger.error("An error occurred during the session scope") + except exc.SQLAlchemyError as db_exc: + logger.error(f"Database error during session scope: {db_exc}") await session.rollback() raise