atul-astronomer opened a new issue, #64247:
URL: https://github.com/apache/airflow/issues/64247
### Apache Airflow version
3.2.0b2
### What happened and how to reproduce it?
1. Start airflow instance on 3.2.0b2 tag.
2. Hit dagStats endpoint providing any existing dag with dagrun created.
3. Notice the error in API server logs
```typescript
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]
```
### 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?
- [ ] Yes I am willing to submit a PR!
### Code of Conduct
- [x] I agree to follow this project's [Code of
Conduct](https://github.com/apache/airflow/blob/main/CODE_OF_CONDUCT.md)
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]