Skip to content

Local Filesystem secret backend unable to retrieve connection #57336

@adrian-edbert

Description

@adrian-edbert

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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions