This is an automated email from the ASF dual-hosted git repository.

potiuk pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git


The following commit(s) were added to refs/heads/main by this push:
     new 38021c2a46c Revert "Fix duplicated SQLAlchemy sessions caused 
transactions fail to close (#57815)" (#58097)
38021c2a46c is described below

commit 38021c2a46cab0c92949a21a36461d8aab5b9a23
Author: Jarek Potiuk <[email protected]>
AuthorDate: Sun Nov 9 15:27:16 2025 +0100

    Revert "Fix duplicated SQLAlchemy sessions caused transactions fail to 
close (#57815)" (#58097)
    
    This reverts commit e5cb168fafe40059233ed9ab5fa191f1958a89fd.
---
 .../fab/auth_manager/api_fastapi/routes/login.py   | 40 ++++++++++++----------
 providers/fab/src/airflow/providers/fab/www/app.py |  9 ++---
 providers/fab/www-hash.txt                         |  2 +-
 3 files changed, 25 insertions(+), 26 deletions(-)

diff --git 
a/providers/fab/src/airflow/providers/fab/auth_manager/api_fastapi/routes/login.py
 
b/providers/fab/src/airflow/providers/fab/auth_manager/api_fastapi/routes/login.py
index a822356ff63..fd728c78a11 100644
--- 
a/providers/fab/src/airflow/providers/fab/auth_manager/api_fastapi/routes/login.py
+++ 
b/providers/fab/src/airflow/providers/fab/auth_manager/api_fastapi/routes/login.py
@@ -27,6 +27,7 @@ from airflow.api_fastapi.core_api.openapi.exceptions import 
create_openapi_http_
 from airflow.configuration import conf
 from airflow.providers.fab.auth_manager.api_fastapi.datamodels.login import 
LoginBody, LoginResponse
 from airflow.providers.fab.auth_manager.api_fastapi.services.login import 
FABAuthManagerLogin
+from airflow.providers.fab.auth_manager.cli_commands.utils import 
get_application_builder
 
 login_router = AirflowRouter(tags=["FabAuthManager"])
 
@@ -39,7 +40,8 @@ login_router = AirflowRouter(tags=["FabAuthManager"])
 )
 def create_token(body: LoginBody) -> LoginResponse:
     """Generate a new API token."""
-    return FABAuthManagerLogin.create_token(body=body)
+    with get_application_builder():
+        return FABAuthManagerLogin.create_token(body=body)
 
 
 @login_router.post(
@@ -50,9 +52,10 @@ def create_token(body: LoginBody) -> LoginResponse:
 )
 def create_token_cli(body: LoginBody) -> LoginResponse:
     """Generate a new CLI API token."""
-    return FABAuthManagerLogin.create_token(
-        body=body, expiration_time_in_seconds=conf.getint("api_auth", 
"jwt_cli_expiration_time")
-    )
+    with get_application_builder():
+        return FABAuthManagerLogin.create_token(
+            body=body, expiration_time_in_seconds=conf.getint("api_auth", 
"jwt_cli_expiration_time")
+        )
 
 
 @login_router.get(
@@ -61,17 +64,18 @@ def create_token_cli(body: LoginBody) -> LoginResponse:
 )
 def logout(request: Request) -> RedirectResponse:
     """Generate a new API token."""
-    login_url = get_auth_manager().get_url_login()
-    secure = request.base_url.scheme == "https" or bool(conf.get("api", 
"ssl_cert", fallback=""))
-    response = RedirectResponse(login_url)
-    response.delete_cookie(
-        key="session",
-        secure=secure,
-        httponly=True,
-    )
-    response.delete_cookie(
-        key=COOKIE_NAME_JWT_TOKEN,
-        secure=secure,
-        httponly=True,
-    )
-    return response
+    with get_application_builder():
+        login_url = get_auth_manager().get_url_login()
+        secure = request.base_url.scheme == "https" or bool(conf.get("api", 
"ssl_cert", fallback=""))
+        response = RedirectResponse(login_url)
+        response.delete_cookie(
+            key="session",
+            secure=secure,
+            httponly=True,
+        )
+        response.delete_cookie(
+            key=COOKIE_NAME_JWT_TOKEN,
+            secure=secure,
+            httponly=True,
+        )
+        return response
diff --git a/providers/fab/src/airflow/providers/fab/www/app.py 
b/providers/fab/src/airflow/providers/fab/www/app.py
index 06e5285bdac..e12fd064c09 100644
--- a/providers/fab/src/airflow/providers/fab/www/app.py
+++ b/providers/fab/src/airflow/providers/fab/www/app.py
@@ -30,7 +30,7 @@ from airflow.api_fastapi.app import get_auth_manager
 from airflow.configuration import conf
 from airflow.exceptions import AirflowConfigException
 from airflow.logging_config import configure_logging
-from airflow.providers.fab.www.extensions.init_appbuilder import 
AirflowAppBuilder
+from airflow.providers.fab.www.extensions.init_appbuilder import 
init_appbuilder
 from airflow.providers.fab.www.extensions.init_jinja_globals import 
init_jinja_globals
 from airflow.providers.fab.www.extensions.init_manifest_files import 
configure_manifest_files
 from airflow.providers.fab.www.extensions.init_security import init_api_auth
@@ -94,12 +94,7 @@ def create_app(enable_plugins: bool):
     init_api_auth(flask_app)
 
     with flask_app.app_context():
-        AirflowAppBuilder(
-            app=flask_app,
-            session=db.session,
-            base_template="airflow/main.html",
-            enable_plugins=enable_plugins,
-        )
+        init_appbuilder(flask_app, enable_plugins=enable_plugins)
         init_error_handlers(flask_app)
         # In two scenarios a Flask application can be created:
         # - To support Airflow 2 plugins relying on Flask (``enable_plugins`` 
is True)
diff --git a/providers/fab/www-hash.txt b/providers/fab/www-hash.txt
index 47ac6b43c6c..418e86c7dda 100644
--- a/providers/fab/www-hash.txt
+++ b/providers/fab/www-hash.txt
@@ -1 +1 @@
-cc109e95a25c1bb018a85a6a40859234398d5a9ac5bf317197eed3e3ece64b0d
+c45890ac6b17386adfb076a4baec17589a26aab189d6257a92138aaa720fbc7f

Reply via email to