Etienne Callies
03/02/2026, 10:07 AMMarvin
03/02/2026, 10:07 AMMarvin
03/02/2026, 10:08 AMNate
03/02/2026, 3:32 PMNate
03/02/2026, 3:32 PMCompleted. Is there a github issue for that ?Marvin
03/02/2026, 3:32 PMMarvin
03/02/2026, 3:38 PM@flow from inside a flow, or using run_deployment(..., as_subflow=True)?
- Is the child actually terminal in the API? If you can grab the run IDs, we can confirm with the client:
import asyncio
from prefect.client.orchestration import PrefectClient
async def show_state(flow_run_id: str):
async with PrefectClient() as client:
fr = await client.read_flow_run(flow_run_id)
print(fr.id, fr.state.type, fr.state_name)
asyncio.run(show_state("<PARENT_FLOW_RUN_ID>"))
asyncio.run(show_state("<CHILD_FLOW_RUN_ID>"))
- Are you running the UI behind a reverse proxy/ALB that may idle out or reset WebSocket connections? We’ve seen stale UI state if the WS drops and the page doesn’t reconnect cleanly. A quick refresh sometimes “fixes” the display, which indicates a front-end sync issue.
If you’re able to try a patch upgrade, I’d also recommend bumping your self-hosted stack from 3.6.15 to a newer 3.6.x (current is 3.6.20) to pick up recent UI and event-streaming fixes:
- Latest release notes: https://github.com/PrefectHQ/prefect/releases
- 3.6.20 changelog: https://github.com/PrefectHQ/prefect/compare/3.6.19...3.6.20
If it still reproduces after upgrading, I’m happy to open a GitHub issue on your behalf. The most helpful details:
- Exact Prefect version (server and workers), browser + proxy/load balancer setup (if any)
- Whether the subflow was created via nested @flow or run_deployment(..., as_subflow=True)
- Parent flow run ID and child flow run ID
- Whether the API reports the child as terminal while the UI shows Running
- Any screenshots or logs around the transition when the parent completed
Send me those details and I’ll get a ticket filed.Nate
03/02/2026, 3:39 PMNate
03/02/2026, 3:40 PMEtienne Callies
03/02/2026, 3:51 PMNate
03/02/2026, 6:00 PM