-
Notifications
You must be signed in to change notification settings - Fork 1.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Make cache queries parallel #6468
Merged
Merged
Conversation
This file contains 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
cdmihai
force-pushed
the
parallel_cache_queries
branch
from
May 25, 2021 00:54
b0a3a7a
to
6588839
Compare
cdmihai
force-pushed
the
parallel_cache_queries
branch
from
May 27, 2021 21:14
6588839
to
ab2c282
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Overall LGTM, a few questions.
…is not queried in parallel
rainersigwald
approved these changes
Jun 1, 2021
/azp run |
Azure Pipelines successfully started running 1 pipeline(s). |
cdmihai
added
the
merge-when-branch-open
PRs that are approved, except that there is a problem that means we are not merging stuff right now.
label
Jun 1, 2021
rainersigwald
pushed a commit
that referenced
this pull request
Sep 8, 2022
) In #6468, the two callers of the method and the method itself were moved to `ProjectCacheService`. However, the original method remained behind as dead code.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
merge-when-branch-open
PRs that are approved, except that there is a problem that means we are not merging stuff right now.
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.
Can review the commits individually. Ignore whitespace helps.
Context
The project cache was being queried serially. Oops.
This is because the monolithic BuildManager._syncLock was being held during the cache query, thus serializing all access.
Changes Made
Implements the 2nd option from the design doc: https://gist.github.com/cdmihai/0955cb217b2cbd66e18c89b20bf68319#2-reuse-how-the-buildmanager-offloads-parallel-work-to-build-nodes
Design time builds were a pain to get right this time. Previously design time builds were easy to deal with because the BuildManager detected them early enough. Now they get detected later in the project cache service. The build manager detects this and shuts the cache service off when design time builds are detected.
Testing
Added a parallel stress test. This should be a good test to both ensure the cache is queried in parallel and to stress test the concurrency in the engine.
Risk assessment
This should make the non project cache logic less risky than it was before, since I took the project cache logic out of BuildManager and moved it to the ProjectCacheService.