summaryrefslogtreecommitdiff
path: root/src/buildtool/execution_api
AgeCommit message (Collapse)Author
2024-06-27Use a raw pointer for passing optional IExecutionApiMaksim Denisov
...instead of std::optional<gsl::not_null<IExecutionApi const*>>
2024-06-25Introduce a type allias for an optional ptr to IExecutionApiMaksim Denisov
...and replace verbose constructions.
2024-06-25Make IExecutionApi::Ptr a shared pointer to constMaksim Denisov
...and use it in ApiBundle.
2024-06-25Pass IExecutionApi to ServerImpl, Archive by referenceMaksim Denisov
...instead of not_null const ptr.
2024-06-25Pass IExecutionApi to IExecutionApi by referenceMaksim Denisov
...instead of not_null const ptr.
2024-06-25Mark IExecutionApi's methods constantMaksim Denisov
2024-06-25Remove CreateExecutionApiMaksim Denisov
2024-06-25Pass ApiBundle to ServerImplMaksim Denisov
2024-06-25Instantiate LocalApi and BazelApi at onceMaksim Denisov
...to properly fallback to local api if needed.
2024-06-17Use c++20 standard in clang-formatMaksim Denisov
2024-06-07Move reading functionality to BazelNetworkReaderMaksim Denisov
...to enable validation of received blobs.
2024-06-07Validate all blobs received over the network.Maksim Denisov
2024-06-07Use BaselCasClient in BazelNetworkReaderMaksim Denisov
...bypassing BazelNetwork layer.
2024-06-07Mark methods constant in BazelCasClient.Maksim Denisov
2024-06-07Remove unused codeMaksim Denisov
2024-06-07Remove unused code.Maksim Denisov
IExecutionApi::UploadFile was introduced to handle adding of a temporary file to the storage. The call was redirected to LocalCAS internal methods that do the similar thing, so this virtual method can be removed.
2024-06-04blob containers: Store and upload taking into account content sizePaul Cristian Sarbu
Update logic populating containers to use the new method which is aware of the maximum transfer limit.
2024-06-04common_api: Add method to help limit memory footprint of containers...Paul Cristian Sarbu
...by proactively calling the Upload method for large blobs and containers as soon as the transfer limit is reached.
2024-06-04bazel_network: Change UploadBlobs to also accept an rvaluePaul Cristian Sarbu
This unifies the signature of all uploader functions consuming a BlobContainer type.
2024-06-04ContentBlobContainer: Add content size fieldPaul Cristian Sarbu
As the ContentBlobContainer is used to store actual content needed to be transferred, it is useful to automatically keep track of the running (bytes) size of the data being stored.
2024-05-28Use shared_ptr for data in ContentBlobMaksim Denisov
...to reduce the "price" of copying.
2024-05-28Use ArtifactBlobContainer in IExecutionApiMaksim Denisov
...instead of BazelBlobContainer to not bring bazel_re::Digest to IExecutionApi.
2024-05-28Use ArtifactBlob in BlobTree instead of BazelBlob.Maksim Denisov
2024-05-28Move blob_tree to the common stage since it is used only there.Maksim Denisov
2024-05-28Rename BlobContainer to BazelBlobContainerMaksim Denisov
2024-05-28Convert BlobContainer to a templateMaksim Denisov
...where the template parameter is the type of a digest.
2024-05-28Use TransformedRange in BlobContainerMaksim Denisov
...instead of various iterators.
2024-05-28Copy digest before emplacing in BlobContainerMaksim Denisov
...fixing potentially dangerous code (evaluation order is unspecified).
2024-05-28Move CreateBlobFromPath since it is only used in tests.Maksim Denisov
2024-05-27Fix headers in local_cas and bazel_network.Maksim Denisov
2024-05-27Use common interface for stream dumpingMaksim Denisov
...in LocalApi and BazelApi.
2024-05-27Use common interface for reading tree entries and leafsMaksim Denisov
...in LocalApi and BazelApi.
2024-05-23Execution APIs: Extract common implementation into separate libraryPaul Cristian Sarbu
This reduces the code duplication between the local and bazel APIs and improves code maintainability.
2024-05-23execution_api: Cleanup of includesPaul Cristian Sarbu
2024-05-23bazel_api: Remove extra complexity in RetrieveToCasSplittedPaul Cristian Sarbu
We can avoid doing extra work in converting between bazel digests and artifact digests by actually using the API interface.
2024-05-22Avoid memory usage duplicationMaksim Denisov
2024-05-22Remove unused codeMaksim Denisov
2024-05-21Ignore corrupted blobs during transfer while reading.Maksim Denisov
2024-05-17RepositoryConfig: Instance should not be changed once populatedPaul Cristian Sarbu
Once a RepositoryConfig instance gets populated, it must never be changed again. Therefore, all functions accepting these instances should only take them as pointers to const.
2024-05-15logging: Do not make assumptions in emit callsPaul Cristian Sarbu
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.
2024-04-29bazel_response: Report failure to read stdout/stderr blobs of an actionPaul Cristian Sarbu
2024-04-29bazel_execution_client: Replace protobuf map use with STLPaul Cristian Sarbu
2024-04-12file chunker: increase chunk sizesKlaus Aehlig
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.
2024-04-08Use properly included standard library types by defaultPaul Cristian Sarbu
2024-04-08Consistently guard all POSIX C includesPaul Cristian Sarbu
2024-04-02LargeBlobs: Use LocalCAS methods to implement split-splice logic of CASUtils.Maksim Denisov
2024-04-02Move file chunker to storage.Maksim Denisov
2024-03-26Add missing system includesPaul Cristian Sarbu
Main culprits: - std::size_t, std::nullptr_t, and NULL require <cstddef> - std::move and std::forward require <utility> - unordered maps and sets require respective includes - std::for_each and std::all_of require <algorithm>
2024-03-15Clean up more includes and targetsPaul Cristian Sarbu
Some of the more specific issues addressed: - missing log_level target/include - header-only libs wrongly marking deps as private - missing/misplaced gsl includes
2024-03-13BytestreamServer: also use the correct interface function for tmp dirsKlaus Aehlig
... so that any updates of the local-build-root layout are correctly taken into account. In particular, this change also moves the temporary directory under the emphemeral root, allowing more quick clean up. Co-authored-by: Paul Cristian Sarbu <paul.cristian.sarbu@huawei.com>