summaryrefslogtreecommitdiff
path: root/src/buildtool/graph_traverser/graph_traverser.hpp
diff options
context:
space:
mode:
authorPaul Cristian Sarbu <paul.cristian.sarbu@huawei.com>2024-05-24 14:26:04 +0200
committerPaul Cristian Sarbu <paul.cristian.sarbu@huawei.com>2024-06-04 13:47:11 +0200
commit7b62c8274bea6b55a36b425b670a341c8093de08 (patch)
treecafda424598ad1465aa803bacbce17685813b865 /src/buildtool/graph_traverser/graph_traverser.hpp
parent8493611969aa8d52d3a1e8fc55d1ff7486ba7c7d (diff)
downloadjustbuild-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.hpp22
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));
}