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

amoghdesai 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 dd1a69c6f9c Fix backward compatibility for deadline alert 
serialization (#63701)
dd1a69c6f9c is described below

commit dd1a69c6f9cf828187f9b055bcf4b6363ef19c2b
Author: Amogh Desai <[email protected]>
AuthorDate: Mon Mar 16 15:21:51 2026 +0530

    Fix backward compatibility for deadline alert serialization (#63701)
---
 .../migrations/versions/0101_3_2_0_ui_improvements_for_deadlines.py   | 2 +-
 airflow-core/src/airflow/models/serialized_dag.py                     | 4 ++++
 2 files changed, 5 insertions(+), 1 deletion(-)

diff --git 
a/airflow-core/src/airflow/migrations/versions/0101_3_2_0_ui_improvements_for_deadlines.py
 
b/airflow-core/src/airflow/migrations/versions/0101_3_2_0_ui_improvements_for_deadlines.py
index 92bfc558d47..e5714e5fcae 100644
--- 
a/airflow-core/src/airflow/migrations/versions/0101_3_2_0_ui_improvements_for_deadlines.py
+++ 
b/airflow-core/src/airflow/migrations/versions/0101_3_2_0_ui_improvements_for_deadlines.py
@@ -64,7 +64,7 @@ depends_on = None
 airflow_version = "3.2.0"
 
 
-CALLBACK_KEY = "callback_def"
+CALLBACK_KEY = "callback"
 DAG_KEY = "dag"
 DEADLINE_KEY = "deadline"
 INTERVAL_KEY = "interval"
diff --git a/airflow-core/src/airflow/models/serialized_dag.py 
b/airflow-core/src/airflow/models/serialized_dag.py
index 2afa5d353db..23b93f2dae5 100644
--- a/airflow-core/src/airflow/models/serialized_dag.py
+++ b/airflow-core/src/airflow/models/serialized_dag.py
@@ -434,6 +434,10 @@ class SerializedDagModel(Base):
         :param session: Database session
         :return: UUID mapping dict if all match, None if any mismatch detected
         """
+        # defensive check for old 3.1.x format
+        if existing_deadline_uuids and not 
isinstance(existing_deadline_uuids[0], str):
+            # this triggers _generate_deadline_uuids to create fresh UUIDs
+            return None
 
         def _definitions_match(deadline_data: dict, existing: 
DeadlineAlertModel) -> bool:
             """Check if raw deadline data matches an existing DeadlineAlert's 
definition."""

Reply via email to