Closed as not planned
Closed as not planned
Copy link
Labels
P2Important issues not at the top of the work listImportant issues not at the top of the work listteam-toolOwned by Flutter Tool teamOwned by Flutter Tool teamtoolAffects the "flutter" command-line tool. See also t: labels.Affects the "flutter" command-line tool. See also t: labels.triaged-toolTriaged by Flutter Tool teamTriaged by Flutter Tool team
Description
In #193748, ExtensionBuildManager.build invokes the build.build RPC on a tool extension isolate without a wall-clock timeout (timeout: null in ExtensionConnection.sendRequest) because complex native builds can legitimately run for many minutes.
While ExtensionConnection already monitors Isolate.addOnExitListener and Isolate.addErrorListener to fail in-flight requests immediately if an extension isolate crashes or exits, a silently deadlocked extension isolate during a long-running operation (build.build, artifact.downloadArtifacts, etc.) will hang indefinitely without a liveness mechanism.
We should consider introducing a heartbeat / progress notification mechanism between package:flutter_tools_extension and ExtensionConnection:
- Allow long-running extension RPC handlers (or the extension isolate runner) to emit periodic heartbeat or build progress notifications over the JSON-RPC channel.
- Support an optional inactivity/heartbeat timeout on
ExtensionConnection.sendRequestthat resets whenever a heartbeat or progress notification is received from the extension, rather than bounding total wall-clock execution time.
Metadata
Metadata
Assignees
Labels
P2Important issues not at the top of the work listImportant issues not at the top of the work listteam-toolOwned by Flutter Tool teamOwned by Flutter Tool teamtoolAffects the "flutter" command-line tool. See also t: labels.Affects the "flutter" command-line tool. See also t: labels.triaged-toolTriaged by Flutter Tool teamTriaged by Flutter Tool team
Activity
[flutter_tools] Add TODO for extension RPC heartbeat monitoring (flut…
[flutter_tools] Improve ExtensionConnection unhandled error logging a…
bkonyi commentedon Oct 27, 2026
Closing as not planned. In-isolate heartbeats and cooperative cancellation are ineffective when an extension hangs on a wedged event loop or synchronous call. Instead, we rely on activity monitoring via existing progress/log notifications and host-side isolate termination on timeout.
[flutter_tools] Remove obsolete heartbeat TODO in DiagnosticsExtensio…
github-actions commentedon Nov 10, 2026
This thread has been automatically locked since there has not been any recent activity after it was closed. If you are still experiencing a similar issue, please open a new bug, including the output of
flutter doctor -vand a minimal reproduction of the issue.