-
Notifications
You must be signed in to change notification settings - Fork 16.4k
Description
Apache Airflow version
3.1.0
If "Other Airflow 2/3 version" selected, which one?
No response
What happened?
Airflow worker failed on getting local filesystem secret backend
With an error message: unable to retrieve connection
What you think should happen instead?
Airflow worker should retrieve connection coming from local filesystem secrets backend
How to reproduce
with dag file
from __future__ import annotations
from airflow.providers.standard.operators.python import PythonOperator
def print_connection():
from airflow.sdk.bases.hook import BaseHook
worker_conn = BaseHook.get_connection("worker_connection_env")
print(f"worker_connection_env : {worker_conn}")
with DAG(
dag_id='test_dag',
catchup=False,
):
test = PythonOperator(task_id='task3', python_callable=print_connection)
test
on a worker configuration with this env var
AIRFLOW__SECRETS__BACKEND=airflow.secrets.local_filesystem.LocalFilesystemBackend
AIRFLOW__SECRETS__BACKEND_KWARGS={"connections_file_path": "{path_to_config}/connection.yaml"}
connection.yaml
worker_connection_env:
conn_type: Generic
description: worker specific connection env for sanity test
this will fail with these message
[2025-10-22 11:31:52] ERROR - Unable to retrieve connection from secrets backend (LocalFilesystemBackend). Checking subsequent secrets backend. source=task loc=context.py:162
InvalidRequestError: When initializing mapper mapped class DagVersion->dag_version, expression 'DagCode' failed to locate a name ('DagCode'). If this is a class name, consider adding this relationship() to the <class 'airflow.models.dag_version.DagVersion'> class after both dependent classes have been defined.
File "/home/generic_scheduler/test_airflow/generic_scheduler-venv/lib/python3.12/site-packages/airflow/sdk/execution_time/context.py", line 156 in _get_connection
File "/home/generic_scheduler/test_airflow/generic_scheduler-venv/lib/python3.12/site-packages/airflow/secrets/local_filesystem.py", line 314 in get_connection
File "/home/generic_scheduler/test_airflow/generic_scheduler-venv/lib/python3.12/site-packages/airflow/secrets/local_filesystem.py", line 311 in _local_connections
File "/home/generic_scheduler/test_airflow/generic_scheduler-venv/lib/python3.12/site-packages/airflow/secrets/local_filesystem.py", line 273 in load_connections_dict
File "/home/generic_scheduler/test_airflow/generic_scheduler-venv/lib/python3.12/site-packages/airflow/secrets/local_filesystem.py", line 228 in _create_connection
File "<string>", line 4 in __init__
File "/home/generic_scheduler/test_airflow/generic_scheduler-venv/lib/python3.12/site-packages/sqlalchemy/orm/state.py", line 476 in _initialize_instance
File "/home/generic_scheduler/test_airflow/generic_scheduler-venv/lib/python3.12/site-packages/sqlalchemy/event/attr.py", line 346 in __call__
File "/home/generic_scheduler/test_airflow/generic_scheduler-venv/lib/python3.12/site-packages/sqlalchemy/orm/mapper.py", line 3716 in _event_on_init
File "/home/generic_scheduler/test_airflow/generic_scheduler-venv/lib/python3.12/site-packages/sqlalchemy/orm/mapper.py", line 1941 in _check_configure
File "/home/generic_scheduler/test_airflow/generic_scheduler-venv/lib/python3.12/site-packages/sqlalchemy/orm/mapper.py", line 3527 in _configure_registries
File "/home/generic_scheduler/test_airflow/generic_scheduler-venv/lib/python3.12/site-packages/sqlalchemy/orm/mapper.py", line 3566 in _do_configure_registries
File "/home/generic_scheduler/test_airflow/generic_scheduler-venv/lib/python3.12/site-packages/sqlalchemy/orm/mapper.py", line 1958 in _post_configure_properties
File "/home/generic_scheduler/test_airflow/generic_scheduler-venv/lib/python3.12/site-packages/sqlalchemy/orm/interfaces.py", line 231 in init
File "/home/generic_scheduler/test_airflow/generic_scheduler-venv/lib/python3.12/site-packages/sqlalchemy/orm/relationships.py", line 2150 in do_init
File "/home/generic_scheduler/test_airflow/generic_scheduler-venv/lib/python3.12/site-packages/sqlalchemy/orm/relationships.py", line 2245 in _process_dependent_arguments
File "/home/generic_scheduler/test_airflow/generic_scheduler-venv/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 1113 in __get__
File "/home/generic_scheduler/test_airflow/generic_scheduler-venv/lib/python3.12/site-packages/sqlalchemy/orm/relationships.py", line 2112 in entity
File "/home/generic_scheduler/test_airflow/generic_scheduler-venv/lib/python3.12/site-packages/sqlalchemy/orm/clsregistry.py", line 397 in _resolve_name
File "/home/generic_scheduler/test_airflow/generic_scheduler-venv/lib/python3.12/site-packages/sqlalchemy/orm/clsregistry.py", line 375 in _raise_for_name
File "/home/generic_scheduler/test_airflow/generic_scheduler-venv/lib/python3.12/site-packages/sqlalchemy/util/compat.py", line 211 in raise_
KeyError: 'DagCode'
File "/home/generic_scheduler/test_airflow/generic_scheduler-venv/lib/python3.12/site-packages/sqlalchemy/orm/clsregistry.py", line 393 in _resolve_name
File "/home/generic_scheduler/test_airflow/generic_scheduler-venv/lib/python3.12/site-packages/sqlalchemy/util/_collections.py", line 746 in __missing__
File "/home/generic_scheduler/test_airflow/generic_scheduler-venv/lib/python3.12/site-packages/sqlalchemy/orm/clsregistry.py", line 372 in _access_cls
Operating System
Ubuntu 20.04.5 LTS (Focal Fossa)
Versions of Apache Airflow Providers
No response
Deployment
Virtualenv installation
Deployment details
Virtual env installation using UV
pip freeze | grep -i airflow
apache-airflow==3.1.0
apache-airflow-client==3.1.0rc1
apache-airflow-core==3.1.0.1
apache-airflow-providers-apache-hdfs==4.10.1
apache-airflow-providers-apache-spark==5.3.1
apache-airflow-providers-celery==3.12.1
apache-airflow-providers-common-compat==1.7.2
apache-airflow-providers-common-io==1.6.1
apache-airflow-providers-common-sql==1.27.3
apache-airflow-providers-fab==2.4.4
apache-airflow-providers-git==0.0.8
apache-airflow-providers-http==5.4.0rc1
apache-airflow-providers-smtp==2.1.1
apache-airflow-providers-standard==1.4.1
apache-airflow-task-sdk==1.1.0
Anything else?
From our test on our fork, changing the import
from airflow.models.connection import Connection
into
from airflow.sdk.definitions.connection import Connection
in file airflow-core/src/airflow/secrets/local_filesystem.py
works to fix the issue
Are you willing to submit PR?
- Yes I am willing to submit a PR!
Code of Conduct
- I agree to follow this project's Code of Conduct