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

jedcunningham pushed a commit to branch v2-9-test
in repository https://gitbox.apache.org/repos/asf/airflow.git

commit 26597046291a7f53b8a73165c19fd946d5887778
Author: Andrey Anshin <[email protected]>
AuthorDate: Thu Apr 11 14:24:03 2024 +0400

    Fix implicit cartessian product in AirflowSecurityManagerV2 (#38913)
    
    Co-authored-by: Tzu-ping Chung <[email protected]>
    (cherry picked from commit e16dc0fc2862bfa5e90e7f080f12b36c992972b7)
---
 airflow/www/security_manager.py | 8 ++++----
 pyproject.toml                  | 2 ++
 2 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/airflow/www/security_manager.py b/airflow/www/security_manager.py
index c63de34068..88c2caa32a 100644
--- a/airflow/www/security_manager.py
+++ b/airflow/www/security_manager.py
@@ -199,8 +199,8 @@ class AirflowSecurityManagerV2(LoggingMixin):
             if not resource_pk:
                 return None
             composite_pk = json.loads(resource_pk)
-            ti = session.scalar(
-                select(DagRun)
+            dag_id = session.scalar(
+                select(TaskInstance.dag_id)
                 .where(
                     TaskInstance.dag_id == composite_pk[0],
                     TaskInstance.task_id == composite_pk[1],
@@ -209,9 +209,9 @@ class AirflowSecurityManagerV2(LoggingMixin):
                 )
                 .limit(1)
             )
-            if not ti:
+            if not dag_id:
                 raise AirflowException("Task instance not found")
-            return ti.dag_id
+            return dag_id
 
         def get_pool_name(resource_pk):
             if not resource_pk:
diff --git a/pyproject.toml b/pyproject.toml
index 7ab695097c..82e3cbc528 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -478,6 +478,8 @@ norecursedirs = [
 log_level = "INFO"
 filterwarnings = [
     "error::pytest.PytestCollectionWarning",
+    # Avoid building cartesian product which might impact performance
+    "error:SELECT statement has a cartesian product between 
FROM:sqlalchemy.exc.SAWarning:airflow",
     "ignore::DeprecationWarning:flask_appbuilder.filemanager",
     "ignore::DeprecationWarning:flask_appbuilder.widgets",
     # https://github.com/dpgaspar/Flask-AppBuilder/pull/1940

Reply via email to