Skip to content

fmtk e2e: restart_app tolerates a dead isolate in its pre-restart drain (#3469) - #3539

Merged
mcdonc merged 2 commits into
mainfrom
i3469-fmtk-e2e-f
Oct 2, 2026
Merged

mcdonc merged 2 commits into
mainfrom
i3469-fmtk-e2e-f

Conversation

@mcdonc

@mcdonc mcdonc commented Oct 2, 2026

Copy link
Copy Markdown
Owner

Summary

Harness.restart_app() — the fmtk e2e harness's designated recovery for a dead dwds debug connection — died in its own pre-restart drain: get_app_errors on a gone isolate raised No Flutter isolate found before the stop/relaunch could run, so the restart never happened. One dead instance then converted into the flows group's nightly cascade (all four test_network.py scenarios + three teardown no_app_errors ERRORs, every scheduled run since the suite split of #3404).

The pre-restart drain now treats the gone-isolate signature as an empty drain and proceeds with the stop/relaunch — the same deliberate trade FlutterRun.recover_from_wedge already documents: an error the dying instance threw in its last undriven moments can no longer fail its test. The relaunch also clears the wedge marker (isolate_gone_since), which describes the outgoing instance. Real drained errors and any other drain failure still raise, so the drain's laundering protection is unchanged for live apps.

Pinned in test_harness_recovery.py alongside the existing wedge-recovery legs: a gone-isolate drain relaunches and clears the marker; a drain with real errors and an unrelated drain failure both still raise before any stop.

Closes #3469.

…in (#3469)

The nightly flows cascade: test_auth ends on a deep-link boot whose
instance dies, and the first network scenario's designated recovery —
Harness.restart_app() — died in its own pre-restart drain
(get_app_errors: 'No Flutter isolate found'), so the restart never ran
and every following scenario failed on the dead connection, night
after night.

The drain now treats the gone-isolate signature as an empty drain (the
same trade FlutterRun.recover_from_wedge documents: an error the dying
instance threw in its last undriven moments can no longer fail its
test) and proceeds with the stop/relaunch; the wedge marker the
outgoing instance armed is cleared. Real drained errors and any other
drain failure still raise.
@github-actions github-actions Bot added the backport/2.0 Merge also backports the squash commit to stable/2.0 (#3361) label Oct 2, 2026
…ption (#3469)

Review follow-up: the suite docstring claimed restart_app always
drains+raises before stopping; note the exception the #3469 recovery
introduced — a gone isolate's drain counts as empty.
@mcdonc
mcdonc merged commit b0a3ad3 into main Oct 2, 2026
9 checks passed
@mcdonc
mcdonc deleted the i3469-fmtk-e2e-f branch October 2, 2026 13:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backport/2.0 Merge also backports the squash commit to stable/2.0 (#3361)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

fmtk e2e (flows): restart_app's pre-restart drain fails on an already-dead app — network module cascades every night

1 participant