Age | Commit message (Collapse) | Author |
|
When garbage collecting the oldest generation, we expect it to be
a non-empty directory. Therefore, remove it recursively.
|
|
While reporting an origin target with action number within that
target describes an action uniquely in a way meaningful to the
user, it might not always be eay to unserstand which precise action
is currently running. For example, for a library with many source
files, we have a target generating a large number of actions and
the association of source file to action number requires detailled
knowledge of the build description. The name of the primary ouput
of that action, on the other hand immediately identifies the file
that is compiled. Therefore, report this as well.
|
|
... and use it when normalizing the origins of actions. For this
task, any well-defined linear order is sufficient. Using a native
comparision (rather than comparing the canonical serialisation)
significantly speeds up that normalisation process, as the assumption
that it would be rare that an action has more than one origin turned
out to be false. In fact, we have seeen cases where this sorting
used to take several seconds before this change, so that this change
reduced analysis time by more than a factor of 5.
|
|
The "generic" rules deliberately resolves conflicts on identical
paths in a latest-wins fashion (seeing all artifacts as later than
all runfiles) to allow an easy way to define actions. However, the
inputs stage obtained by this resolution can still contain conflicts
and those are an error. Properly detect those. Also clarify in the
documentation, that only conflicts on identical paths are resolved
in the described priority, not semantic overlap.
|
|
|
|
|
|
... and replace it with a direct call to serve.
|
|
|
|
... and replace it with a direct call to serve.
|
|
|
|
|
|
Trying to access a git object return a recoverable failure, hence
the failure to find the object in the git object database should
be logged at warning level at most. Moreover, in some cases we
should log that event at an even lower level, e.g., if we're just
checking the presence of the object in the local git cas to avoid
unnecessary network access.
|
|
... and, when asked if an artifact is available, also inspect the
git cas.
|
|
|
|
|
|
|
|
|
|
... so that tagging in the associated git root can be synchronized
with other services provided by just serve.
|
|
In the serve protocol, extend ServeTargetRequest by a flag
indicating that the client whishes the server to keep the artifact
stage as an additional root. In this way, if a computed root is
built on serve it can be used as an absent root without additional
communication overhead.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Unify logic from evaluator of precomputed roots.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
... allowing to print the unique artifact built (if any). This
allows convenient inspection of the build result of targets that
define precisely one artifact.
|
|
This is an amendment to the changes in commit 8234079, as the
underlying issue was only partially solved there. While the call to
GitRepo::InitAndOpen is in itself properly guarded, it does not
share a lock with the call to create the path to the Git cache if
it is missing.
Fix this by moving the call to the method ensuring the Git cache
initialization to after acquiring the Git cache root garbage
collector shared lock.
|
|
Similarly to just-mr, each SourceTree RPC must ensure that the Git
cache folder exists and the Git cache repository is initialized
before using it.
While there, fix missing shared locks on the Git cache root.
|
|
|
|
...instead of adding it preliminarily.
|
|
|
|
...instead of a plain hash. Hash gets computed for different storage types on the fly.
|
|
...since this is a more generic approach.
|
|
|
|
...to let it be stored as an independent instance.
|