diff options
author | Maksim Denisov <denisov.maksim@huawei.com> | 2024-12-06 10:08:10 +0100 |
---|---|---|
committer | Maksim Denisov <denisov.maksim@huawei.com> | 2024-12-09 13:01:58 +0100 |
commit | 540e833419b25af9122b8c942eeb9519cf7e6cfd (patch) | |
tree | 3fb43078dbece4c9c84efe76124509ccf82bb1c0 /src/buildtool/execution_api/remote/bazel/bazel_api.cpp | |
parent | a395bf245975348fb8f5407ae1f19893090b92d0 (diff) | |
download | justbuild-540e833419b25af9122b8c942eeb9519cf7e6cfd.tar.gz |
Remove redundant copies from BazelApi::IsAvailable
...and ignore non-requested digests.
Diffstat (limited to 'src/buildtool/execution_api/remote/bazel/bazel_api.cpp')
-rw-r--r-- | src/buildtool/execution_api/remote/bazel/bazel_api.cpp | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/buildtool/execution_api/remote/bazel/bazel_api.cpp b/src/buildtool/execution_api/remote/bazel/bazel_api.cpp index 6aa8b938..d523fbed 100644 --- a/src/buildtool/execution_api/remote/bazel/bazel_api.cpp +++ b/src/buildtool/execution_api/remote/bazel/bazel_api.cpp @@ -604,17 +604,20 @@ auto BazelApi::CreateAction( -> std::vector<ArtifactDigest> { std::vector<bazel_re::Digest> bazel_digests; bazel_digests.reserve(digests.size()); - std::unordered_map<bazel_re::Digest, ArtifactDigest> digest_map; + std::unordered_map<bazel_re::Digest, ArtifactDigest const*> digest_map; for (auto const& digest : digests) { auto const& bazel_digest = bazel_digests.emplace_back(ArtifactDigestFactory::ToBazel(digest)); - digest_map[bazel_digest] = digest; + digest_map.insert_or_assign(bazel_digest, &digest); } - auto bazel_result = network_->IsAvailable(bazel_digests); + auto const bazel_result = network_->IsAvailable(bazel_digests); std::vector<ArtifactDigest> result; result.reserve(bazel_result.size()); for (auto const& bazel_digest : bazel_result) { - result.push_back(digest_map[bazel_digest]); + auto it = digest_map.find(bazel_digest); + if (it != digest_map.end()) { + result.push_back(*it->second); + } } return result; } |