Age | Commit message (Collapse) | Author |
|
|
|
The BazelNetworkReader contains an optimization for reading directories
in case the remote execution (in compatible mode) supports the GetTree
request. This is, however not the case for many remote exeuciton
services, including our own single-node execution service. So the
code is basically untested and rarely used, if at all. Moreover,
justbuild is usually used in native mode and using compatibility
mode is expected to handle tree operations less efficient.
Therefore, remove this basically dead code and decrease complexity
this way.
|
|
|
|
... instead of at debug. We expect actions to be not in cache, so the fact
that we experience cache misses is not surprising. Given the information
available at this point, a useful logging indicating (in terms meaningful
to the user) is not possible. Therefore, keep the debug-level log clean.
|
|
At various places in the build tool, we try to read files from various
CASes and caches. The absence of a file there is normal; therefore,
reduce log level in order to not overload the debug-level log.
|
|
Those are the sha256sum of the serialisation of an artifact and that
serialisation does not end up in the compatible CAS. In other words,
they do not refer to anything the user can access. Therefore, drop
this message that is not helpful.
|
|
|
|
|
|
... instead of only the file name. Having the full path into the
tree makes it more easy for the user to understand the root cause
of a conflict.
|
|
... as that failure does not necessarily abort the build.
|
|
Those operations require fetching objects through the network. The
fetch is already restricted to only the tree-objects where a merge
is necessary, leaving out unchanged trees as well as all blobs.
Still, some time may be required, especially over slow networks.
Therefore report this activity in the progress.
|
|
Now that we generate tree-overlay action identifiers that are disjoint
from identifiers of regular actions, having a joint origin map
does not cause any confusion. Concerning the numbering of subtasks,
we always see tree-overlay actions following the regular actions,
even if defined in a different order. In this way, the identifiers
for the regular actions don't change. Including tree-overlay
actions in the origin map also has the advantage that the origin
is properly reported in case of failure (e.g., non-disjointness of
the obtained trees).
|
|
While our traverser correctly keeps separate identifier spaces for
those entities, having disjoint identifiers allows easier reading
of log messages and more simple reporting of origins of actions.
|
|
... calling them as such, and not trying to report command and
environment.
|
|
- break lines at logicial point, following the layout of our other
error messages
- fix a typo
- properly quote the path of the conflict
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
In order to stay backwards compatible, the "tree_overlays" entry
in action-graph descriptions is optional.
|
|
|
|
|
|
... that, like trees, are given by their identifier.
|
|
|
|
... and only as late as possible wait for that parallel task.
Serializing a large task to JSON can take several seconds and as
building does not depend on it, we shouldn't delay the build for
with extra information.
|
|
... to avoid duplicate log entries.
|
|
... instead of blindly logging globally.
|
|
|
|
The built-in rule "tree" does not support the field "data". Hence
remove it from the list of white-listed fields so that an appropriate
warning is issued if it occurs for that rule.
|
|
The public interface of our graph traverser is typically called
once per program invocation, so there is no benefit in optimizing
across the boundaries of that call. Many calls do happen within the
internal functions of the graph traverser; but for that, the benefit
of being in the same compilation unit also happens if everything
is moved to the same cpp file. Therefore, make the graph traverser
a standard library and in this way, clean up our code basis.
|
|
Produces the mapping between correspondingly indexed entries of two
lists, one containing the keys and the other of values. The keys
list must have string entries. If the two input lists are of
different sizes, the extra elements are ignored.
|
|
Produces the list containing the results of evaluating the body on
the corresponding elementwise pairs from the two input lists. If
the input lists are of different sizes, the extra elements are
ignored.
|
|
|
|
to avoid downloading the same blobs.
|
|
...to avoid downloading the same blobs.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
...and remove LargeObject
|
|
... and keep parent directories alive while nested directories exist.
|
|
... and keep parent directories alive while nested directories exist.
|