You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by ur...@apache.org on 2023/06/28 22:09:34 UTC
[airflow] branch main updated: Add comment to warn off a potential wrong fix (#32230)
This is an automated email from the ASF dual-hosted git repository.
uranusjr 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 73dd48083d Add comment to warn off a potential wrong fix (#32230)
73dd48083d is described below
commit 73dd48083d1102b81b76ff6f5668cc41261c362e
Author: Tzu-ping Chung <ur...@gmail.com>
AuthorDate: Thu Jun 29 06:09:26 2023 +0800
Add comment to warn off a potential wrong fix (#32230)
---
airflow/models/dag.py | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/airflow/models/dag.py b/airflow/models/dag.py
index 22c6e69418..31070a7b7c 100644
--- a/airflow/models/dag.py
+++ b/airflow/models/dag.py
@@ -907,7 +907,9 @@ class DAG(LoggingMixin):
this method only considers ``schedule_interval`` values valid prior to
Airflow 2.2.
- DO NOT use this method is there is a known data interval.
+ DO NOT call this method if there is a known data interval.
+
+ :meta private:
"""
timetable_type = type(self.timetable)
if issubclass(timetable_type, (NullTimetable, OnceTimetable, DatasetTriggeredTimetable)):
@@ -917,6 +919,12 @@ class DAG(LoggingMixin):
end = cast(CronDataIntervalTimetable, self.timetable)._get_next(start)
elif issubclass(timetable_type, DeltaDataIntervalTimetable):
end = cast(DeltaDataIntervalTimetable, self.timetable)._get_next(start)
+ # Contributors: When the exception below is raised, you might want to
+ # add an 'elif' block here to handle custom timetables. Stop! The bug
+ # you're looking for is instead at when the DAG run (represented by
+ # logical_date) was created. See GH-31969 for an example:
+ # * Wrong fix: GH-32074 (modifies this function).
+ # * Correct fix: GH-32118 (modifies the DAG run creation code).
else:
raise ValueError(f"Not a valid timetable: {self.timetable!r}")
return DataInterval(start, end)