Age | Commit message (Collapse) | Author |
|
|
|
... instead of the plain boolean value.
|
|
...and replace it with instances created early via a builder
pattern.
|
|
|
|
Also store a const ref for usage in setting up a fresh ApiBundle
during target serve.
|
|
|
|
|
|
|
|
Now also requires guarding for bootstrapping to not bring in grpc.
|
|
As the serve endpoint acts also as a regular client to its
associated remote-execution endpoint, it should employ the same
retry strategy as the regular just client.
Also updates ReadJustServeConfig to store the retry config
arguments instead of calling the RetryConfig singleton setters
directly, thus clearly separating the reading of the arguments from
the creation of any configuration singleton/instance.
|
|
The retry_parameters.hpp header-only library defining the Retry
class now is the retry_config.hpp header-only library defining the
RetryConfig class.
|
|
|
|
As it is used by just execute only, instantiate it inside the
ExecutionServer, which reads and writes to the cache map, and pass
a const ref to OperationsServer, which only queries.
|
|
The threshold exponent cannot pass the log2 of the maximum internal
map size, of type size_t, thus it cannot be larger than 63.
Update the documentation and enforce the upper limit of this
argument during parsing of the command line.
|
|
As 'just execute' does not actually use the remote api, the
configuration instances created for it can be streamlined or moved
out of its scope.
|
|
Due to the specifics of how CLI11 library handles the --help
argument and the fact that just-mr uses its own set of exit codes,
we were correctly printing the help text, but falsely returning a
non-zero exit code as result.
This is now fixed.
|
|
...and replace it with passed instances created early via a builder
pattern.
Tests are also updated accordingly.
|
|
...wherever an ApiBundle is already being passed.
|
|
...and store it as a const ref for subsequent use wherever the apis
are already passed.
|
|
Instead of computing the shard based on the RemoteExecutionConfig
singleton, use the already computed hash stored in the passed
StorageConfig instance, which now needs to be set up separately
if bootstrapping in order to avoid unwanted includes.
Storing the backend description to CAS and corresponding audit
checks now take place in main.
|
|
...such that it will be available to the TargetCache for sharing.
Also, GC does not require remote execution information, so the
logic for this subcommand is moved earlier in main.
|
|
...by using the new DescribeBackend method instead. This ensures
that the TC shard computation is indeed consistent between local
and serve endpoint.
|
|
|
|
|
|
...and replace it with passed instances created early via a builder
pattern.
|
|
|
|
|
|
|
|
|
|
...to simplify the class and clarify the singleton pattern in
preparation for its removal.
|
|
|
|
...by making the respective Build methods const. It should be
perfectly valid for multiple Build calls to happen for the same
builder instance, so its internal state should never be invalidated
by, e.g., moving from internal fields.
|
|
...and move the related tests to artifact_description.test
|
|
...since it is used in tests only.
|
|
...since it is used in tests only. It also duplicated serialization-deserialization of ArtifactDescription.
|
|
...instead of comparing raw data.
|
|
...instead of unobvious ctors relying on overload resolution.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
...instead of dereferencing nullptr.
|
|
|
|
|
|
|
|
During multithreaded splicing, the main process can be forked (inheriting open file descriptors). In this case, the executable file saved using hardlinking becomes inaccessible. To prevent this, executables must be stored as copies made in a child process.
|
|
As the storage instance also instantiates the target cache, we need
to ensure that each such instance has at that point all the correct
remote endpoint information to ensure the target cache sharding
works as expected.
In particular, the server-side and client-side operations of just
have a slightly different setup for the remote endpoint address,
therefore they require the storage instantiation to be done
separately.
|
|
|