Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
...whenever it is given access to a Git repository.
The referenced storage config needs to outlive the repository
config instance.
|
|
... so that at this level, the full activity of the serve service can
be monitored.
|
|
In order to stay backwards compatible, the "tree_overlays" entry
in action-graph descriptions is optional.
|
|
When a bad request is uploaded, log this either at Info level or,
if the kind of error is unlikely by a normal just client, at Warning
level. Errors in the local log should be reserved for those cases
where something went wrong locally, like failing to acquire a log
or creating a temporary directory, etc.
|
|
The serve service can be asked to get a tree root from the designated
remote-execution endpoint. Speed this process up by going through local
CAS; in this way,
- identical blobs are fetched only once, and
- the fetching happens in parallel.
|
|
|
|
... so far, which actions where considered, and which of those
were cached.
|
|
|
|
|
|
|
|
To properly use `just serve`, both the client and the serve instance
must talk to the very same execution endpoint. Typically, both the
client and serve can reach out to the execution endpoint via the same
IP address. However, it might be possible that the client and a serve
instance know the same execution endpoint by means of differnet IP
addresses. For example, the client knows the execution endpoint
address through an _external_ IP address, while the serve instance,
deployed within the same network infrastructure, only knows the
_internal_ IP address.
This patch adds the subkey `"client address"` -- of the key
`"execution endpoint"` -- in the serve configuration file, to specify
the alternative pair `address:port` used by the client.
|
|
And ensure every user obtains HashFunction from corresponding IExecutionApi
|
|
|
|
...to remove the unnecessary link between folder name and the logic
of resolve_symlinks_map.
|
|
|
|
... 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.
|
|
|
|
|
|
|
|
|
|
|
|
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.
|
|
|
|
...since this is a more generic approach.
|
|
...to let it be stored as an independent instance.
|
|
|
|
|
|
|
|
|
|
...and use expected to replace it.
|
|
|
|
...instead of filling in a map passed from the outside.
|
|
... by using an exclusive lock. A lock of which only ever shared instances
are requested has no synchronisation effect. Fix this.
|
|
|
|
|
|
... instead of relying on those dependencies being pulled in
indirectly.
|
|
...by using the new local api that can handle any remote endpoint,
irrespective of protocol.
Also ensure all tests for the serve service are now being run both
in native and compatible modes.
|
|
When returning digests in responses, ensure they are of the type
the remote would know. Compatible digests can be found vis the
stored mappings from Git digests to bazel objects.
|
|
...instead of passing just the Git hash, which imposes the remote
to always be native.
The serve service proto file is updated accordingly.
|
|
...to be able to interrogate remotes irrespective of protocol.
When serve endpoint is active, it will provide the correct digest
with which to interrogate the remote endpoint. Otherwise, for a
compatible remote check the file mappings for the correct digest.
The serve service proto file is updated accordingly.
|
|
...besides the simple Git hash, if syncing was done. This way one
can know what digest to ask for from the remote. The serve client
also needs to now know what hash function the remote expects.
The serve service proto file is updated accordingly.
|
|
|
|
In just-mr: to instantiate the new Git api instance, both storage
configs, as well as the compatible storage, need to be passed to
the maps. While there, use more explicit naming schemes for the
storage and CAS instances used.
In serve: also acquire gc locks for the local storages when needed
to instantiate the new Git api, which now has access to the CAS.
In all these instances we also pass, as needed, the local api, which
currently still operates only in native mode. This makes no
difference currently, but will ensure less changes needed when the
future compatible-aware local api will be used instead.
|