| Commit message (Collapse) | Author | Age |
|
|
|
|
|
|
| |
where we weren't checking to see if a reverse dep already existed when we declared a reverse dep.
--
MOS_MIGRATED_REVID=122581019
|
|
|
|
|
|
|
|
|
|
|
| |
discover that it no longer has certain deps.
In the common case, where a node's deps do not change in the end, this reduces lock contention and CPU.
The downside of this is that we now create a set of the previous reverse deps during each evaluation of a node. We don't store this set in order to conserve memory, so we pay for it in CPU. We will probably only construct it two or three times (most SkyFunctions don't have so many groups), so the cost shouldn't be so high, but we can try to mitigate if it shows up in profiling.
--
MOS_MIGRATED_REVID=122566267
|
|
|
|
|
|
|
| |
conversion is unnecessary and wasteful. In the remaining cases, the set conversion can be explicit.
--
MOS_MIGRATED_REVID=122294939
|
|
|
|
|
|
|
| |
helpers to enforce concurrency synchronization points and determinism even if they are not using an InMemoryGraph-backed evaluator.
--
MOS_MIGRATED_REVID=121977783
|
|
|
|
|
|
|
| |
allowing for future work that may want to access a particular group in the GroupedList without advancing the iterator.
--
MOS_MIGRATED_REVID=120933039
|
|
|
|
|
| |
--
MOS_MIGRATED_REVID=118623130
|
|
|
|
|
|
|
| |
non-keep-going build. Setting errorDepKey was only mostly harmless, to mix memes. (Actually, it was quite harmful.)
--
MOS_MIGRATED_REVID=118410594
|
|
|
|
|
| |
--
MOS_MIGRATED_REVID=117894693
|
|
|
|
|
|
|
| |
it. The copying showed up as a source of memory spikiness.
--
MOS_MIGRATED_REVID=117741939
|
|
|
|
|
|
|
| |
SkyQueryEnvironment. QueryEnvironmentFactory, recently introduced by unknown commit, is a much more general purpose mechanism.
--
MOS_MIGRATED_REVID=117590252
|
|
|
|
|
|
|
| |
copying it. The copying showed up as a source of memory spikiness in an OOM.
--
MOS_MIGRATED_REVID=117477133
|
|
|
|
|
|
|
| |
...so the docs show up on hover in an IDE.
--
MOS_MIGRATED_REVID=116986129
|
|
|
|
|
|
|
| |
are created, as opposed to when they are requested from the ParallelEvaluator. That delay can lead to large memory spikes and churn.
--
MOS_MIGRATED_REVID=116224565
|
|
|
|
|
|
|
| |
SkyFunction
--
MOS_MIGRATED_REVID=115671161
|
|
|
|
|
|
|
| |
Also delete some code that's been dead for a while, now that we eagerly shut down evaluation when we come across a child in error during a fail-fast evaluation.
--
MOS_MIGRATED_REVID=115272603
|
|
|
|
|
| |
--
MOS_MIGRATED_REVID=114488935
|
|
|
|
|
|
|
| |
recover from errors. In the case of a single keep_going build, with no subsequent nokeep_going builds, storing the errors is unnecessary.
--
MOS_MIGRATED_REVID=114355846
|
|
|
|
|
|
|
| |
tests. Replace it in tests with direct Skyframe graph lookups.
--
MOS_MIGRATED_REVID=114335937
|
|
|
|
|
|
|
| |
ArtifactFunction.
--
MOS_MIGRATED_REVID=114174899
|
|
|
|
|
|
|
| |
node don't have access to its dependencies ("grandparents don't know grandchildren", or vice versa, depending on your point of view), changes to a node's dependencies can't affect downstream nodes.
--
MOS_MIGRATED_REVID=114143894
|
|
|
|
|
| |
--
MOS_MIGRATED_REVID=113313675
|
|
|
|
|
|
|
| |
type-safety, we now must pass in the exception type of the callback.
--
MOS_MIGRATED_REVID=113313312
|
|
|
|
|
| |
--
MOS_MIGRATED_REVID=113197641
|
|
|
|
|
|
|
|
|
|
|
| |
EvaluationResult to return true for hasError() iff errorMap is non-empty or there is a catastrophe.
There was no good reason for the previous behavior of saying hasError even if there was a transitive recovered-from error, since callers shouldn't care. This was a latent bug that was only benign since none of the consumers of hasError were invoking Skyframe with recoverable SkyFunctions.
Also add an EvaluationResultSubject so that tests can more fluently assert things about EvaluationResult objects going forward.
--
MOS_MIGRATED_REVID=113192415
|
|
|
|
|
|
|
| |
all so that custom implementations can have custom options passed around.
--
MOS_MIGRATED_REVID=112502778
|
|
|
|
|
|
|
| |
This is a prerequisite to making some changes to PackageFunction that require handling another exception.
--
MOS_MIGRATED_REVID=112172100
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
just warn if a target turns out to not be present. This means that queries may return unexpected results. For instance, if "query" means "bazel query --order_output=no ", then here are the results of two queries:
query --universe_scope=//foo/... //foo:output_file
//foo:output_file
query --universe_scope=//foo/... deps(//foo:output_file)
WARNING: Targets not in graph [//foo:output_file generated_file]
//foo:output_file
--
MOS_MIGRATED_REVID=112163475
|
|
|
|
|
|
|
| |
This is necessary for propagating the catastrophic exception so that it is available at the top level.
--
MOS_MIGRATED_REVID=112083848
|
|
|
|
|
|
|
| |
WalkableGraphFactory interface with a hook to inform the factory when the WalkableGraph is done being used.
--
MOS_MIGRATED_REVID=112074284
|
|
|
|
|
|
|
| |
bazel server exits abruptly.
--
MOS_MIGRATED_REVID=111641619
|
|
|
|
|
|
|
| |
graph. We can compute the universe target patterns outside of skyframe, which is the only reason we need the value we were requesting. Giving up was preventing us from evaluating "..." patterns even if the "..." pattern didn't contain any cycles itself.
--
MOS_MIGRATED_REVID=111605976
|
|
|
|
|
|
|
|
|
| |
cause of a catastrophic failure (this is distinct from a crash).
Also clean up catastrophe logic in ParallelEvaluator -- the catastrophic nature of an exception is important only if the build is keep_going, and only if the exception is catastrophic can we have an exception in the first place.
--
MOS_MIGRATED_REVID=111293164
|
|
|
|
|
|
|
| |
null but the SkyFunction that called it returns non-null.
--
MOS_MIGRATED_REVID=110009359
|
|
|
|
|
|
|
| |
Reduces garbage.
--
MOS_MIGRATED_REVID=109914243
|
|
|
|
|
|
|
|
|
| |
transitively transient". Some followup changes will use this method.
Previously, ErrorInfo#isTransient was only used internally in ParallelEvaluator; I think this method was originally added to ErrorInfo solely for the sake of convenience.
--
MOS_MIGRATED_REVID=109840031
|
|
|
|
|
|
|
|
|
| |
Also, in GroupedList, short-circuit expensive group equality check
with a reference check, saving time and garbage when groups are the
same object.
--
MOS_MIGRATED_REVID=109795332
|
|
|
|
|
|
|
|
| |
Reduces the number of allocations during invalidation. Has a magnified
effect when optional support for interruptibility is turned off.
--
MOS_MIGRATED_REVID=108978068
|
|
|
|
|
|
|
| |
Reduces garbage.
--
MOS_MIGRATED_REVID=108977813
|
|
|
|
|
|
|
| |
Reduces the amount of work needed when interruptibility isn't needed.
--
MOS_MIGRATED_REVID=108611609
|
|
|
|
|
|
|
| |
Reduces garbage and wasted work
--
MOS_MIGRATED_REVID=108566164
|
|
|
|
|
|
|
| |
Reduces garbage generated during array resizing.
--
MOS_MIGRATED_REVID=108528430
|
|
|
|
|
|
|
| |
isolated from implementation details.
--
MOS_MIGRATED_REVID=108523104
|
|
|
|
|
|
|
| |
With the new-ish behavior of change pruning, where nodes transition from NEEDS_REBUILDING to REBUILDING, we need to make that transition unconditionally for dirty nodes -- being ready after unfinished deps were removed is irrelevant.
--
MOS_MIGRATED_REVID=108508979
|
|
|
|
|
| |
--
MOS_MIGRATED_REVID=108386134
|
|
|
|
|
| |
--
MOS_MIGRATED_REVID=108266475
|
|
|
|
|
|
|
| |
for the purpose of change pruning.
--
MOS_MIGRATED_REVID=108203369
|
|
|
|
|
| |
--
MOS_MIGRATED_REVID=108186573
|
|
|
|
|
| |
--
MOS_MIGRATED_REVID=108174404
|
|
|
|
|
|
|
|
|
|
|
| |
an earlier version at which the child changed but the parent did not.
Concrete scenario: Parent depends on Child. We first evaluate at version v1, Child has value A1, Parent has value B1. We then evaluate at version v2, which changes a dependency of Child. Child has value A2, and Child.getVersion() returns v2. Parent re-evaluates to B1, so is unchanged. Parent.getVersion() returns v1. Now evaluate at version v3, which also changes a dependency of Child. Child re-evaluates to A2, so Child.getVersion() returns v2. If we signal Parent with v2 and Parent only knows that it is at version v1, then Parent must unnecessarily re-evaluate. To fix this, we store an additional version in the entry -- the version at which the node was last evaluated, even if the evaluation did not result in a new value. Parent can then compare that version to its children's versions. If that version is at least as recent as their versions, it knows that the result of evaluating will be the same as it was at that last evaluated version, which is its current value.
An alternative solution might be to just signal the parent with a boolean, saying whether or not the child was changed on this evaluation. However, this would be incorrect in the scenario above, with the modification that in the second evaluation, the user just requests the value of Child -- Parent is not updated. In that case, during the third evaluation, Child would report that it was not changed during this evaluation, but we must still re-evaluate Parent since it has not yet picked up the value of Child from the earlier build.
--
MOS_MIGRATED_REVID=108163443
|
|
|
|
|
| |
--
MOS_MIGRATED_REVID=108069029
|