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]
