migrate turbo-tasks to scattered collect#94503
Open
lukesandberg wants to merge 4 commits into
Open
Conversation
Contributor
Author
|
Warning This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
This stack of pull requests is managed by Graphite. Learn more about stacking. |
Contributor
Stats cancelledCommit: 5d27669 |
Contributor
Failing test suitesCommit: 5d27669 | About building and testing Next.js
Expand output● LRU disk eviction › should evict old entries when new entries are set |
ee21662 to
ea3f40c
Compare
ea3f40c to
c9c8d46
Compare
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.

What
This uses
scatter_collectfrom @mmastrac to register all values, traits and value impls of traits. now all data can be consistently accessed when constructing the VALUEs registry, eliminating a number of racy access opportunities.Why
Scatter collect uses link sections to gather registries at link time, this resolve some inherent brittleness in constructor functions since the relative execution order is not guaranteed and it is also to even detect execution that is too early.
We have a single report that appears to be due to this
Which implies a race condition somewhere in our value registration. Unfortunately initialization logic is brittle since it relies on
All of these need to be initialized before the
VALUESregistry is accessed, but the above panic implies that the ctor function for ModuleGraphImportTracer to register its implementation of ImportTracer hasn't occurred yet.By moving to link time registration we completely eliminate all startup races since the linker does all the 'gathering'