Skip to content

Broken Grid view after downgrade from 3.1.0rc1 with dagruns #55949

@atul-astronomer

Description

@atul-astronomer

Apache Airflow version

3.1.0rc1

If "Other Airflow 2 version" selected, which one?

No response

What happened?

apiserver INFO:     2401:4900:883b:c158:c49c:438d:f95d:85fb:0 - "GET /d7q555rt/ui/grid/ti_summaries/catchup_test/manual__2025-09-22T10%3A10%3A12.627610%2B00%3A00 HTTP/1.1" 500 Internal Server Error
apiserver ERROR:    Exception in ASGI application
apiserver   + Exception Group Traceback (most recent call last):
apiserver   |   File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 77, in collapse_excgroups
apiserver   |     yield
apiserver   |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 183, in __call__
apiserver   |     async with anyio.create_task_group() as task_group:
apiserver   |                ^^^^^^^^^^^^^^^^^^^^^^^^^
apiserver   |   File "/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 772, in __aexit__
apiserver   |     raise BaseExceptionGroup(
apiserver   | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
apiserver   +-+---------------- 1 ----------------
apiserver     | Traceback (most recent call last):
apiserver     |   File "/usr/local/lib/python3.12/site-packages/uvicorn/protocols/http/httptools_impl.py", line 409, in run_asgi
apiserver     |     result = await app(  # type: ignore[func-returns-value]
apiserver     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
apiserver     |   File "/usr/local/lib/python3.12/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.12/site-packages/fastapi/applications.py", line 1054, in __call__
apiserver     |     await super().__call__(scope, receive, send)
apiserver     |   File "/usr/local/lib/python3.12/site-packages/starlette/applications.py", line 113, in __call__
apiserver     |     await self.middleware_stack(scope, receive, send)
apiserver     |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 186, in __call__
apiserver     |     raise exc
apiserver     |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 164, in __call__
apiserver     |     await self.app(scope, receive, _send)
apiserver     |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/gzip.py", line 29, in __call__
apiserver     |     await responder(scope, receive, send)
apiserver     |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/gzip.py", line 130, in __call__
apiserver     |     await super().__call__(scope, receive, send)
apiserver     |   File "/usr/local/lib/python3.12/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.12/site-packages/starlette/middleware/cors.py", line 85, in __call__
apiserver     |     await self.app(scope, receive, send)
apiserver     |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 182, in __call__
apiserver     |     with recv_stream, send_stream, collapse_excgroups():
apiserver     |                                    ^^^^^^^^^^^^^^^^^^^^
apiserver     |   File "/usr/local/lib/python3.12/contextlib.py", line 158, in __exit__
apiserver     |     self.gen.throw(value)
apiserver     |   File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 83, in collapse_excgroups
apiserver     |     raise exc
apiserver     |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 184, in __call__
apiserver     |     response = await self.dispatch_func(request, call_next)
apiserver     |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
apiserver     |   File "/usr/local/lib/python3.12/site-packages/airflow/api_fastapi/core_api/middleware.py", line 28, in dispatch
apiserver     |     response = await call_next(request)
apiserver     |                ^^^^^^^^^^^^^^^^^^^^^^^^
apiserver     |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 159, in call_next
apiserver     |     raise app_exc
apiserver     |   File "/usr/local/lib/python3.12/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.12/site-packages/starlette/middleware/base.py", line 182, in __call__
apiserver     |     with recv_stream, send_stream, collapse_excgroups():
apiserver     |                                    ^^^^^^^^^^^^^^^^^^^^
apiserver     |   File "/usr/local/lib/python3.12/contextlib.py", line 158, in __exit__
apiserver     |     self.gen.throw(value)
apiserver     |   File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 83, in collapse_excgroups
apiserver     |     raise exc
apiserver     |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 184, in __call__
apiserver     |     response = await self.dispatch_func(request, call_next)
apiserver     |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
apiserver     |   File "/usr/local/lib/python3.12/site-packages/astronomer/runtime/plugin.py", line 90, in dispatch
apiserver     |     response = await call_next(request)
apiserver     |                ^^^^^^^^^^^^^^^^^^^^^^^^
apiserver     |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 159, in call_next
apiserver     |     raise app_exc
apiserver     |   File "/usr/local/lib/python3.12/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.12/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.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
apiserver     |     raise exc
apiserver     |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
apiserver     |     await app(scope, receive, sender)
apiserver     |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 716, in __call__
apiserver     |     await self.middleware_stack(scope, receive, send)
apiserver     |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 736, in app
apiserver     |     await route.handle(scope, receive, send)
apiserver     |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 290, in handle
apiserver     |     await self.app(scope, receive, send)
apiserver            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
apiserver   File "/usr/local/lib/python3.12/site-packages/fastapi/applications.py", line 1054, in __call__
apiserver     await super().__call__(scope, receive, send)
apiserver   File "/usr/local/lib/python3.12/site-packages/starlette/applications.py", line 113, in __call__
apiserver     await self.middleware_stack(scope, receive, send)
apiserver   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 186, in __call__
apiserver     raise exc
apiserver   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 164, in __call__
apiserver     await self.app(scope, receive, _send)
apiserver   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/gzip.py", line 29, in __call__
apiserver     await responder(scope, receive, send)
apiserver   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/gzip.py", line 130, in __call__
apiserver     await super().__call__(scope, receive, send)
apiserver   File "/usr/local/lib/python3.12/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.12/site-packages/starlette/middleware/cors.py", line 85, in __call__
apiserver     await self.app(scope, receive, send)
apiserver   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 182, in __call__
apiserver     with recv_stream, send_stream, collapse_excgroups():
apiserver                                    ^^^^^^^^^^^^^^^^^^^^
apiserver   File "/usr/local/lib/python3.12/contextlib.py", line 158, in __exit__
apiserver     self.gen.throw(value)
apiserver   File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 83, in collapse_excgroups
apiserver     raise exc
apiserver   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 184, in __call__
apiserver     response = await self.dispatch_func(request, call_next)
apiserver                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
apiserver   File "/usr/local/lib/python3.12/site-packages/airflow/api_fastapi/core_api/middleware.py", line 28, in dispatch
apiserver     response = await call_next(request)
apiserver                ^^^^^^^^^^^^^^^^^^^^^^^^
apiserver   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 159, in call_next
apiserver     raise app_exc
apiserver   File "/usr/local/lib/python3.12/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.12/site-packages/starlette/middleware/base.py", line 182, in __call__
apiserver     with recv_stream, send_stream, collapse_excgroups():
apiserver                                    ^^^^^^^^^^^^^^^^^^^^
apiserver   File "/usr/local/lib/python3.12/contextlib.py", line 158, in __exit__
apiserver     self.gen.throw(value)
apiserver   File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 83, in collapse_excgroups
apiserver     raise exc
apiserver   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 184, in __call__
apiserver     response = await self.dispatch_func(request, call_next)
apiserver                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
apiserver   File "/usr/local/lib/python3.12/site-packages/astronomer/runtime/plugin.py", line 90, in dispatch
apiserver     response = await call_next(request)
apiserver                ^^^^^^^^^^^^^^^^^^^^^^^^
apiserver   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 159, in call_next
apiserver     raise app_exc
apiserver   File "/usr/local/lib/python3.12/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.12/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.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
apiserver     raise exc
apiserver   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
apiserver     await app(scope, receive, sender)
apiserver   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 716, in __call__
apiserver     await self.middleware_stack(scope, receive, send)
apiserver   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 736, in app
apiserver     await route.handle(scope, receive, send)
apiserver   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 290, in handle
apiserver     await self.app(scope, receive, send)
apiserver   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 78, in app
apiserver     await wrap_app_handling_exceptions(app, request)(scope, receive, send)
apiserver   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
apiserver     raise exc
apiserver   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
apiserver     await app(scope, receive, sender)
apiserver   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 75, in app
apiserver     response = await f(request)
apiserver                ^^^^^^^^^^^^^^^^
apiserver   File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 302, in app
apiserver     raw_response = await run_endpoint_function(
apiserver                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
apiserver   File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 215, in run_endpoint_function
apiserver     return await run_in_threadpool(dependant.call, **values)
apiserver            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
apiserver   File "/usr/local/lib/python3.12/site-packages/starlette/concurrency.py", line 38, in run_in_threadpool
apiserver     return await anyio.to_thread.run_sync(func)
apiserver            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
apiserver   File "/usr/local/lib/python3.12/site-packages/anyio/to_thread.py", line 56, in run_sync
apiserver     return await get_async_backend().run_sync_in_worker_thread(
apiserver            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
apiserver   File "/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 2470, in run_sync_in_worker_thread
apiserver     return await future
apiserver            ^^^^^^^^^^^^
apiserver   File "/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 967, in run
apiserver     result = context.run(func, *args)
apiserver              ^^^^^^^^^^^^^^^^^^^^^^^^
apiserver   File "/usr/local/lib/python3.12/site-packages/airflow/api_fastapi/core_api/routes/ui/grid.py", line 534, in get_grid_ti_summaries
apiserver     node=serdag.dag.task_group,
apiserver          ^^^^^^^^^^
apiserver   File "/usr/local/lib/python3.12/site-packages/airflow/models/serialized_dag.py", line 592, in dag
apiserver     return SerializedDAG.from_dict(data)
apiserver            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
apiserver   File "/usr/local/lib/python3.12/site-packages/airflow/serialization/serialized_objects.py", line 1993, in from_dict
apiserver     raise ValueError(f"Unsure how to deserialize version {ver!r}")
apiserver ValueError: Unsure how to deserialize version 3
apiserver INFO:     2401:4900:883b:c158:c49c:438d:f95d:85fb:0 - "GET /d7q555rt/ui/grid/ti_summaries/catchup_test/scheduled__2025-09-21T00%3A00%3A00%2B00%3A00 HTTP/1.1" 200 OK
Image

What you think should happen instead?

No response

How to reproduce

  1. Start airflow with 3.0.6 and make a manual dagrun.
  2. Upgrade to 3.1.0rc1 and create another manual dagrun.
  3. Rollback to 3.0.6 and notice the grid view on UI and api server logs.

Note: Working fine on 3.1.0b2

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

Metadata

Metadata

Assignees

Labels

affected_version:3.1Issues Reported for 3.1area:UIRelated to UI/UX. For Frontend Developers.area:corekind:bugThis is a clearly a bugpriority:criticalShowstopper bug that should be patched immediately

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions