summaryrefslogtreecommitdiff
path: root/src/buildtool/execution_api/remote/bazel
diff options
context:
space:
mode:
authorMaksim Denisov <denisov.maksim@huawei.com>2024-05-27 14:57:15 +0200
committerMaksim Denisov <denisov.maksim@huawei.com>2024-05-28 16:19:19 +0200
commitfd8ad0f561dd253bf7399ce9a4594242e918ca25 (patch)
treed72aa981cafc03d0f1aded827cb621fabe541fff /src/buildtool/execution_api/remote/bazel
parent9bdd30f307b83a3901250a51780f308f5c4a0065 (diff)
downloadjustbuild-fd8ad0f561dd253bf7399ce9a4594242e918ca25.tar.gz
Use ArtifactBlobContainer in IExecutionApi
...instead of BazelBlobContainer to not bring bazel_re::Digest to IExecutionApi.
Diffstat (limited to 'src/buildtool/execution_api/remote/bazel')
-rw-r--r--src/buildtool/execution_api/remote/bazel/bazel_api.cpp27
-rw-r--r--src/buildtool/execution_api/remote/bazel/bazel_api.hpp2
2 files changed, 23 insertions, 6 deletions
diff --git a/src/buildtool/execution_api/remote/bazel/bazel_api.cpp b/src/buildtool/execution_api/remote/bazel/bazel_api.cpp
index 33561e91..e56228eb 100644
--- a/src/buildtool/execution_api/remote/bazel/bazel_api.cpp
+++ b/src/buildtool/execution_api/remote/bazel/bazel_api.cpp
@@ -60,7 +60,7 @@ namespace {
auto reader = network->ReadBlobs(digests);
auto blobs = reader.Next();
std::size_t count{};
- BazelBlobContainer container{};
+ ArtifactBlobContainer container{};
while (not blobs.empty()) {
if (count + blobs.size() > size) {
Logger::Log(LogLevel::Warning,
@@ -73,7 +73,7 @@ namespace {
auto exec = info_map.contains(digest)
? IsExecutableObject(info_map.at(digest).type)
: false;
- container.Emplace(BazelBlob{blob.digest, blob.data, exec});
+ container.Emplace(ArtifactBlob{digest, blob.data, exec});
} catch (std::exception const& ex) {
Logger::Log(
LogLevel::Warning, "failed to emplace blob: ", ex.what());
@@ -90,7 +90,7 @@ namespace {
}
// Upload blobs to other CAS.
- return api->Upload(container, /*skip_find_missing=*/true);
+ return api->Upload(std::move(container), /*skip_find_missing=*/true);
}
[[nodiscard]] auto RetrieveToCasSplitted(
@@ -166,6 +166,21 @@ namespace {
return true;
}
+[[nodiscard]] auto ConvertToBazelBlobContainer(
+ ArtifactBlobContainer&& container) noexcept
+ -> std::optional<BazelBlobContainer> {
+ std::vector<BazelBlob> blobs;
+ try {
+ blobs.reserve(container.Size());
+ for (const auto& blob : container.Blobs()) {
+ blobs.emplace_back(blob.digest, blob.data, blob.is_exec);
+ }
+ } catch (...) {
+ return std::nullopt;
+ }
+ return BazelBlobContainer{std::move(blobs)};
+};
+
} // namespace
BazelApi::BazelApi(std::string const& instance_name,
@@ -422,9 +437,11 @@ auto BazelApi::CreateAction(
return std::nullopt;
}
-[[nodiscard]] auto BazelApi::Upload(BazelBlobContainer const& blobs,
+[[nodiscard]] auto BazelApi::Upload(ArtifactBlobContainer&& blobs,
bool skip_find_missing) noexcept -> bool {
- return network_->UploadBlobs(blobs, skip_find_missing);
+ auto bazel_blobs = ConvertToBazelBlobContainer(std::move(blobs));
+ return bazel_blobs ? network_->UploadBlobs(*bazel_blobs, skip_find_missing)
+ : false;
}
[[nodiscard]] auto BazelApi::UploadTree(
diff --git a/src/buildtool/execution_api/remote/bazel/bazel_api.hpp b/src/buildtool/execution_api/remote/bazel/bazel_api.hpp
index b96148b1..9d6f2964 100644
--- a/src/buildtool/execution_api/remote/bazel/bazel_api.hpp
+++ b/src/buildtool/execution_api/remote/bazel/bazel_api.hpp
@@ -80,7 +80,7 @@ class BazelApi final : public IExecutionApi {
std::vector<Artifact::ObjectInfo> const& artifacts_info,
gsl::not_null<IExecutionApi*> const& api) noexcept -> bool final;
- [[nodiscard]] auto Upload(BazelBlobContainer const& blobs,
+ [[nodiscard]] auto Upload(ArtifactBlobContainer&& blobs,
bool skip_find_missing) noexcept -> bool final;
[[nodiscard]] auto UploadTree(