[17.12] Prevent contention between CancelAllSubmissions and EndBuild #10745
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.
Fixes #10709
Summary
VS hangs during solution close - turns out to be caused by hang in
BuildManager.EndBuild
There are
almost 3kover 4k (and counting) cases hit in wild on 17.11 (details)It turns out to be a contention between
CancelAllSubmissions
andEndBuild
(for the state of_buildManagerState
) - more details in the bug: #10709 (comment)Customer Impact
High rate of hangs during solution closes (either during VS closing or opening different solution from VS with already opened solution)
Regression?
No, but some other recent timing changes (possibly speedups) made this much more prelevant.
Testing
Tailored unit test (reliably simulating the hang if fix is not present).
Existing unit tests.
Manual testing in VS, with manualy freezing/thawing threads to simulate corner cases
Risk
Low - it allows resubmission of cancelation requests that are internaly otherwise idempotent already.
Changes Made
CancelAllSubmissions
is allowed to be executed even ifEndBuild
was initiated