| Commit message (Collapse) | Author | Age |
|
|
|
|
|
|
|
|
|
|
|
|
| |
When an output file becomes a directory from one build to another, the
filesystem operations performed by several threads can race while they
prepare output directories. Without synchronization, these races can
cause failures. See the comments added in this CL for more detail.
This CL adds synchronization around these filsystem operations and gets
rid of the problematic races.
RELNOTES: None.
PiperOrigin-RevId: 161714702
|
|
|
|
|
|
|
|
|
| |
Add a single getMetadata method (matching MetadataHandler), and rewrite
everything in those terms.
This is in preparation for merging ActionInputFileCache and MetadataHandler.
PiperOrigin-RevId: 161053535
|
|
|
|
| |
PiperOrigin-RevId: 159423459
|
|
|
|
|
|
|
| |
Move everything to ActionExecutionContext, and drop Executor whereever possible.
This clarifies the API, makes it simpler to test, and simplifies the code.
PiperOrigin-RevId: 159414816
|
|
|
|
|
|
|
|
|
|
|
|
| |
The new interface mirrors ActionExecutionContext, but is restricted to exactly
the parts used right now. I did consider using ActionExecutionContext, but it
contains some parts that we don't want to make available for cache hits.
The end goal is to allow the build event stream access to artifact metadata,
in particular for TestResult and TestSummary events, which in turn requires
making artifact metadata available when the TestRunnerAction is a cache hit.
PiperOrigin-RevId: 155612573
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
*** Reason for rollback ***
Looks like it broke stuff - the presubmit bypass was added by accident.
*** Original change description ***
Add a custom interface for cache hit processing in actions
The new interface mirrors ActionExecutionContext, but is restricted to exactly
the parts used right now. I did consider using ActionExecutionContext, but it
contains some parts that we don't want to make available for cache hits.
The end goal is to allow the build event stream access to artifact metadata,
in particular for TestResult and TestSummary events, which in turn requires
making artifact metadata available when the TestRunnerAc...
***
PiperOrigin-RevId: 155493797
|
|
|
|
|
|
|
|
|
|
|
|
| |
The new interface mirrors ActionExecutionContext, but is restricted to exactly
the parts used right now. I did consider using ActionExecutionContext, but it
contains some parts that we don't want to make available for cache hits.
The end goal is to allow the build event stream access to artifact metadata,
in particular for TestResult and TestSummary events, which in turn requires
making artifact metadata available when the TestRunnerAction is a cache hit.
PiperOrigin-RevId: 155492447
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We need to lookup repositories as part of converting exec paths to artifacts,
which in turn is needed for action cache lookups. These lookups should not
cause a Skyframe exit, so we must not throw an exception here, unless the
error makes it impossible to continue. Instead, we need to leave the decision
whether to error out or not to the caller.
Note that we may unnecessarily fetch a remote repository in order to do the
action cache lookup, even if the action no longer depends on the input file,
although this should only be possible for C++ compile actions. It's possible
that there's another bug in the C++ compile action key computation that also
contributes.
This change also makes it so that the post-resolution action cache code
ignores any errors wrt. repository lookup rather than throwing. If any of the
paths could not be found, then the action cache lookup fails and we re-execute
the corresponding action, which is exactly what should happen.
Fixes #2759.
PiperOrigin-RevId: 153696243
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This relies on the explicit state transition in MetadataHandler to decide
whether the chmod call is necessary (we must never call chmod if the action
was not executed).
This is a prerequisite for #1525. If we want to use ctime for detecting file
content changes (which is more reliable than just mtime), then we must call
chmod before stat, since chmod affects ctime.
Before this change, we were caching the stat in ActionMetadataHandler, but
calling chmod after action execution in SkyframeActionExecutor, which is the
wrong order of calls. However, we must be able to stat in ActionMetadataHandler
for cases where a single action runs multiple Spawns where one spawn's output
is a subsequent spawn's input.
Remove MetadataHandler.isInjected, which is no longer used anywhere.
PiperOrigin-RevId: 152387133
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The ActionMetadataHandler does an explicit state transition on
discardOutputMetadata. Before the call, it may be used for action cache
checking, and after the call it may be updated with execution results.
Several of the methods now throw if they're used incorrectly, so I had to
refactor the control flow in ActionExecutionFunction to correctly call
discardOutputMetadata on the MetadataHandler in all cases. I discovered a
resource leak (of FileOutErr) in IncludeParseFunction while I was at it, so
I plugged that as well.
One step towards #1525.
PiperOrigin-RevId: 152363982
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
--noexperimental_enable_critical_path_profiling flags are all specified, then Bazel will delete Actions from ActionLookupValues as they are executed in order to save memory.
Because an already-run action may output an artifact that is only requested later in the build, we need to maintain a way for the artifact to look up the action. But in most cases we don't need to keep the action itself, just its output metadata.
Some actions unfortunately are needed post-execution, and so we special-case them.
Also includes dependency change with description:
Move action out of key. This keeps action references from polluting the graph -- actions are just stored in one SkyValue, instead of being present in SkyKeys.
This does mean additional memory used: we have a separate ActionLookupData object per Action executed. That may reach ~24M for million-action builds.
PiperOrigin-RevId: 151756383
|
|
|
|
|
|
|
|
| |
Still on step -0.5, let's be honest.
--
PiperOrigin-RevId: 150783638
MOS_MIGRATED_REVID=150783638
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Move all local resource acquisition to where local execution actually happens.
Don't attempt to acquire resources per action, but only for individual spawns.
This significantly simplifies the code.
The downside is that we don't account for action-level work anymore. In
general, actions should not perform any process execution themselves, but
always delegate such work to a SpawnStrategy implementation.
This change makes sure that every Spawn has local resources set in a way that
is consistent with the previous state.
However, there are two actions - Fileset and FileWrite -, which are not spawns,
and so we now don't limit their concurrent execution anymore. For Fileset, all
work is done in a custom Fileset-specific thread pool, so this shouldn't be a
problem. I'm not sure about FileWriteAction.
--
PiperOrigin-RevId: 149012600
MOS_MIGRATED_REVID=149012600
|
|
|
|
|
|
|
|
|
|
|
|
| |
updateInputs() and inputsKnown() non-overridable and removing setInputs().
This comes at the cost of adding a flag to every action instance that's not used for non-input-discovering actions, but I think that's a deal. Simpler APIs are good, mmmmkay?
Also fixed a few pre-existing issues in TestAction and ObjcCompileAction.
--
PiperOrigin-RevId: 148749734
MOS_MIGRATED_REVID=148749734
|
|
|
|
|
|
|
|
| |
Input discovery is handled somewhere else, so the same Action instance should never be put twice into buildActionMap .
--
PiperOrigin-RevId: 147132869
MOS_MIGRATED_REVID=147132869
|
|
|
|
|
|
|
|
|
|
|
| |
Bazel-created files (like log files of test runs) are internally reported
as Paths. However, this is not always the most useful representation of the
location of that artifact for a consumer of build events. Therefore, support
a mapping of paths to more useful URIs.
--
PiperOrigin-RevId: 144843525
MOS_MIGRATED_REVID=144843525
|
|
|
|
|
|
|
|
| |
possible the exception has information we've been suppressing.
--
PiperOrigin-RevId: 144405370
MOS_MIGRATED_REVID=144405370
|
|
|
|
|
|
|
|
| |
shouldn't come up very often, except in the linked bug.
--
PiperOrigin-RevId: 144367142
MOS_MIGRATED_REVID=144367142
|
|
|
|
|
|
| |
--
PiperOrigin-RevId: 141561079
MOS_MIGRATED_REVID=141561079
|
|
|
|
|
|
|
| |
now handle failed TreeArtifact output checks gracefully.
--
MOS_MIGRATED_REVID=136627086
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
...to determine which actions have to be recomputed based on changes
to the client environment. Note that this change does it the simple way
and reconsideres all actions on a changed client environment, while still
only reexecuting those, where the part that was inherited from the environment
actually did change.
--
Change-Id: Ie1116d094642165e5e959447a6fcf49d19b37d6e
Reviewed-on: https://bazel-review.googlesource.com/#/c/5431
MOS_MIGRATED_REVID=133010705
|
|
|
|
|
|
|
|
|
|
|
| |
As the execution of an action now also depends on the client environment,
make the latter part of the ActionExecutionContext, so that enough context
is provided to actually execute an action.
--
Change-Id: Ida7bf407ef0c0375728faba92494bfd47dcbaeb8
Reviewed-on: https://bazel-review.googlesource.com/#/c/5391
MOS_MIGRATED_REVID=131377490
|
|
|
|
|
|
|
| |
Collection<Artifact>
--
MOS_MIGRATED_REVID=131285541
|
|
|
|
|
|
|
| |
The only place we now don't handle InterruptedException is in the action graph created after analysis, since I'm not sure that will be around for that much longer.
--
MOS_MIGRATED_REVID=130327770
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
ActionInputFileCache:
Change getDigest() to return the underlying byte[16] owned by each
FileArtifactValue.
Remove throws clause from getInputFromDigest(); this should be an
in-memory operation, and no implementation actually throws.
PerActionFileCache:
Invert mapping from artifact to digest only if needed. Remove interner,
as it was used only for the reverse map keys, not the returned values.
This should be a significant cpu savings as eagerly constructing the
reverse maps was a noticeable hotspot.
--
MOS_MIGRATED_REVID=127972359
|
|
|
|
|
|
|
| |
they actually return a Path and not a File.
--
MOS_MIGRATED_REVID=126102820
|
|
|
|
|
|
|
|
| |
2. In PopulateTreeArtifactAction, create the parent directories for TreeFileArtifacts before executing the spawn.
3. Allow empty tree artifacts in CustomCommandLine and PopulateTreeArtifact.
--
MOS_MIGRATED_REVID=124759286
|
|
|
|
|
|
|
| |
--
Change-Id: I4c7cc2083cf0f886875b662440ed406e52dffae5
Reviewed-on: https://bazel-review.googlesource.com/#/c/3491/
MOS_MIGRATED_REVID=120804156
|
|
|
|
|
|
|
| |
Except in action execution logic (ActionExecutionFunction, SkyframeActionExecutor, etc.), switch Action interface references to either ActionAnalysisMetadata if possible or ActionExecutionMetadata.
--
MOS_MIGRATED_REVID=120723431
|
|
|
|
|
| |
--
MOS_MIGRATED_REVID=120145833
|
|
|
|
|
|
|
| |
Remove ArtifactFile, which is rendered obsolete by TreeFileArtifact.
--
MOS_MIGRATED_REVID=119789154
|
|
|
|
|
|
|
| |
execution are reported. Previously, we would not report the error unless the build was already failing and this error ended up being the root cause of the first failed top-level target.
--
MOS_MIGRATED_REVID=116767915
|
|
|
|
|
|
|
|
|
|
| |
- Remove unneeded abstract override AbstractAction#getResourceConsumption()
- Remove comments justifying returning ResourceSet.ZERO from getResourceConsumption() - instead document it once on the base method.
- Replace ResourceSet.create(0, 0, 0) with ResourceSet.ZERO.
- Make sure no one ever returns null from getResourceConsumption() and then simplify the code in SkyframeActionExecutor to not check for it.
--
MOS_MIGRATED_REVID=115739250
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
*** Reason for rollback ***
Rolling forward with the restored logic to avoid stat calls on injected Metadata.
*** Original change description ***
Automated [] rollback of commit df03e10f6552566982399b8779fe7bc7a17d75dc.
--
MOS_MIGRATED_REVID=114447944
|
|
|
|
|
| |
--
MOS_MIGRATED_REVID=114329043
|
|
|
|
|
| |
--
MOS_MIGRATED_REVID=114249806
|
|
|
|
|
| |
--
MOS_MIGRATED_REVID=114204404
|
|
|
|
|
|
|
| |
ArtifactFunction.
--
MOS_MIGRATED_REVID=114174899
|
|
|
|
|
|
|
| |
ArtifactFiles.
--
MOS_MIGRATED_REVID=114166208
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is in preparation for moving the output dumping to the Reporter for
two reasons:
- we're currently relying on there being a Reporter which locks on itself;
i.e., this code is tightly coupled with the Reporter code
- the current Blaze output is confusing; we first print an info event, then
the actual output, and then an error event - putting the Reporter in control
allows us to fix that
--
MOS_MIGRATED_REVID=112240684
|
|
|
|
|
|
|
| |
Reduces garbage.
--
MOS_MIGRATED_REVID=109914243
|
|
|
|
|
| |
--
MOS_MIGRATED_REVID=107800790
|
|
|
|
|
| |
--
MOS_MIGRATED_REVID=104219083
|
|
|
|
|
|
|
| |
Remove a lot of now-unused Reporter parameters.
--
MOS_MIGRATED_REVID=104100061
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
| |
- Label parsing can be simplified
- lib.syntax is only contains the code for Skylark and is reasonably independent from the problem domain of building things
This change is mostly only changes to imports declarations. The rest is reversing the dependency between :cmdline and :syntax and moving a tiny amount of code between Printer and FilesetEntry and the addition of SkylarkPrintableValue that I couldn't be bothered to separate out into its own change.
--
MOS_MIGRATED_REVID=103527877
|
|
|
|
|
|
|
| |
shutdown operations.
--
MOS_MIGRATED_REVID=96351438
|
|
|
|
|
|
|
| |
alternative include scanning implementations possible.
--
MOS_MIGRATED_REVID=96337469
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Currently we may do lookups of not-already-cached packages during the
execution phase for actions that discover inputs. Exceptions encountered
during this would go unhandled and result in a crash. Here we introduce
PackageRootResolutionException which wraps these exceptions and triggers
an ActionExecutionException which is cleanly handled in the exec phase.
As part of this change SkyframeActionExecutor#getArtifactRoots(...) will
fail properly on errors getting package roots.
--
MOS_MIGRATED_REVID=95578891
|
|
|
|
|
| |
--
MOS_MIGRATED_REVID=94318260
|