[Multithreaded MSBuild] Design and run tests
- Dominant language
- C#
- Stars
- 5.5k
- Forks
- 1.5k
- Avg merge
- 1d 8h
- Merged PRs (30d)
- 141
Description
Multithreaded builds fail in ways that ordinary tests do not catch: race conditions that only appear under load, and tasks that pass in a multi-process test but break when they share a process. This epic builds the test coverage that finds those problems before users do.
## Steps
- [x] [#12124](https://github.com/dotnet/msbuild/issues/12124) Use AI to review MT feature code and find race conditions.
- [x] [#12640](https://github.com/dotnet/msbuild/issues/12640) [#12919](https://github.com/dotnet/msbuild/issues/12919) [#13153](https://github.com/dotnet/msbuild/issues/13153) Add end-to-end multithreaded tests to the MSBuild PR gate
- [ ] [#12920](https://github.com/dotnet/msbuild/issues/12920) Build and run infrastructure to reproduce and diagnose race conditions [size M] [Milestone: version 18.13]
- [ ] Fix found issues [Milestone: SDK 11.0.200]
## Stakeholders
The MSBuild team, who need confidence that `-mt` is correct before it is on by default.
## Definition of done
The test infrastructure does not highlight any MT-related bugs.
Original description and test scenarios
Design and implement tests to find rare race conditions in the multithreaded MSBuild implementation. Fix found issues.
Specific scenarios of interest:
* simple console app (e.g. `dotnet new console`)
* useful to help track the end-to-end perf of the 'getting started' experience
* MSBuild repo itself
* We do fairly non-trivial things with custom, local tasks, etc
* Orchard Code
* representative of large-ish .NET SDK-style workspaces
* A non-SDK-style workspace/project build
* should show great impact of MT because most Tasks are provided by MSBuild - earlier visibility into potential gains
* A workspace that uses static graph
* Shouldn't impact _execution_, which is what multithreaded is mostly concerned with, but a good thing to have verified
* A workspace that uses the project cache plugin
* Shouldn't impact multithreaded mode because the project cache plugin entirely replaces calls to build a specific project, but a good thing to have verified
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.