Apache Airflow version
2.7.1
What happened
120 DAGs broke when I updated to Airflow 2.7.1. I had to revert to 2.7.0 again, so the tests below are from a local deployment.
The error message is the same for all DAGs:
Broken DAG: [/opt/airflow/dags/dag-name.py] Traceback (most recent call last):
File "/home/airflow/.local/lib/python3.11/site-packages/airflow/models/dag.py", line 640, in __init__
self.validate_schedule_and_params()
File "/home/airflow/.local/lib/python3.11/site-packages/airflow/models/dag.py", line 3289, in validate_schedule_and_params
raise AirflowException(
airflow.exceptions.AirflowException: DAG Schedule must be None, if there are any required params without default values
After testing, I found that if I change the blob_prefix param to "" instead of None, the DAG imports successfully. I have various other params which are None that I will probably need to assign default values for (in reality, the function which Airflow runs handles cases if the value is None, but I guess I need to add a default in the DAG). All 120 DAGs with errors had a field like this in the "params" dictionary I pass to Airflow params.
params = {
"exclude_pattern": "*errors*",
"blob_prefix": None,
What you think should happen instead
These are legacy DAGs which have run for a long time without changes (old Airflow instance), so I did not expect an upgrade to break them.
How to reproduce
I believe the root cause is passing a param with the value None to the DAG params:
params = {
subfolder=None,
conn_id="gcs_conn_id",
}
@dag(
dag_id="dag-example",
start_date=datetime(2023, 2, 2, tz="America/New_York"),
schedule="41 2 * * *",
params=params,
)
Operating System
Ubuntu 22.04
Versions of Apache Airflow Providers
Providers info
apache-airflow-providers-celery | 3.3.3
apache-airflow-providers-common-sql | 1.7.1
apache-airflow-providers-docker | 3.7.4
apache-airflow-providers-ftp | 3.5.1
apache-airflow-providers-google | 10.7.0
apache-airflow-providers-http | 4.5.1
apache-airflow-providers-imap | 3.3.1
apache-airflow-providers-microsoft-azure | 6.3.0
apache-airflow-providers-mysql | 5.3.0
apache-airflow-providers-odbc | 4.0.0
apache-airflow-providers-openlineage | 1.0.2
apache-airflow-providers-postgres | 5.6.0
apache-airflow-providers-redis | 3.3.1
apache-airflow-providers-sftp | 4.6.0
apache-airflow-providers-sqlite | 3.4.3
apache-airflow-providers-ssh | 3.7.2
Deployment
Other Docker-based deployment
Deployment details
Docker Swarm using docker stack deploy
Anything else
DAGs fail to import when deployed on 2.7.1
Are you willing to submit PR?
Code of Conduct
Apache Airflow version
2.7.1
What happened
120 DAGs broke when I updated to Airflow 2.7.1. I had to revert to 2.7.0 again, so the tests below are from a local deployment.
The error message is the same for all DAGs:
After testing, I found that if I change the blob_prefix param to "" instead of None, the DAG imports successfully. I have various other params which are None that I will probably need to assign default values for (in reality, the function which Airflow runs handles cases if the value is None, but I guess I need to add a default in the DAG). All 120 DAGs with errors had a field like this in the "params" dictionary I pass to Airflow params.
What you think should happen instead
These are legacy DAGs which have run for a long time without changes (old Airflow instance), so I did not expect an upgrade to break them.
How to reproduce
I believe the root cause is passing a param with the value None to the DAG params:
Operating System
Ubuntu 22.04
Versions of Apache Airflow Providers
Providers info
apache-airflow-providers-celery | 3.3.3
apache-airflow-providers-common-sql | 1.7.1
apache-airflow-providers-docker | 3.7.4
apache-airflow-providers-ftp | 3.5.1
apache-airflow-providers-google | 10.7.0
apache-airflow-providers-http | 4.5.1
apache-airflow-providers-imap | 3.3.1
apache-airflow-providers-microsoft-azure | 6.3.0
apache-airflow-providers-mysql | 5.3.0
apache-airflow-providers-odbc | 4.0.0
apache-airflow-providers-openlineage | 1.0.2
apache-airflow-providers-postgres | 5.6.0
apache-airflow-providers-redis | 3.3.1
apache-airflow-providers-sftp | 4.6.0
apache-airflow-providers-sqlite | 3.4.3
apache-airflow-providers-ssh | 3.7.2
Deployment
Other Docker-based deployment
Deployment details
Docker Swarm using docker stack deploy
Anything else
DAGs fail to import when deployed on 2.7.1
Are you willing to submit PR?
Code of Conduct