github-actions[bot] opened a new pull request, #70625:
URL: https://github.com/apache/airflow/pull/70625
* Make deadline reads and serialization robust to dynamic/malformed intervals
Hardens the read and (de)serialization paths for deadline alerts so dynamic
(``VariableInterval``) and malformed stored data no longer break the UI/API.
- UI deadline-alert response: ``DeadlineAlert.interval`` is a JSON column
holding
the Airflow-serialized interval, not a plain number. Coerce it to seconds
for a
fixed ``timedelta`` and to ``None`` for a dynamic ``VariableInterval``
(resolved
later by the scheduler), instead of letting Pydantic 500 on the dict. The
``interval`` field becomes ``float | None``.
- Drop ``interval`` from the sortable columns of the deadline-alerts
endpoint:
ordering by a JSON column sorts by structure/text, not duration, so the
result
was arbitrary and misleading.
- Deserialization: route by the encoder-stamped ``__class_path`` ahead of the
``reference_type`` name (a custom reference may share a class name with a
builtin), and raise a clear error for a reference with no importable
``__class_path`` instead of an opaque ``KeyError``.
- ``Deadline.__repr__`` / ``DeadlineAlert.__repr__`` no longer raise: guard
the
``dagrun`` relationship (the FK can be set while the relationship is None
after a
cascade delete) and handle the dict-shaped JSON interval. A ``__repr__``
must
never raise.
- ``prune_deadlines`` explicitly excludes deadlines already marked
``missed`` so a
missed deadline (whose callback is owned by the scheduler/triggerer) and
its
queued callback are never cascade-deleted.
Generated-by: Claude Code (Opus via Claude Code) on behalf of Sean Ghaeli
* Remove redundant comments in deadline sort/deserialize
The sort-key comment restated a constraint already covered by
test_order_by_interval_is_rejected; the __class_path comment restated the
ValueError message right below it.
Generated-by: Claude Code (Opus)
* Trim PR to the UI deadlineAlerts 500 fix only
Per review: keep only the interval coercion, order_by removal, and their
tests; move repr guards, decoder routing, and prune guard to a follow-up.
---------
(cherry picked from commit f840a8213801731028a054e733801a6449f3297d)
Co-authored-by: Sean Ghaeli <[email protected]>
Co-authored-by: Sean Ghaeli <[email protected]>
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]