summaryrefslogtreecommitdiff
path: root/src/buildtool/execution_api/remote/bazel/bazel_api.cpp
diff options
context:
space:
mode:
authorMaksim Denisov <denisov.maksim@huawei.com>2024-12-06 10:08:10 +0100
committerMaksim Denisov <denisov.maksim@huawei.com>2024-12-09 13:01:58 +0100
commit540e833419b25af9122b8c942eeb9519cf7e6cfd (patch)
tree3fb43078dbece4c9c84efe76124509ccf82bb1c0 /src/buildtool/execution_api/remote/bazel/bazel_api.cpp
parenta395bf245975348fb8f5407ae1f19893090b92d0 (diff)
downloadjustbuild-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.cpp11
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;
}