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

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

commit cbe61bc0cc028efe2657db1841b9371230eaa7e5
Author: Ephraim Anierobi <splendidzig...@gmail.com>
AuthorDate: Thu Apr 4 18:24:29 2024 +0100

    Fix decryption of trigger kwargs when downgrading. (#38743)
    
    * Fix decryption of trigger kwargs when downgrading.
    
    This failed because the query for Triggers after the downgrade lazy
    loads the taskinstance table(ORM) which doesn't have the task_display_name
    column at that downloaded point.
    
    The fix was to query specifically on the encrypted_kwargs column.
    
    * Properly positon the decryption after downgrade and not in offline 
migration
    
    (cherry picked from commit 567246f1b1111be5a9d8a85ec3be7a103341101d)
---
 airflow/utils/db.py | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/airflow/utils/db.py b/airflow/utils/db.py
index 26697bb118..c0d282a587 100644
--- a/airflow/utils/db.py
+++ b/airflow/utils/db.py
@@ -993,7 +993,7 @@ def decrypt_trigger_kwargs(*, session: Session) -> None:
         # this can happen when we downgrade to an old version before the 
Trigger table was added
         return
 
-    for trigger in session.query(Trigger):
+    for trigger in session.scalars(select(Trigger.encrypted_kwargs)):
         # decrypt the string and convert it to serialized dict
         trigger.encrypted_kwargs = 
json.dumps(BaseSerialization.serialize(trigger.kwargs))
     session.commit()
@@ -1744,12 +1744,12 @@ def downgrade(*, to_revision, from_revision=None, 
show_sql_only=False, session:
         else:
             log.info("Applying downgrade migrations.")
             command.downgrade(config, revision=to_revision, sql=show_sql_only)
-    if _revision_greater(
-        config,
-        _REVISION_HEADS_MAP["2.9.0"],
-        to_revision,
-    ):
-        decrypt_trigger_kwargs(session=session)
+            if _revision_greater(
+                config,
+                _REVISION_HEADS_MAP["2.9.0"],
+                to_revision,
+            ):
+                decrypt_trigger_kwargs(session=session)
 
 
 def drop_airflow_models(connection):

Reply via email to