Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
1. Mark local variables const if needed;
2. Remove redundant fmt::format calls.
|
|
|
|
1. Mark local variables constant if needed;
2. Remove redundant fmt::format calls;
3. Acquire storage's lock after conversion of data.
|
|
|
|
1. Mark local variables constant if needed;
2. Remove redundant fmt::format calls;
3. Return bazel_re::Digest from resourse name parsing.
|
|
|
|
...to simplify further refactoring.
|
|
...with ArtifactDigest.
|
|
...with ArtifactDigest
|
|
...with ArtifactDigest
|
|
...with ArtifactDigest.
|
|
...with ArtifactDigest.
|
|
...and replace obvious redundant conversions to bazel_re::Digest, which were done to ensure that the digest represents a tree.
|
|
|
|
... and correctly report the error.
- If we cannot store the bytes we received, this is an internal error.
- If the bytes received have a different hash than announced, report
this user error as INVLID_ARGUMENT.
|
|
... while keeping our .clang-format file.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
...and move the storing logic to Execute directly. There is no need to pass additional parameters to the method to just perform a check inside, and after this removal there is no need to preserve a one-line method.
|
|
|
|
|
|
1. In reading remove additional buffer field and reuse the response's buffer;
2. In writing preserve the file descriptor alive.
|
|
...and use this functionality in ExecutionServer
|
|
|
|
! => not; && => and, || => or
|
|
... following the remote-execution standard that all output paths (but
none of the input paths) are relative to the working directory.
Therefore, the executor has to do the path translation. For our
implementation of the API interface
- the local API now handles cwd correctly,
- the remote API forwards cwd correctly, and
- the git API continues to report actions as not implemented.
|
|
|
|
The context is passed by not_null const pointer in order to avoid
binding to temporaries, and it or parts of it get stored by const
ref where needed.
|
|
|
|
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.
|
|
|
|
|
|
...to track changes during refactoring easier.
|
|
Use a builder pattern for creation and validation, in a manner that
allows also other authentication methods to be added in the future
besides the current TLS/SSL.
The main Auth instances are built early and then passed by not_null
const pointers, to avoid passing temporaries, replacing the previous
Auth::TLS instances passed by simple nullable const pointers. Where
needed, these passed Auth instances are also stored, by const ref.
Tests also build Auth instances as needed, either with the default
'no certification' or from the test environment arguments.
|
|
|
|
...to more easily keep track of changes during refactoring.
|
|
|
|
|
|
...instead of not_null const ptr.
|
|
|
|
|
|
The Emit method of the Logger class, when called with a string as
second argument, expects it to be a format string. It should be
considered a programming error to pass a string variable as that
argument without knowing for certain that it does not contain any
format escape character ('{', '}'); instead, one should be
conservative and use the blind format string "{}" as second
argument and pass the unknown string variable as third argument.
|
|
As we use chunking also for reducing storage, we have to consider
the overhead of block devices which is in the order of kB per file.
So our target chunk size should be at least 2 orders of magnitude
above this. This suggests to minimally aim for a chunk size of
128kB, a target size that also has the advantage the that maximal
chunk size associated with this size is 1MB which is still well
below the maximal transmission size of grpc allowing us to avoid
the streaming API.
As we're scaling everything up by a factor of 16, we also have
to increase the number of bits in the involved masks by 4. We use
this to also extend the window size by using the 2 most significant
octets. Following the advice of the paper proposing FastCDC to
spread out the ones roughly equally suggests 0x4444 as a suitable
value for the two most significant octets.
We also change the suggested extension of the remote-execution API
accordingly. As the precise parameters for FastCDC when announced
over the remote-execution APIs are still under discussion upstream,
we simplify the name to not mention the target size.
|