Do invalidation in Build
instead of the asset graph
#3984
Merged
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.
For #3811.
Prior to this PR, invalidation uses a combination of: 1) walk rdeps to mark nodes as "needs building" or "needs checking" in the asset graph; and 2) propagate failures via rdeps in
Build
and 3) check deps inBuild
.With this PR, rdeps are not used: invalidation happens only "in order". State that doesn't need serializing, the progress of the checking the current build, is moved out of the asset graph into the
Build
class.Changes to
AssetNode
:pendingBuildAction
.lastKnownDigest
->digest
and document how it's used.isFailure
, addresult
which isnull
for not run,false
for failed,true
for succeededwasOutput
boolean: presence ofdigest
indicates that it was output, because if there is an output, we immediately compute the digest; add getter checkingdigest
insteadDigest([])
where a digest is needed to indicatewasOutput
but the content doesn't matter.