Prove application quiescence before swap - #263
Closed
peters wants to merge 1 commit into
Closed
Conversation
peters
force-pushed
the
fix/recovery-state-hardening
branch
from
September 1, 2026 05:43
8ca0da4 to
522c305
Compare
peters
force-pushed
the
test/update-quiescence-regressions
branch
2 times, most recently
from
September 1, 2026 05:53
401448b to
a47764b
Compare
peters
force-pushed
the
fix/recovery-state-hardening
branch
2 times, most recently
from
September 1, 2026 06:23
30058d8 to
81890f3
Compare
peters
force-pushed
the
test/update-quiescence-regressions
branch
2 times, most recently
from
September 1, 2026 06:31
1852fd7 to
e185de7
Compare
peters
force-pushed
the
fix/recovery-state-hardening
branch
2 times, most recently
from
September 1, 2026 06:51
f72e8d2 to
7cf6e85
Compare
peters
force-pushed
the
test/update-quiescence-regressions
branch
from
September 1, 2026 06:51
e185de7 to
663d32a
Compare
peters
force-pushed
the
fix/recovery-state-hardening
branch
from
September 1, 2026 07:00
7cf6e85 to
1adab3e
Compare
peters
force-pushed
the
test/update-quiescence-regressions
branch
2 times, most recently
from
September 1, 2026 07:10
12795e4 to
d5baa6c
Compare
peters
force-pushed
the
fix/recovery-state-hardening
branch
2 times, most recently
from
September 1, 2026 07:20
5273948 to
639af87
Compare
peters
force-pushed
the
test/update-quiescence-regressions
branch
2 times, most recently
from
September 1, 2026 07:26
9f5d01c to
6a88bf0
Compare
peters
force-pushed
the
fix/recovery-state-hardening
branch
2 times, most recently
from
September 1, 2026 07:33
a486868 to
2b68089
Compare
peters
force-pushed
the
test/update-quiescence-regressions
branch
from
September 1, 2026 07:33
6a88bf0 to
6784e76
Compare
peters
force-pushed
the
fix/recovery-state-hardening
branch
from
September 1, 2026 07:37
2b68089 to
3bf7f13
Compare
peters
force-pushed
the
test/update-quiescence-regressions
branch
2 times, most recently
from
September 1, 2026 07:56
70c4639 to
5221d3d
Compare
peters
force-pushed
the
fix/recovery-state-hardening
branch
2 times, most recently
from
September 1, 2026 08:02
62c10d9 to
519229b
Compare
peters
force-pushed
the
test/update-quiescence-regressions
branch
from
September 1, 2026 08:02
5221d3d to
4ee1945
Compare
peters
force-pushed
the
test/update-quiescence-regressions
branch
from
September 1, 2026 12:43
21b5bba to
05480c8
Compare
peters
force-pushed
the
fix/recovery-state-hardening
branch
from
September 1, 2026 12:43
778d25f to
331b808
Compare
Copilot stopped reviewing on behalf of
peters due to an error
September 1, 2026 12:48
peters
force-pushed
the
fix/recovery-state-hardening
branch
from
September 1, 2026 12:56
331b808 to
e039cfc
Compare
peters
force-pushed
the
test/update-quiescence-regressions
branch
from
September 1, 2026 12:56
05480c8 to
4d2c0fc
Compare
peters
force-pushed
the
fix/recovery-state-hardening
branch
from
September 1, 2026 13:13
e039cfc to
8e325a9
Compare
peters
force-pushed
the
test/update-quiescence-regressions
branch
from
September 1, 2026 13:13
4d2c0fc to
2a946eb
Compare
This was referenced Sep 1, 2026
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 3 out of 3 changed files in this pull request and generated no new comments.
Suppressed comments (1)
crates/surge-core/src/update/manager.rs:4632
- These wrappers still check the child only after
download_and_applyhas completed, so they would also pass if a refactor moved termination until after the directory swap. That leaves the advertised pre-swap quiescence invariant uncovered. Please observe the child from the progress callback and assert it has exited whenPREPARING_SWAPis emitted, before any swap operation begins.
async fn assert_download_and_apply_quiesces_current_executable_when_target_name_changes(
current_app_dir_name: &str,
) {
Exercise both current and retained legacy install layouts, and verify the exact original process generation is gone when PREPARING_SWAP is emitted. Keep the bounded supervisor retry assertion tolerant of slower validation hosts. Relates to fintermobilityas/youpark#1310
Contributor
Author
|
Closing this stacked PR as superseded. The stack hardens in-process quiescence but cannot eliminate the updating process's mixed-install window and no longer matches the required stable app-directory design. Replacement work will use one external-finalizer change and preserve the stable app execution path. The branch is intentionally retained until the replacement is merged so its regression cases remain available for reference. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
PREPARING_SWAPapplayout and retained versioned application layoutWhy
The end-to-end regression must observe the swap boundary directly. Final state alone cannot prove that directory mutation waited for complete application quiescence.
This is stack 15 of 16.
Relates to fintermobilityas/youpark#1310.
Validation
b6be696passed both update-layout quiescence regressions and the complete 391-testsurge-coresuitePREPARING_SWAPc48f19fpassed 681 Rust workspace tests, both blocking Clippy tiers, vendor/version/format/maintainability checks, .NET formatting, and all 58 .NET testsNo migration is required.