-
Notifications
You must be signed in to change notification settings - Fork 16.4k
Description
Body
During the migration of BaseHook to task sdk, we are introducing a temporary workaround in the API server context:
https://github.com/apache/airflow/pull/51873/files#diff-acfa34467241916c1189174e98f87a4094e8cbf58d391fa084e6afb2594decbcR61-R71 to help solve some compat issues which arrived along the way.
When in the API server context, the system uses the Connection model (via custom backend > env var > DB fallback) directly.
This unblocks the bulk of the BaseHook removal work, but it’s not the ideal long-term solution. We should revisit this approach to avoid leaking this shortcut into 3.1 release.
This issue is dependent on coupling between Git bundle and API server. For view_url use case, a slim git bundle is instantiated to form the view_url leading to it using BaseHook to get a connection and BaseHook uses Connection from SDK, it goes back to API server causing a self loop scenario.
../../.venv/lib/python3.12/site-packages/pydantic/type_adapter.py:572: in dump_python
return self.serializer.to_python(
../src/airflow/api_fastapi/core_api/datamodels/dag_versions.py:45: in bundle_url
return DagBundlesManager().view_url(self.bundle_name, self.bundle_version)
../src/airflow/dag_processing/bundles/manager.py:168: in view_url
bundle = self.get_bundle(name, version)
../src/airflow/dag_processing/bundles/manager.py:156: in get_bundle
return class_(name=name, version=version, **kwargs)
../../providers/git/src/airflow/providers/git/bundles/git.py:88: in __init__
self.hook = GitHook(git_conn_id=git_conn_id)
../../providers/git/src/airflow/providers/git/hooks/git.py:73: in __init__
connection = self.get_connection(git_conn_id)
../../task-sdk/src/airflow/sdk/bases/hook.py:61: in get_connection
conn = Connection.get(conn_id)
../../task-sdk/src/airflow/sdk/definitions/connection.py:152: in get
return _get_connection(conn_id)
../../task-sdk/src/airflow/sdk/execution_time/context.py:162: in _get_connection
return _convert_connection_result_conn(msg)
../../task-sdk/src/airflow/sdk/execution_time/context.py:108: in _convert_connection_result_conn
return Connection(**conn_result.model_dump(exclude={"type"}, by_alias=True))
E TypeError: Connection.__init__() missing 2 required positional arguments: 'conn_id' and 'conn_type'
Committer
- I acknowledge that I am a maintainer/committer of the Apache Airflow project.
Metadata
Metadata
Assignees
Labels
Type
Projects
Status