diff options
Diffstat (limited to 'src/buildtool/execution_api')
12 files changed, 26 insertions, 30 deletions
diff --git a/src/buildtool/execution_api/bazel_msg/bazel_blob_container.hpp b/src/buildtool/execution_api/bazel_msg/bazel_blob_container.hpp index 9ac738d6..c46b1399 100644 --- a/src/buildtool/execution_api/bazel_msg/bazel_blob_container.hpp +++ b/src/buildtool/execution_api/bazel_msg/bazel_blob_container.hpp @@ -15,12 +15,9 @@ #ifndef INCLUDED_SRC_BUILDTOOL_EXECUTION_API_BAZEL_MSG_BAZEL_BLOB_CONTAINER_HPP #define INCLUDED_SRC_BUILDTOOL_EXECUTION_API_BAZEL_MSG_BAZEL_BLOB_CONTAINER_HPP -#include <unordered_set> - #include "src/buildtool/common/bazel_types.hpp" #include "src/buildtool/execution_api/common/content_blob_container.hpp" using BazelBlob = ContentBlob<bazel_re::Digest>; -using BazelBlobContainer = std::unordered_set<BazelBlob>; #endif // INCLUDED_SRC_BUILDTOOL_EXECUTION_API_BAZEL_MSG_BAZEL_BLOB_CONTAINER_HPP diff --git a/src/buildtool/execution_api/common/artifact_blob_container.hpp b/src/buildtool/execution_api/common/artifact_blob_container.hpp index 76b0692e..7aea21ab 100644 --- a/src/buildtool/execution_api/common/artifact_blob_container.hpp +++ b/src/buildtool/execution_api/common/artifact_blob_container.hpp @@ -15,12 +15,9 @@ #ifndef INCLUDED_SRC_BUILDTOOL_EXECUTION_API_COMMON_ARTIFACT_BLOB_CONTAINER_HPP #define INCLUDED_SRC_BUILDTOOL_EXECUTION_API_COMMON_ARTIFACT_BLOB_CONTAINER_HPP -#include <unordered_set> - #include "src/buildtool/common/artifact_digest.hpp" #include "src/buildtool/execution_api/common/content_blob_container.hpp" using ArtifactBlob = ContentBlob<ArtifactDigest>; -using ArtifactBlobContainer = std::unordered_set<ArtifactBlob>; #endif // INCLUDED_SRC_BUILDTOOL_EXECUTION_API_COMMON_ARTIFACT_BLOB_CONTAINER_HPP diff --git a/src/buildtool/execution_api/common/common_api.cpp b/src/buildtool/execution_api/common/common_api.cpp index 41f71a07..8bd8f0e0 100644 --- a/src/buildtool/execution_api/common/common_api.cpp +++ b/src/buildtool/execution_api/common/common_api.cpp @@ -110,7 +110,7 @@ auto CommonUploadBlobTree(BlobTreePtr const& blob_tree, } // Process missing blobs. - ArtifactBlobContainer container; + std::unordered_set<ArtifactBlob> container; for (auto const& digest : missing_blobs_info->digests) { if (auto it = missing_blobs_info->back_map.find(digest); it != missing_blobs_info->back_map.end()) { @@ -127,7 +127,7 @@ auto CommonUploadBlobTree(BlobTreePtr const& blob_tree, &container, node->Blob(), /*exception_is_fatal=*/false, - [&api](ArtifactBlobContainer&& blobs) -> bool { + [&api](std::unordered_set<ArtifactBlob>&& blobs) -> bool { return api.Upload(std::move(blobs), /*skip_find_missing=*/true); })) { @@ -144,7 +144,7 @@ auto CommonUploadTreeCompatible( DirectoryTreePtr const& build_root, BazelMsgFactory::LinkDigestResolveFunc const& resolve_links) noexcept -> std::optional<ArtifactDigest> { - ArtifactBlobContainer blobs{}; + std::unordered_set<ArtifactBlob> blobs{}; // Store and upload blobs, taking into account the maximum transfer size. auto digest = BazelMsgFactory::CreateDirectoryDigestFromTree( build_root, resolve_links, [&blobs, &api](ArtifactBlob&& blob) { @@ -152,7 +152,7 @@ auto CommonUploadTreeCompatible( &blobs, std::move(blob), /*exception_is_fatal=*/false, - [&api](ArtifactBlobContainer&& container) -> bool { + [&api](std::unordered_set<ArtifactBlob>&& container) -> bool { return api.Upload(std::move(container), /*skip_find_missing=*/false); }); @@ -193,7 +193,7 @@ auto CommonUploadTreeNative(IExecutionApi const& api, "failed to upload blob tree for build root."); return std::nullopt; } - if (not api.Upload(ArtifactBlobContainer{{tree_blob}}, + if (not api.Upload({tree_blob}, /*skip_find_missing=*/true)) { Logger::Log(LogLevel::Debug, "failed to upload tree blob for build root."); diff --git a/src/buildtool/execution_api/common/execution_api.hpp b/src/buildtool/execution_api/common/execution_api.hpp index f0ea0e4e..1d4f0d5d 100644 --- a/src/buildtool/execution_api/common/execution_api.hpp +++ b/src/buildtool/execution_api/common/execution_api.hpp @@ -119,7 +119,7 @@ class IExecutionApi { /// \param skip_find_missing Skip finding missing blobs, just upload all. /// NOLINTNEXTLINE(google-default-arguments) [[nodiscard]] virtual auto Upload( - ArtifactBlobContainer&& blobs, + std::unordered_set<ArtifactBlob>&& blobs, bool skip_find_missing = false) const noexcept -> bool = 0; [[nodiscard]] virtual auto UploadTree( diff --git a/src/buildtool/execution_api/git/git_api.hpp b/src/buildtool/execution_api/git/git_api.hpp index 5defc50a..55bdaabe 100644 --- a/src/buildtool/execution_api/git/git_api.hpp +++ b/src/buildtool/execution_api/git/git_api.hpp @@ -214,7 +214,7 @@ class GitApi final : public IExecutionApi { // Collect blobs of missing artifacts from local CAS. Trees are // processed recursively before any blob is uploaded. - ArtifactBlobContainer container{}; + std::unordered_set<ArtifactBlob> container; for (auto const& dgst : missing_artifacts_info->digests) { auto const& info = missing_artifacts_info->back_map[dgst]; std::optional<std::string> content; @@ -225,7 +225,7 @@ class GitApi final : public IExecutionApi { if (not tree) { return false; } - ArtifactBlobContainer tree_deps_only_blobs{}; + std::unordered_set<ArtifactBlob> tree_deps_only_blobs; for (auto const& [path, entry] : *tree) { if (entry->IsTree()) { auto digest = ToArtifactDigest(*entry); @@ -254,7 +254,8 @@ class GitApi final : public IExecutionApi { *entry_content, IsExecutableObject(entry->Type())}, /*exception_is_fatal=*/true, - [&api](ArtifactBlobContainer&& blobs) -> bool { + [&api](std::unordered_set<ArtifactBlob>&& blobs) + -> bool { return api.Upload(std::move(blobs)); })) { return false; @@ -288,7 +289,7 @@ class GitApi final : public IExecutionApi { std::move(*content), IsExecutableObject(info.type)}, /*exception_is_fatal=*/true, - [&api](ArtifactBlobContainer&& blobs) { + [&api](std::unordered_set<ArtifactBlob>&& blobs) { return api.Upload(std::move(blobs), /*skip_find_missing=*/true); })) { @@ -307,7 +308,7 @@ class GitApi final : public IExecutionApi { } /// NOLINTNEXTLINE(google-default-arguments) - [[nodiscard]] auto Upload(ArtifactBlobContainer&& /*blobs*/, + [[nodiscard]] auto Upload(std::unordered_set<ArtifactBlob>&& /*blobs*/, bool /*skip_find_missing*/ = false) const noexcept -> bool override { // Upload to git cas not supported diff --git a/src/buildtool/execution_api/local/local_api.hpp b/src/buildtool/execution_api/local/local_api.hpp index 07bef457..c8877c52 100644 --- a/src/buildtool/execution_api/local/local_api.hpp +++ b/src/buildtool/execution_api/local/local_api.hpp @@ -164,7 +164,7 @@ class LocalApi final : public IExecutionApi { // Collect blobs of missing artifacts from local CAS. Trees are // processed recursively before any blob is uploaded. - ArtifactBlobContainer container{}; + std::unordered_set<ArtifactBlob> container; for (auto const& dgst : missing_artifacts_info->digests) { auto const& info = missing_artifacts_info->back_map[dgst]; // Recursively process trees. @@ -212,7 +212,7 @@ class LocalApi final : public IExecutionApi { *content, IsExecutableObject(info.type)}, /*exception_is_fatal=*/true, - [&api](ArtifactBlobContainer&& blobs) { + [&api](std::unordered_set<ArtifactBlob>&& blobs) { return api.Upload(std::move(blobs), /*skip_find_missing=*/true); })) { @@ -246,7 +246,7 @@ class LocalApi final : public IExecutionApi { return content; } - [[nodiscard]] auto Upload(ArtifactBlobContainer&& blobs, + [[nodiscard]] auto Upload(std::unordered_set<ArtifactBlob>&& blobs, bool /*skip_find_missing*/) const noexcept -> bool final { return std::all_of( diff --git a/src/buildtool/execution_api/remote/bazel/bazel_api.cpp b/src/buildtool/execution_api/remote/bazel/bazel_api.cpp index 9c3de203..0bfacf3f 100644 --- a/src/buildtool/execution_api/remote/bazel/bazel_api.cpp +++ b/src/buildtool/execution_api/remote/bazel/bazel_api.cpp @@ -63,7 +63,7 @@ namespace { auto size = digests.size(); auto reader = network->CreateReader(); std::size_t count{}; - ArtifactBlobContainer container{}; + std::unordered_set<ArtifactBlob> container{}; for (auto blobs : reader.ReadIncrementally(digests)) { if (count + blobs.size() > size) { Logger::Log(LogLevel::Warning, @@ -80,7 +80,7 @@ namespace { &container, std::move(blob), /*exception_is_fatal=*/true, - [&api](ArtifactBlobContainer&& blobs) { + [&api](std::unordered_set<ArtifactBlob>&& blobs) { return api.Upload(std::move(blobs), /*skip_find_missing=*/true); })) { @@ -139,7 +139,7 @@ namespace { } [[nodiscard]] auto ConvertToBazelBlobContainer( - ArtifactBlobContainer&& container) noexcept + std::unordered_set<ArtifactBlob>&& container) noexcept -> std::optional<std::unordered_set<BazelBlob>> { std::unordered_set<BazelBlob> blobs; try { @@ -526,7 +526,7 @@ auto BazelApi::CreateAction( return std::nullopt; } -[[nodiscard]] auto BazelApi::Upload(ArtifactBlobContainer&& blobs, +[[nodiscard]] auto BazelApi::Upload(std::unordered_set<ArtifactBlob>&& blobs, bool skip_find_missing) const noexcept -> bool { auto bazel_blobs = ConvertToBazelBlobContainer(std::move(blobs)); diff --git a/src/buildtool/execution_api/remote/bazel/bazel_api.hpp b/src/buildtool/execution_api/remote/bazel/bazel_api.hpp index 22680aac..ae7c2e57 100644 --- a/src/buildtool/execution_api/remote/bazel/bazel_api.hpp +++ b/src/buildtool/execution_api/remote/bazel/bazel_api.hpp @@ -91,7 +91,7 @@ class BazelApi final : public IExecutionApi { std::vector<Artifact::ObjectInfo> const& artifacts_info, IExecutionApi const& api) const noexcept -> bool final; - [[nodiscard]] auto Upload(ArtifactBlobContainer&& blobs, + [[nodiscard]] auto Upload(std::unordered_set<ArtifactBlob>&& blobs, bool skip_find_missing) const noexcept -> bool final; diff --git a/src/buildtool/execution_api/remote/bazel/bazel_response.cpp b/src/buildtool/execution_api/remote/bazel/bazel_response.cpp index 3aaecb88..2ea2ce1b 100644 --- a/src/buildtool/execution_api/remote/bazel/bazel_response.cpp +++ b/src/buildtool/execution_api/remote/bazel/bazel_response.cpp @@ -20,6 +20,7 @@ #include <filesystem> #include <functional> #include <iterator> +#include <unordered_set> #include <vector> #include "fmt/core.h" @@ -275,11 +276,11 @@ auto BazelResponse::Populate() noexcept -> std::optional<std::string> { auto BazelResponse::UploadTreeMessageDirectories( bazel_re::Tree const& tree) const -> expected<ArtifactDigest, std::string> { auto const upload_callback = - [&network = *network_](BazelBlobContainer&& blobs) -> bool { + [&network = *network_](std::unordered_set<BazelBlob>&& blobs) -> bool { return network.UploadBlobs(std::move(blobs)); }; auto const hash_function = network_->GetHashFunction(); - BazelBlobContainer dir_blobs{}; + std::unordered_set<BazelBlob> dir_blobs{}; auto rootdir_blob = ProcessDirectoryMessage(hash_function, tree.root()); if (not rootdir_blob) { diff --git a/src/buildtool/execution_api/serve/mr_git_api.hpp b/src/buildtool/execution_api/serve/mr_git_api.hpp index dbcedb61..e66c475f 100644 --- a/src/buildtool/execution_api/serve/mr_git_api.hpp +++ b/src/buildtool/execution_api/serve/mr_git_api.hpp @@ -100,7 +100,7 @@ class MRGitApi final : public IExecutionApi { /// \brief Not supported. // NOLINTNEXTLINE(google-default-arguments) - [[nodiscard]] auto Upload(ArtifactBlobContainer&& /*blobs*/, + [[nodiscard]] auto Upload(std::unordered_set<ArtifactBlob>&& /*blobs*/, bool /*skip_find_missing*/ = false) const noexcept -> bool final { // Upload not suppoorted. diff --git a/src/buildtool/execution_api/serve/mr_local_api.cpp b/src/buildtool/execution_api/serve/mr_local_api.cpp index 0e2f61e1..d9364a4e 100644 --- a/src/buildtool/execution_api/serve/mr_local_api.cpp +++ b/src/buildtool/execution_api/serve/mr_local_api.cpp @@ -95,7 +95,7 @@ auto MRLocalApi::RetrieveToCas( } // NOLINTNEXTLINE(google-default-arguments) -auto MRLocalApi::Upload(ArtifactBlobContainer&& blobs, +auto MRLocalApi::Upload(std::unordered_set<ArtifactBlob>&& blobs, bool skip_find_missing) const noexcept -> bool { // in native mode, dispatch to native local api if (compat_local_api_ == nullptr) { diff --git a/src/buildtool/execution_api/serve/mr_local_api.hpp b/src/buildtool/execution_api/serve/mr_local_api.hpp index a4f6e0b1..26600772 100644 --- a/src/buildtool/execution_api/serve/mr_local_api.hpp +++ b/src/buildtool/execution_api/serve/mr_local_api.hpp @@ -103,7 +103,7 @@ class MRLocalApi final : public IExecutionApi { /// \note Caller is responsible for passing vectors with artifacts of the /// same digest type. // NOLINTNEXTLINE(google-default-arguments) - [[nodiscard]] auto Upload(ArtifactBlobContainer&& blobs, + [[nodiscard]] auto Upload(std::unordered_set<ArtifactBlob>&& blobs, bool skip_find_missing = false) const noexcept -> bool final; |