apiserver 2026-03-26T08:22:05.994000Z [info ] request finished [http.access] client_addr=223.181.117.126:0 duration_us=10592 loc=http_access_log.py:98 method=GET path=/d6zsr5jn/api/v2/dagStats query='dag_ids=api_tests' request_id=64625ebe-e27b-479f-80c6-03213b859dd0 status_code=500
apiserver 2026-03-26T08:22:05.994259Z [error ] Exception in ASGI application
apiserver [uvicorn.error] loc=httptools_impl.py:421
apiserver + Exception Group Traceback (most recent call last):
apiserver | File "/usr/local/lib/python3.14/site-packages/starlette/_utils.py", line 81, in collapse_excgroups
apiserver | yield
apiserver | File "/usr/local/lib/python3.14/site-packages/starlette/middleware/base.py", line 192, in __call__
apiserver | async with anyio.create_task_group() as task_group:
apiserver | ~~~~~~~~~~~~~~~~~~~~~~~^^
apiserver | File "/usr/local/lib/python3.14/site-packages/anyio/_backends/_asyncio.py", line 783, in __aexit__
apiserver | raise BaseExceptionGroup(
apiserver | "unhandled errors in a TaskGroup", self._exceptions
apiserver | ) from None
apiserver | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
apiserver +-+---------------- 1 ----------------
apiserver | Traceback (most recent call last):
apiserver | File "/usr/local/lib/python3.14/site-packages/uvicorn/protocols/http/httptools_impl.py", line 416, in run_asgi
apiserver | result = await app( # type: ignore[func-returns-value]
apiserver | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
apiserver | self.scope, self.receive, self.send
apiserver | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
apiserver | )
apiserver | ^
apiserver | File "/usr/local/lib/python3.14/site-packages/uvicorn/middleware/proxy_headers.py", line 60, in __call__
apiserver | return await self.app(scope, receive, send)
apiserver | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
apiserver | File "/usr/local/lib/python3.14/site-packages/fastapi/applications.py", line 1159, in __call__
apiserver | await super().__call__(scope, receive, send)
apiserver | File "/usr/local/lib/python3.14/site-packages/starlette/applications.py", line 107, in __call__
apiserver | await self.middleware_stack(scope, receive, send)
apiserver | File "/usr/local/lib/python3.14/site-packages/starlette/middleware/errors.py", line 186, in __call__
apiserver | raise exc
apiserver | File "/usr/local/lib/python3.14/site-packages/starlette/middleware/errors.py", line 164, in __call__
apiserver | await self.app(scope, receive, _send)
apiserver | File "/usr/local/lib/python3.14/site-packages/airflow/api_fastapi/common/http_access_log.py", line 83, in __call__
apiserver | await self.app(scope, receive, capture_send)
apiserver | File "/usr/local/lib/python3.14/site-packages/starlette/middleware/gzip.py", line 29, in __call__
apiserver | await responder(scope, receive, send)
apiserver | File "/usr/local/lib/python3.14/site-packages/starlette/middleware/gzip.py", line 130, in __call__
apiserver | await super().__call__(scope, receive, send)
apiserver | File "/usr/local/lib/python3.14/site-packages/starlette/middleware/gzip.py", line 46, in __call__
apiserver | await self.app(scope, receive, self.send_with_compression)
apiserver | File "/usr/local/lib/python3.14/site-packages/starlette/middleware/base.py", line 191, in __call__
apiserver | with recv_stream, send_stream, collapse_excgroups():
apiserver | ~~~~~~~~~~~~~~~~~~^^
apiserver | File "/usr/local/lib/python3.14/contextlib.py", line 162, in __exit__
apiserver | self.gen.throw(value)
apiserver | ~~~~~~~~~~~~~~^^^^^^^
apiserver | File "/usr/local/lib/python3.14/site-packages/starlette/_utils.py", line 87, in collapse_excgroups
apiserver | raise exc
apiserver | File "/usr/local/lib/python3.14/site-packages/starlette/middleware/base.py", line 193, in __call__
apiserver | response = await self.dispatch_func(request, call_next)
apiserver | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
apiserver | File "/usr/local/lib/python3.14/site-packages/airflow/api_fastapi/auth/middlewares/refresh_token.py", line 61, in dispatch
apiserver | response = await call_next(request)
apiserver | ^^^^^^^^^^^^^^^^^^^^^^^^
apiserver | File "/usr/local/lib/python3.14/site-packages/starlette/middleware/base.py", line 168, in call_next
apiserver | raise app_exc from app_exc.__cause__ or app_exc.__context__
apiserver | File "/usr/local/lib/python3.14/site-packages/starlette/middleware/base.py", line 144, in coro
apiserver | await self.app(scope, receive_or_disconnect, send_no_error)
apiserver | File "/usr/local/lib/python3.14/site-packages/starlette/middleware/base.py", line 191, in __call__
apiserver | with recv_stream, send_stream, collapse_excgroups():
apiserver | ~~~~~~~~~~~~~~~~~~^^
apiserver | File "/usr/local/lib/python3.14/contextlib.py", line 162, in __exit__
apiserver | self.gen.throw(value)
apiserver | ~~~~~~~~~~~~~~^^^^^^^
apiserver | File "/usr/local/lib/python3.14/site-packages/starlette/_utils.py", line 87, in collapse_excgroups
apiserver | raise exc
apiserver | File "/usr/local/lib/python3.14/site-packages/starlette/middleware/base.py", line 193, in __call__
apiserver | response = await self.dispatch_func(request, call_next)
apiserver | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
apiserver | File "/usr/local/lib/python3.14/site-packages/astronomer/runtime/plugin.py", line 90, in dispatch
apiserver | response = await call_next(request)
apiserver | ^^^^^^^^^^^^^^^^^^^^^^^^
apiserver | File "/usr/local/lib/python3.14/site-packages/starlette/middleware/base.py", line 168, in call_next
apiserver | raise app_exc from app_exc.__cause__ or app_exc.__context__
apiserver | File "/usr/local/lib/python3.14/site-packages/starlette/middleware/base.py", line 144, in coro
apiserver | await self.app(scope, receive_or_disconnect, send_no_error)
apiserver | File "/usr/local/lib/python3.14/site-packages/starlette/middleware/base.py", line 191, in __call__
apiserver | with recv_stream, send_stream, collapse_excgroups():
apiserver | ~~~~~~~~~~~~~~~~~~^^
apiserver | File "/usr/local/lib/python3.14/contextlib.py", line 162, in __exit__
apiserver | self.gen.throw(value)
apiserver | ~~~~~~~~~~~~~~^^^^^^^
apiserver | File "/usr/local/lib/python3.14/site-packages/starlette/_utils.py", line 87, in collapse_excgroups
apiserver | raise exc
apiserver | File "/usr/local/lib/python3.14/site-packages/starlette/middleware/base.py", line 193, in __call__
apiserver await self.app(scope, receive_or_disconnect, send_no_error)
apiserver File "/usr/local/lib/python3.14/site-packages/starlette/middleware/base.py", line 191, in __call__
apiserver with recv_stream, send_stream, collapse_excgroups():
apiserver ~~~~~~~~~~~~~~~~~~^^
apiserver File "/usr/local/lib/python3.14/contextlib.py", line 162, in __exit__
apiserver self.gen.throw(value)
apiserver ~~~~~~~~~~~~~~^^^^^^^
apiserver File "/usr/local/lib/python3.14/site-packages/starlette/_utils.py", line 87, in collapse_excgroups
apiserver raise exc
apiserver File "/usr/local/lib/python3.14/site-packages/starlette/middleware/base.py", line 193, in __call__
apiserver response = await self.dispatch_func(request, call_next)
apiserver ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
apiserver File "/usr/local/lib/python3.14/site-packages/astronomer/runtime/plugin.py", line 90, in dispatch
apiserver response = await call_next(request)
apiserver ^^^^^^^^^^^^^^^^^^^^^^^^
apiserver File "/usr/local/lib/python3.14/site-packages/starlette/middleware/base.py", line 168, in call_next
apiserver raise app_exc from app_exc.__cause__ or app_exc.__context__
apiserver File "/usr/local/lib/python3.14/site-packages/starlette/middleware/base.py", line 144, in coro
apiserver await self.app(scope, receive_or_disconnect, send_no_error)
apiserver File "/usr/local/lib/python3.14/site-packages/starlette/middleware/base.py", line 191, in __call__
apiserver with recv_stream, send_stream, collapse_excgroups():
apiserver ~~~~~~~~~~~~~~~~~~^^
apiserver File "/usr/local/lib/python3.14/contextlib.py", line 162, in __exit__
apiserver self.gen.throw(value)
apiserver ~~~~~~~~~~~~~~^^^^^^^
apiserver File "/usr/local/lib/python3.14/site-packages/starlette/_utils.py", line 87, in collapse_excgroups
apiserver raise exc
apiserver File "/usr/local/lib/python3.14/site-packages/starlette/middleware/base.py", line 193, in __call__
apiserver response = await self.dispatch_func(request, call_next)
apiserver ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
apiserver File "/usr/local/airflow/plugins/plugins/AIP_68_plugins/fastapi_root_middlewares.py", line 6, in dispatch
apiserver response = await call_next(request)
apiserver ^^^^^^^^^^^^^^^^^^^^^^^^
apiserver File "/usr/local/lib/python3.14/site-packages/starlette/middleware/base.py", line 168, in call_next
apiserver raise app_exc from app_exc.__cause__ or app_exc.__context__
apiserver File "/usr/local/lib/python3.14/site-packages/starlette/middleware/base.py", line 144, in coro
apiserver await self.app(scope, receive_or_disconnect, send_no_error)
apiserver File "/usr/local/lib/python3.14/site-packages/starlette/middleware/exceptions.py", line 63, in __call__
apiserver await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
apiserver File "/usr/local/lib/python3.14/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
apiserver raise exc
apiserver File "/usr/local/lib/python3.14/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
apiserver await app(scope, receive, sender)
apiserver File "/usr/local/lib/python3.14/site-packages/fastapi/middleware/asyncexitstack.py", line 18, in __call__
apiserver await self.app(scope, receive, send)
apiserver File "/usr/local/lib/python3.14/site-packages/starlette/routing.py", line 716, in __call__
apiserver await self.middleware_stack(scope, receive, send)
apiserver File "/usr/local/lib/python3.14/site-packages/starlette/routing.py", line 736, in app
apiserver await route.handle(scope, receive, send)
apiserver File "/usr/local/lib/python3.14/site-packages/starlette/routing.py", line 290, in handle
apiserver await self.app(scope, receive, send)
apiserver File "/usr/local/lib/python3.14/site-packages/fastapi/routing.py", line 134, in app
apiserver await wrap_app_handling_exceptions(app, request)(scope, receive, send)
apiserver File "/usr/local/lib/python3.14/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
apiserver raise exc
apiserver File "/usr/local/lib/python3.14/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
apiserver await app(scope, receive, sender)
apiserver File "/usr/local/lib/python3.14/site-packages/fastapi/routing.py", line 120, in app
apiserver response = await f(request)
apiserver ^^^^^^^^^^^^^^^^
apiserver File "/usr/local/lib/python3.14/site-packages/fastapi/routing.py", line 674, in app
apiserver raw_response = await run_endpoint_function(
apiserver ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
apiserver ...<3 lines>...
apiserver )
apiserver ^
apiserver File "/usr/local/lib/python3.14/site-packages/fastapi/routing.py", line 330, in run_endpoint_function
apiserver return await run_in_threadpool(dependant.call, **values)
apiserver ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
apiserver File "/usr/local/lib/python3.14/site-packages/starlette/concurrency.py", line 32, in run_in_threadpool
apiserver return await anyio.to_thread.run_sync(func)
apiserver ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
apiserver File "/usr/local/lib/python3.14/site-packages/anyio/to_thread.py", line 63, in run_sync
apiserver return await get_async_backend().run_sync_in_worker_thread(
apiserver ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
apiserver func, args, abandon_on_cancel=abandon_on_cancel, limiter=limiter
apiserver ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
apiserver )
apiserver ^
apiserver File "/usr/local/lib/python3.14/site-packages/anyio/_backends/_asyncio.py", line 2502, in run_sync_in_worker_thread
apiserver return await future
apiserver ^^^^^^^^^^^^
apiserver File "/usr/local/lib/python3.14/site-packages/anyio/_backends/_asyncio.py", line 986, in run
apiserver result = context.run(func, *args)
apiserver File "/usr/local/lib/python3.14/site-packages/airflow/api_fastapi/core_api/routes/public/dag_stats.py", line 91, in get_dag_stats
apiserver DagStatsResponse(
apiserver ~~~~~~~~~~~~~~~~^
apiserver dag_id=dag_id,
apiserver ^^^^^^^^^^^^^^
apiserver ...<7 lines>...
apiserver ],
apiserver ^^
apiserver )
apiserver ^
apiserver File "/usr/local/lib/python3.14/site-packages/pydantic/main.py", line 250, in __init__
apiserver validated_self = self.__pydantic_validator__.validate_python(data, self_instance=self)
apiserver pydantic_core._pydantic_core.ValidationError: 1 validation error for DagStatsResponse
apiserver dag_display_name
apiserver Input should be a valid string [type=string_type, input_value=None, input_type=NoneType]
Apache Airflow version
3.2.0b2
What happened and how to reproduce it?
What you think should happen instead?
No response
Operating System
Linux
Versions of Apache Airflow Providers
No response
Deployment
Other
Deployment details
No response
Anything else?
No response
Are you willing to submit PR?
Code of Conduct