From bf38f175a5f9b1006ec7a4dd1e5e75f160fb92dd Mon Sep 17 00:00:00 2001 From: zhuoyuchen <> Date: Tue, 3 Feb 2026 10:46:33 +0800 Subject: [PATCH 1/2] Fix: Add session rollback to FAB find_user on error to prevent invalid transaction loop --- .../fab/auth_manager/security_manager/override.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/providers/fab/src/airflow/providers/fab/auth_manager/security_manager/override.py b/providers/fab/src/airflow/providers/fab/auth_manager/security_manager/override.py index 4a97b5d1043e1..310a3d2d89f00 100644 --- a/providers/fab/src/airflow/providers/fab/auth_manager/security_manager/override.py +++ b/providers/fab/src/airflow/providers/fab/auth_manager/security_manager/override.py @@ -1457,11 +1457,19 @@ def find_user(self, username=None, email=None) -> User | None: ).one_or_none() except MultipleResultsFound: log.error("Multiple results found for user %s", username) + except Exception as e: + log.error("Error finding user %s: %s", username, e) + self.get_session.rollback() + return None elif email: try: return self.session.scalars(select(self.user_model).filter_by(email=email)).one_or_none() except MultipleResultsFound: log.error("Multiple results found for user with email %s", email) + except Exception as e: + log.error("Error finding user with email %s: %s", email, e) + self.get_session.rollback() + return None return None def update_user(self, user: User) -> bool: From 24052d6fdec60723fc0216e1b4971d7e63b7b919 Mon Sep 17 00:00:00 2001 From: zhuoyuchen <> Date: Thu, 5 Feb 2026 10:22:01 +0800 Subject: [PATCH 2/2] fix --- .../providers/fab/auth_manager/security_manager/override.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/providers/fab/src/airflow/providers/fab/auth_manager/security_manager/override.py b/providers/fab/src/airflow/providers/fab/auth_manager/security_manager/override.py index 310a3d2d89f00..4c7897093ca1d 100644 --- a/providers/fab/src/airflow/providers/fab/auth_manager/security_manager/override.py +++ b/providers/fab/src/airflow/providers/fab/auth_manager/security_manager/override.py @@ -1459,7 +1459,7 @@ def find_user(self, username=None, email=None) -> User | None: log.error("Multiple results found for user %s", username) except Exception as e: log.error("Error finding user %s: %s", username, e) - self.get_session.rollback() + self.session.rollback() return None elif email: try: @@ -1468,7 +1468,7 @@ def find_user(self, username=None, email=None) -> User | None: log.error("Multiple results found for user with email %s", email) except Exception as e: log.error("Error finding user with email %s: %s", email, e) - self.get_session.rollback() + self.session.rollback() return None return None