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