diff options
author | Paul Cristian Sarbu <paul.cristian.sarbu@huawei.com> | 2024-05-24 14:26:04 +0200 |
---|---|---|
committer | Paul Cristian Sarbu <paul.cristian.sarbu@huawei.com> | 2024-06-04 13:47:11 +0200 |
commit | 7b62c8274bea6b55a36b425b670a341c8093de08 (patch) | |
tree | cafda424598ad1465aa803bacbce17685813b865 /src/buildtool/graph_traverser/graph_traverser.hpp | |
parent | 8493611969aa8d52d3a1e8fc55d1ff7486ba7c7d (diff) | |
download | justbuild-7b62c8274bea6b55a36b425b670a341c8093de08.tar.gz |
blob containers: Store and upload taking into account content size
Update logic populating containers to use the new method which
is aware of the maximum transfer limit.
Diffstat (limited to 'src/buildtool/graph_traverser/graph_traverser.hpp')
-rw-r--r-- | src/buildtool/graph_traverser/graph_traverser.hpp | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/src/buildtool/graph_traverser/graph_traverser.hpp b/src/buildtool/graph_traverser/graph_traverser.hpp index f10f96d5..194ae6d4 100644 --- a/src/buildtool/graph_traverser/graph_traverser.hpp +++ b/src/buildtool/graph_traverser/graph_traverser.hpp @@ -31,12 +31,15 @@ #include "fmt/core.h" #include "gsl/gsl" +#include "src/buildtool/common/artifact_digest.hpp" #include "src/buildtool/common/cli.hpp" #include "src/buildtool/common/remote/remote_common.hpp" #include "src/buildtool/common/repository_config.hpp" #include "src/buildtool/common/statistics.hpp" #include "src/buildtool/common/tree.hpp" #include "src/buildtool/execution_api/bazel_msg/bazel_blob_container.hpp" +#include "src/buildtool/execution_api/common/artifact_blob_container.hpp" +#include "src/buildtool/execution_api/common/common_api.hpp" #include "src/buildtool/execution_api/common/create_execution_api.hpp" #include "src/buildtool/execution_api/local/local_api.hpp" #include "src/buildtool/execution_api/remote/bazel/bazel_api.hpp" @@ -332,17 +335,20 @@ class GraphTraverser { digest.hash(), digest.size()); }); - try { - container.Emplace( - ArtifactBlob{std::move(digest), blob, /*is_exec=*/false}); - } catch (std::exception const& ex) { - Logger::Log(logger_, - LogLevel::Error, - "failed to create blob with: ", - ex.what()); + // Store and/or upload blob, taking into account the maximum + // transfer size. + if (not UpdateContainerAndUpload<ArtifactDigest>( + &container, + ArtifactBlob{std::move(digest), blob, /*is_exec=*/false}, + /*exception_is_fatal=*/true, + [&api = remote_api_](ArtifactBlobContainer&& blobs) { + return api->Upload(std::move(blobs)); + }, + logger_)) { return false; } } + // Upload remaining blobs. return remote_api_->Upload(std::move(container)); } |