diff options
author | Maksim Denisov <denisov.maksim@huawei.com> | 2025-01-29 16:08:37 +0100 |
---|---|---|
committer | Maksim Denisov <denisov.maksim@huawei.com> | 2025-02-07 14:58:04 +0100 |
commit | f10bd16283b8856bdf7295f96a1cebc54f0350bb (patch) | |
tree | d2a1c1dc58b89b0f0afad401e93e5b71f2179886 | |
parent | c30cb3221989b60cee96287a1cb9d9e87f9ba464 (diff) | |
download | justbuild-f10bd16283b8856bdf7295f96a1cebc54f0350bb.tar.gz |
BazelNetwork: Use ArtifactDigests in IsAvailable
4 files changed, 24 insertions, 24 deletions
diff --git a/src/buildtool/execution_api/remote/TARGETS b/src/buildtool/execution_api/remote/TARGETS index 1a7a15af..b7b29d0c 100644 --- a/src/buildtool/execution_api/remote/TARGETS +++ b/src/buildtool/execution_api/remote/TARGETS @@ -96,7 +96,6 @@ , ["src/buildtool/logging", "log_level"] , ["src/buildtool/logging", "logging"] , ["src/buildtool/multithreading", "task_system"] - , ["src/utils/cpp", "back_map"] , ["src/utils/cpp", "expected"] ] } diff --git a/src/buildtool/execution_api/remote/bazel/bazel_api.cpp b/src/buildtool/execution_api/remote/bazel/bazel_api.cpp index d46c9e09..d9990f9a 100644 --- a/src/buildtool/execution_api/remote/bazel/bazel_api.cpp +++ b/src/buildtool/execution_api/remote/bazel/bazel_api.cpp @@ -46,7 +46,6 @@ #include "src/buildtool/logging/log_level.hpp" #include "src/buildtool/logging/logger.hpp" #include "src/buildtool/multithreading/task_system.hpp" -#include "src/utils/cpp/back_map.hpp" #include "src/utils/cpp/expected.hpp" namespace { @@ -545,20 +544,13 @@ auto BazelApi::CreateAction( [[nodiscard]] auto BazelApi::IsAvailable( ArtifactDigest const& digest) const noexcept -> bool { - return network_->IsAvailable(ArtifactDigestFactory::ToBazel(digest)); + return network_->IsAvailable(digest); } [[nodiscard]] auto BazelApi::GetMissingDigests( std::unordered_set<ArtifactDigest> const& digests) const noexcept -> std::unordered_set<ArtifactDigest> { - auto const back_map = BackMap<bazel_re::Digest, ArtifactDigest>::Make( - &digests, ArtifactDigestFactory::ToBazel); - if (not back_map.has_value()) { - return digests; - } - - auto const bazel_result = network_->FindMissingBlobs(back_map->GetKeys()); - return back_map->GetValues(bazel_result); + return network_->FindMissingBlobs(digests); } [[nodiscard]] auto BazelApi::SplitBlob(ArtifactDigest const& blob_digest) diff --git a/src/buildtool/execution_api/remote/bazel/bazel_network.cpp b/src/buildtool/execution_api/remote/bazel/bazel_network.cpp index dde80242..a194c2ee 100644 --- a/src/buildtool/execution_api/remote/bazel/bazel_network.cpp +++ b/src/buildtool/execution_api/remote/bazel/bazel_network.cpp @@ -43,15 +43,25 @@ BazelNetwork::BazelNetwork( exec_config_{exec_config}, hash_function_{*hash_function} {} -auto BazelNetwork::IsAvailable(bazel_re::Digest const& digest) const noexcept +auto BazelNetwork::IsAvailable(ArtifactDigest const& digest) const noexcept -> bool { - return cas_->FindMissingBlobs(instance_name_, {digest}).empty(); + return cas_ + ->FindMissingBlobs(instance_name_, + {ArtifactDigestFactory::ToBazel(digest)}) + .empty(); } auto BazelNetwork::FindMissingBlobs( - std::unordered_set<bazel_re::Digest> const& digests) const noexcept - -> std::unordered_set<bazel_re::Digest> { - return cas_->FindMissingBlobs(instance_name_, digests); + std::unordered_set<ArtifactDigest> const& digests) const noexcept + -> std::unordered_set<ArtifactDigest> { + auto const back_map = BackMap<bazel_re::Digest, ArtifactDigest>::Make( + &digests, ArtifactDigestFactory::ToBazel); + if (not back_map.has_value()) { + return digests; + } + auto missing_digests = + cas_->FindMissingBlobs(instance_name_, back_map->GetKeys()); + return back_map->GetValues(missing_digests); } auto BazelNetwork::SplitBlob(bazel_re::Digest const& blob_digest) const noexcept @@ -127,10 +137,8 @@ auto BazelNetwork::DoUploadBlobs( auto BazelNetwork::UploadBlobs(std::unordered_set<ArtifactBlob>&& blobs, bool skip_find_missing) noexcept -> bool { if (not skip_find_missing) { - auto const back_map = BackMap<bazel_re::Digest, ArtifactBlob>::Make( - &blobs, [](ArtifactBlob const& blob) { - return ArtifactDigestFactory::ToBazel(blob.digest); - }); + auto const back_map = BackMap<ArtifactDigest, ArtifactBlob>::Make( + &blobs, [](ArtifactBlob const& blob) { return blob.digest; }); if (not back_map.has_value()) { return false; } diff --git a/src/buildtool/execution_api/remote/bazel/bazel_network.hpp b/src/buildtool/execution_api/remote/bazel/bazel_network.hpp index 0d892a55..8a8eb205 100644 --- a/src/buildtool/execution_api/remote/bazel/bazel_network.hpp +++ b/src/buildtool/execution_api/remote/bazel/bazel_network.hpp @@ -23,6 +23,7 @@ #include "gsl/gsl" #include "src/buildtool/auth/authentication.hpp" +#include "src/buildtool/common/artifact_digest.hpp" #include "src/buildtool/common/bazel_types.hpp" #include "src/buildtool/common/remote/port.hpp" #include "src/buildtool/common/remote/retry_config.hpp" @@ -49,12 +50,12 @@ class BazelNetwork { /// \brief Check if digest exists in CAS /// \param[in] digest The digest to look up /// \returns True if digest exists in CAS, false otherwise - [[nodiscard]] auto IsAvailable( - bazel_re::Digest const& digest) const noexcept -> bool; + [[nodiscard]] auto IsAvailable(ArtifactDigest const& digest) const noexcept + -> bool; [[nodiscard]] auto FindMissingBlobs( - std::unordered_set<bazel_re::Digest> const& digests) const noexcept - -> std::unordered_set<bazel_re::Digest>; + std::unordered_set<ArtifactDigest> const& digests) const noexcept + -> std::unordered_set<ArtifactDigest>; [[nodiscard]] auto SplitBlob(bazel_re::Digest const& blob_digest) const noexcept -> std::optional<std::vector<bazel_re::Digest>>; |