Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
...since we use recursion for trees a lot, but skip this check manually.
|
|
|
|
|
|
|
|
Enable performance-enum-size check.
|
|
Enable performance-no-automatic-move check.
|
|
Despite the fact that HashFunction is a small type, it still makes sense to store it by reference to reflect the ownership. StorageConfig becomes the main holder.
Reference holders store HashFunction by const ref and aren't allowed to change it. However, they are free to return HashFunction by value since this doesn't benefit readability anyhow.
|
|
Although this change doesn't benefit performance anyhow (protobuf's mutable_*() methods allocate memory lazily), it is better to let protobuf do this on its own.
|
|
...and remove split serialization/deserialization logic.
|
|
...and remove split serialization/deserialization implementations.
|
|
...and use the qualified name ByteStreamUtils::kChunkSize
|
|
...since they were used only in tests.
|
|
|
|
- add more noexcept requirements and enforce existing
- fixing inconsistencies related to function arguments
- remove redundant static keywords
- silencing excessive lint reporting in test cases
While there, make more getters const ref.
|
|
Invalid entries, currently all upwards symlinks (pending
implementation of a better way of handling them), are now
identified and handled properly: in compatible mode on the client
side, during handling of remote response, and in native mode on
the server side during the population of the action result.
|
|
...during WithRetry, as we know that the error message of the
callable has already been appropriately logged.
|
|
|
|
As populating the containers from remote response only takes place
once, no assumptions should be made that this cannot fail (for
example if wrong or invalid entries were produced). Instead, return
error messages on failure to callers that can log accordingly.
|
|
...to determine whether splitting-splicing functionality is supported.
|
|
|
|
|
|
|
|
...and move it to the common stage.
|
|
|
|
|
|
|
|
|
|
...with ArtifactDigestFactory::HashDataAs
|
|
...from ObjectInfo and ArtifactDigest
|
|
...to simplify further refactoring.
|
|
...bypassing ArtifactDigest functionality.
|
|
...with ArtifactDigest.
|
|
...with ArtifactDigest.
|
|
Remote execution of actions is handled via long-running operations.
Here we have to be careful with the involved status codes: there
is the status code of the operation and the response contains a
faild that also happens to be a status code. The protocol states
Errors discovered during creation of the `Operation` will be
reported as gRPC Status errors, while errors that occurred while
running the action will be reported in the `status` field of
the `ExecuteResponse`
So we have to distinguish between two kinds of DEADLINE_EXCEEDED.
- If reported by the rpc, it means, we failed to obtain the status
of the ongoing action in a reasonable amount of time; here we
can do nothing but retry.
- If we obtain an answer and that answer has state DEADLINE_EXCEEDED
this means "The execution timed out."; hence we must not retry
and report the result properly to the user.
|
|
We already accept short writes in batch uploads, but when no
progress is made, we cannot simply retry, as this might lead to
an infinite loop. Instead, we give up on batching and upload each
blob one by one.
|
|
The remote execution protocol is a bit unclear about how to
deal with blob updates for which we got no response. While
some clients consider a blob update failed only if a failed
response is received, we are going extra defensive here and
also consider missing responses to be a failed blob update.
Issue a retry for the missing blobs.
|
|
|
|
|
|
|
|
! => 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.
|
|
|
|
|
|
|
|
|
|
|
|
|