| Commit message (Collapse) | Author | Age |
|
|
|
|
|
|
| |
helpers to enforce concurrency synchronization points and determinism even if they are not using an InMemoryGraph-backed evaluator.
--
MOS_MIGRATED_REVID=121977783
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
| |
--
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
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
| |
instead.
--
MOS_MIGRATED_REVID=107480889
|
|
|
|
|
| |
--
MOS_MIGRATED_REVID=106410378
|
|
|
|
|
| |
--
MOS_MIGRATED_REVID=106389517
|
|
|
|
|
|
|
|
| |
Refactors SkyFunction map creation into the tester from tests.
Encapsulates modifiedValues better.
--
MOS_MIGRATED_REVID=105982046
|
|
|
|
|
| |
--
MOS_MIGRATED_REVID=105312124
|
|
|
|
|
|
|
| |
anyway. Also batch retrievals of children when building events.
--
MOS_MIGRATED_REVID=105174435
|
|
|
|
|
|
|
|
|
|
|
| |
The headers were modified with
`find . -type f -exec 'sed' '-Ei' 's|Copyright 201([45]) Google|Copyright 201\1 The Bazel Authors|' '{}' ';'`
And manual edit for not Google owned copyright. Because of the nature of ijar, I did not modified the header of file owned by Alan Donovan.
The list of authors were extracted from the git log. It is missing older Google contributors that can be added on-demand.
--
MOS_MIGRATED_REVID=103938715
|
|
|
|
|
| |
--
MOS_MIGRATED_REVID=102835622
|
|
|
|
|
|
|
|
|
| |
to interrupt evaluation in constant time.
Some ParallelEvaluator tests that implicitly relied on cleaning happening before the next evaluation were moved into MemoizingEvaluatorTest as a result.
--
MOS_MIGRATED_REVID=102696653
|
|
|
|
|
|
|
| |
NotifyingInMemoryGraph in tests.
--
MOS_MIGRATED_REVID=102616906
|
|
|
|
|
|
|
| |
SkyFunction#compute calls.
--
MOS_MIGRATED_REVID=102268773
|
|
|
|
|
|
|
| |
method wasn't guaranteed to catch all bugs. Also convert to a singleton since there's no reason to have multiple instances.
--
MOS_MIGRATED_REVID=102158719
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The EvaluationProgressReceiver#evaluated method took a SkyValue,
but that parameter was only used by some of its implementations,
and only under some conditions.
Outside of tests, the main users are SkyframeBuildView's
ConfiguredTargetValueInvalidationReceiver and SkyframeBuilder's
ExecutionProgressReceiver.
The former builds up a set of built ConfiguredTarget keys when the
SkyValue is non-null and the EvaluationState is BUILT, and so its
nullity check can live behind those two conditions.
The latter cares about builting up a set of ConfiguredTargets, and
raising events on the eventBus when a TARGET_COMPLETION or
ASPECT_COMPLETION value is evaluated and is non-null. The extraction
of these values can live behind the conditions that check the type of
the SkyKey.
By making the SkyValue parameter lazy, this change enforces that it's
only accessed under these conditions.
This CL introduces a semantic change that should be small in effect.
The SkyframeBuildView keeps track of a set, dirtiedConfiguredTargetKeys,
and ConfiguredTarget keys evaluated as CLEAN were removed from it if
they had a non-null value. With this change, ConfiguredTarget keys
evaluated as CLEAN get removed regardless of whether their values are
null or non-null. The set is used to determine whether artifact conflict
search has to be rerun, and the extra removals that result from this CL
could cause fewer artifact conflict searches to run, but the only
affected searches would be those that were caused by dirtied configured
target values in error all of which were subsequently marked as clean,
which is probably rare.
--
MOS_MIGRATED_REVID=101144655
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The primary user of invalidation tracking is the SkyframeBuildView,
which monitored which ConfiguredTargetValues were invalidated. It
did that so the SkyframeExecutor could limit its search for artifact
conflicts to when the set of configured targets in the build changed.
For the newly introduced set of dirtied keys,
"dirtiedConfiguredTargetKeys" in SkyframeBuildView, to be as useful as
the "dirtyConfiguredTargets" set it replaced, the
ConfiguredTargetValueInvalidationReceiver must only remove a key from
the set if it was found to be clean when it was re-evaluated. If it
was rebuilt, then the key must stay in the set, to represent that the
set of configured target values has truly changed.
This CL introduces a semantic change that hopefully has a small effect,
if any. Previously, the informInvalidationReceiver method in
InvalidatingNodeVisitor only informed the invalidationReceiver when a
non-null value was invalidated. (This is usually, but not always,
equivalent to a non-error value. The uncommon exception is that in
keep-going builds, some nodes with errors may also have values, and
the invalidator would inform the receiver when such a node was
invalidated.) Now, the receiver is informed that a node is invalidated
regardless of whether its value is null. Because the receiver uses this
information to determine whether artifact conflict search has to be
rerun, and that search is expensive, it's possible this change will
negatively impact performance. However, the only way an extra search
could be invoked is if the invalidated configured target nodes are
all in error. That seems like it would happen rarely, if at all.
Further cleanup of unused SkyValues returned by markDirty to come in
a subsequent CL.
--
MOS_MIGRATED_REVID=100304744
|
|
|
|
|
| |
--
MOS_MIGRATED_REVID=98914195
|
|
|
|
|
|
|
| |
ParallelEvaluator, to allow users to customize which events they want to store.
--
MOS_MIGRATED_REVID=98299604
|
|
|
|
|
|
|
|
|
| |
Removing since we don't appear to need it. Replaced SkyFunctionName.computed
with create to simplify changing everything. Moved all constructors using new
to use create for consistency. Chose create over new since it was less changes.
--
MOS_MIGRATED_REVID=96914199
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Rarely, the raceConditionWithNoKeepGoingErrors_InflightError unit test
would timeout because the "errorKey" node's error caused
preventNewEvaluations to be called before the otherKey node started
evaluation. The "otherKey" node's function decrements a CountdownLatch
that the test waits on.
Usually both nodes' functions would start evaluating before
preventNewEvaluations was called, but this wasn't guaranteed.
This change makes the execution of the unit test deterministic. Both
nodes will begin evaluation before either finishes. The "otherErrorKey"
node will wait for "errorKey" to commit before trying to get its value.
The "otherErrorKey" compute function will get called exactly once
because its dependency on "errorKey" will not be registered because
"errorKey" errored first and in nokeep_going mode only the first
erroring node's dependencies are registered.
--
MOS_MIGRATED_REVID=87657504
|
|
|
|
|
| |
--
MOS_MIGRATED_REVID=86780976
|
|
|
|
|
| |
--
MOS_MIGRATED_REVID=86478884
|
|
--
MOE_MIGRATED_REVID=85702957
|