MatrixManAtYrService opened a new issue #20557:
URL: https://github.com/apache/airflow/issues/20557
### Description
If you unpause this DAG, it will immediately create a failed dagrun:
```
from datetime import datetime, timedelta
from textwrap import dedent
from airflow import DAG
from airflow.models.param import Param
from airflow.operators.python_operator import PythonOperator
thirty_years = 1577862000 # seconds
with DAG(
"params_int_fivetoten",
start_date=datetime(1970, 1, 1),
schedule_interval=timedelta(seconds=thirty_years),
catchup=True,
params={"x": Param(7, type="integer", minimum=5, maximum=10)},
render_template_as_native_obj=True,
doc_md=dedent(
"""
# Purpose
Check if scheduled runs receive default dagrun params.
## Steps
1. Unpause
2. Wait for dag run to complete
## Expectations
- All tasks succeed
"""
),
) as use_defaults:
def fail_if_invalid(x):
assert 5 < x < 10
PythonOperator(
task_id="reference_param",
python_callable=fail_if_invalid,
op_args=["{{ dag_run.conf['x'] }}"],
)
```
This happens because the default dagrun params are only provided to manually
triggered runs (and only if you explicitly run with params). If the scheduler
creates a dagrun, or if the user runs without thinking about params, `{}` is
supplied and `"x"` is not found in in it.
I would like to request that the default params be used...
- when dagruns are manually triggered without special thought to parameters
- and when the scheduler creates a dagrun
### Use case/motivation
I have a DAG that tests an OCI image and pushes test results to a dashboard.
Most of the time, I want to test the image tagged `latest`. But sometimes I
want to investigate the environment created by testing a tag other than
`latest`.
Ideally, I could just specify default parameters:
```
{
"use_tag": "latest"
}
```
...and then ignore them most of the time. I would change them from their
defaults only on the occasions where I need to recreate a bug at an old version.
Instead I'm working around this by having tasks that check to see if there's
anything in `dag_run.conf` and honors them if present. Otherwise it uses
hard-coded defaults. That is, I'm implementing defaults in task code, when
there's already an Airflow-native default parameter mechanism--it's just not
compatible with scheduled runs.
### Related issues
https://github.com/apache/airflow/issues/12817
### Are you willing to submit a PR?
- [ ] 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]