GitHub user patrickballard added a comment to the discussion: Airflow 3: 
data_interval_end == data_interval_start?

Late reply, I know this thread is old. 

@je-enf  you’re not misreading the docs; the default just changed. In Airflow 3 
a plain cron string (schedule="0 0 * * *") gets CronTriggerTimetable unless 
[scheduler] create_cron_data_intervals = True is set, and that now defaults to 
False. The timetable page describes CronDataIntervalTimetable itself, which you 
get when you pass it explicitly or set that flag. That’s also why the original 
question saw data_interval_start == data_interval_end == logical_date: on 
CronTriggerTimetable the interval has zero length (I checked on 3.3.2).

Two things worth knowing if you switch back:

Timing matters. Switching a DAG that already has runs from CronTriggerTimetable 
to CronDataIntervalTimetable skips one scheduled run, because the next run is 
moved forward to avoid colliding with the last one’s logical date. The docs now 
recommend setting the flag before upgrading 
([apache/airflow#66441](https://github.com/apache/airflow/issues/66441)). If 
you’ve already upgraded, expect one missed run per DAG when you flip it.
The same flag covers timedelta schedules. create_delta_data_intervals exists in 
the config but isn’t read: create_cron_data_intervals decides timedelta 
schedules too 
([apache/airflow#69868](https://github.com/apache/airflow/issues/69868), 
reproduced on 3.3.2).

So it’s either AIRFLOW__SCHEDULER__CREATE_CRON_DATA_INTERVALS=True for 
everything, or schedule=CronDataIntervalTimetable("0 0 * * *", timezone="UTC") 
per DAG. Either way, do it with the upgrade, not after.

GitHub link: 
https://github.com/apache/airflow/discussions/51371#discussioncomment-19230874

----
This is an automatically sent email for [email protected].
To unsubscribe, please send an email to: [email protected]

Reply via email to