sharetheknowledge opened a new issue, #69868:
URL: https://github.com/apache/airflow/issues/69868

   ### Under which category would you file this issue?
   
   Providers
   
   ### Apache Airflow version
   
   3.3.0 (bug confirmed present via source review; also reproduced hands-on on 
3.2.2, and confirmed present on `main` as of 2026-07-14)
   
   ### What happened and how to reproduce it?
   
   `airflow.cfg`'s `[scheduler] create_delta_data_intervals` setting is never 
read anywhere in the codebase - it has no effect. Meanwhile `[scheduler] 
create_cron_data_intervals` silently controls timetable selection for **both** 
cron-string schedules (documented) **and** `timedelta`/`relativedelta` 
schedules (undocumented, and contradicts `config.yml`'s own description of what 
`create_delta_data_intervals` is supposed to do).
   
   Root cause is in `_create_timetable()` in 
`task-sdk/src/airflow/sdk/definitions/dag.py` (lines 148–169 on `main` / 3.3.0):
   
   ```python
   if isinstance(interval, timedelta | relativedelta):
       if airflow_conf.getboolean("scheduler", "create_cron_data_intervals"):   
# <-- should be create_delta_data_intervals
           return DeltaDataIntervalTimetable(interval)
       return DeltaTriggerTimetable(interval)
   if isinstance(interval, str):
       if airflow_conf.getboolean("scheduler", "create_cron_data_intervals"):
           return CronDataIntervalTimetable(interval, timezone)
       return CronTriggerTimetable(interval, timezone=timezone)
   ```
   
   Both branches check the same config key, `create_cron_data_intervals`. The 
`timedelta`/`relativedelta` branch should check `create_delta_data_intervals` 
instead, per `config.yml`'s own description of that setting 
(`airflow-core/src/airflow/config_templates/config.yml`, 
`create_delta_data_intervals` entry).
   
   
   
   **Steps to reproduce**
   
   1. Use any DAG scheduled with a plain `timedelta`, e.g. the stock `tutorial` 
DAG:
      ```python
      schedule=timedelta(days=1)
      ```
   2. In `airflow.cfg`, set:
      ```
      [scheduler]
      create_delta_data_intervals = True
      ```
   3. Confirm the config is actually being read:
      ```python
      from airflow.configuration import conf
      print(conf.getboolean("scheduler", "create_delta_data_intervals"))  # 
prints True
      ```
   4. Load the DAG and inspect its timetable:
      ```python
      from airflow.models import DagBag
      dag = DagBag().get_dag("tutorial")
      print(type(dag.timetable))
      ```
      **Result:** still `DeltaTriggerTimetable` - 
`create_delta_data_intervals=True` had no effect.
   5. Now instead set `create_cron_data_intervals = True` (leaving 
`create_delta_data_intervals` at its default) and rerun step 4.
      **Result:** `dag.timetable` becomes `DeltaDataIntervalTimetable`, even 
though the DAG's schedule is a `timedelta`, not a cron string - proving the 
wrong config key is being consulted.
      
   
   ### What you think should happen instead?
   
   The `timedelta | relativedelta` branch of `_create_timetable()` should check 
`create_delta_data_intervals`, matching what `config.yml` documents for that 
setting and keeping it independent from `create_cron_data_intervals` (which 
should only affect the `str`/cron branch). The fix is a one-line change:
   
   ```python
   if isinstance(interval, timedelta | relativedelta):
       if airflow_conf.getboolean("scheduler", "create_delta_data_intervals"):
           return DeltaDataIntervalTimetable(interval)
       return DeltaTriggerTimetable(interval)
   ```
   
   ### Operating System
   
   Windows 11 / WSL2 (Ubuntu), reproduced via a local virtualenv install
   
   ### Deployment
   
   Virtualenv installation
   
   ### Apache Airflow Provider(s)
   
   _No response_
   
   ### Versions of Apache Airflow Providers
   
   N/A
   
   ### Official Helm Chart version
   
   Not Applicable
   
   ### Kubernetes Version
   
   _No response_
   
   ### Helm Chart configuration
   
   _No response_
   
   ### Docker Image customizations
   
   _No response_
   
   ### Anything else?
   
   Confirmed by reading source directly (not just local install):
   - Installed venv (Airflow 3.2.2): 
`venv/lib/python3.12/site-packages/airflow/sdk/definitions/dag.py`
   - `github.com/apache/airflow` tag `3.2.2`: same code
   - `github.com/apache/airflow` tag `3.3.0`: same code, lines 148–169
   - `github.com/apache/airflow` branch `main`: same code, unchanged
   
   Also confirmed `create_delta_data_intervals` is referenced nowhere else in 
the codebase except:
   - `airflow-core/src/airflow/cli/commands/config_command.py` (CLI config-list 
metadata only)
   - `config_templates/config.yml` (docs only)
   - `config_templates/unit_tests.cfg` (sets it `true` for test fixtures, but 
no code path reads it for this purpose)
   
   This makes `create_delta_data_intervals` fully dead config as of at least 
3.2.2 through `main`.
   
   ### Are you willing to submit PR?
   
   - [x] Yes I am willing to submit a PR!
   
   ### Code of Conduct
   
   - [x] I agree to follow this project's [Code of 
Conduct](https://github.com/apache/airflow/blob/main/CODE_OF_CONDUCT.md)
   


-- 
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]

Reply via email to