diff options
author | Maksim Denisov <denisov.maksim@huawei.com> | 2024-05-27 16:16:26 +0200 |
---|---|---|
committer | Maksim Denisov <denisov.maksim@huawei.com> | 2024-05-28 16:19:19 +0200 |
commit | c0b46b2f4e47fc017beeae34ff555418d198e1d4 (patch) | |
tree | 6a4319a1b974fd6113fab80dd1047c1a8cb7be18 /src/buildtool/execution_api/remote/bazel | |
parent | fd8ad0f561dd253bf7399ce9a4594242e918ca25 (diff) | |
download | justbuild-c0b46b2f4e47fc017beeae34ff555418d198e1d4.tar.gz |
Use shared_ptr for data in ContentBlob
...to reduce the "price" of copying.
Diffstat (limited to 'src/buildtool/execution_api/remote/bazel')
5 files changed, 12 insertions, 12 deletions
diff --git a/src/buildtool/execution_api/remote/bazel/bazel_api.cpp b/src/buildtool/execution_api/remote/bazel/bazel_api.cpp index e56228eb..00f7308c 100644 --- a/src/buildtool/execution_api/remote/bazel/bazel_api.cpp +++ b/src/buildtool/execution_api/remote/bazel/bazel_api.cpp @@ -275,7 +275,7 @@ auto BazelApi::CreateAction( auto const& type = artifacts_info[gpos].type; if (not FileSystemManager::WriteFileAs</*kSetEpochTime=*/true, /*kSetWritable=*/true>( - blobs[pos].data, output_paths[gpos], type)) { + *blobs[pos].data, output_paths[gpos], type)) { Logger::Log(LogLevel::Warning, "staging to output path {} failed.", output_paths[gpos].string()); @@ -432,7 +432,7 @@ auto BazelApi::CreateAction( -> std::optional<std::string> { auto blobs = network_->ReadBlobs({artifact_info.digest}).Next(); if (blobs.size() == 1) { - return blobs.at(0).data; + return *blobs.at(0).data; } return std::nullopt; } @@ -465,7 +465,7 @@ auto BazelApi::CreateAction( targets->reserve(digests.size()); while (not blobs.empty()) { for (auto const& blob : blobs) { - targets->emplace_back(blob.data); + targets->emplace_back(*blob.data); } blobs = reader.Next(); } diff --git a/src/buildtool/execution_api/remote/bazel/bazel_cas_client.cpp b/src/buildtool/execution_api/remote/bazel/bazel_cas_client.cpp index 5feabb57..e5976ead 100644 --- a/src/buildtool/execution_api/remote/bazel/bazel_cas_client.cpp +++ b/src/buildtool/execution_api/remote/bazel/bazel_cas_client.cpp @@ -320,7 +320,7 @@ auto BazelCasClient::UpdateSingleBlob(std::string const& instance_name, uuid, blob.digest.hash(), blob.digest.size_bytes()), - blob.data); + *blob.data); if (!ok) { logger_.Emit(LogLevel::Error, "Failed to write {}:{}", @@ -654,7 +654,7 @@ auto BazelCasClient::CreateUpdateBlobsSingleRequest(BazelBlob const& b) noexcept bazel_re::BatchUpdateBlobsRequest_Request r{}; r.set_allocated_digest( gsl::owner<bazel_re::Digest*>{new bazel_re::Digest{b.digest}}); - r.set_data(b.data); + r.set_data(*b.data); return r; } diff --git a/src/buildtool/execution_api/remote/bazel/bazel_network.cpp b/src/buildtool/execution_api/remote/bazel/bazel_network.cpp index a537dcdc..85bb53d9 100644 --- a/src/buildtool/execution_api/remote/bazel/bazel_network.cpp +++ b/src/buildtool/execution_api/remote/bazel/bazel_network.cpp @@ -84,7 +84,7 @@ auto BazelNetwork::DoUploadBlobs(T_Iter const& first, auto it = std::stable_partition( sorted.begin(), sorted.end(), [](BazelBlob const* x) { - return x->data.size() <= kMaxBatchTransferSize; + return x->data->size() <= kMaxBatchTransferSize; }); auto digests_count = cas_->BatchUpdateBlobs(instance_name_, sorted.begin(), it); diff --git a/src/buildtool/execution_api/remote/bazel/bazel_network_reader.cpp b/src/buildtool/execution_api/remote/bazel/bazel_network_reader.cpp index 90790ef4..9c5b4b4b 100644 --- a/src/buildtool/execution_api/remote/bazel/bazel_network_reader.cpp +++ b/src/buildtool/execution_api/remote/bazel/bazel_network_reader.cpp @@ -48,7 +48,7 @@ auto BazelNetworkReader::ReadDirectory(ArtifactDigest const& digest) auto blobs = network_.ReadBlobs({digest}).Next(); if (blobs.size() == 1) { return BazelMsgFactory::MessageFromString<bazel_re::Directory>( - blobs.at(0).data); + *blobs.at(0).data); } Logger::Log( LogLevel::Debug, "Directory {} not found in CAS", digest.hash()); @@ -59,7 +59,7 @@ auto BazelNetworkReader::ReadGitTree(ArtifactDigest const& digest) const noexcept -> std::optional<GitRepo::tree_entries_t> { auto blobs = network_.ReadBlobs({digest}).Next(); if (blobs.size() == 1) { - auto const& content = blobs.at(0).data; + auto const& content = *blobs.at(0).data; auto check_symlinks = [this](std::vector<bazel_re::Digest> const& ids) { auto size = ids.size(); auto reader = network_.ReadBlobs(ids); @@ -72,7 +72,7 @@ auto BazelNetworkReader::ReadGitTree(ArtifactDigest const& digest) return false; } for (auto const& blob : blobs) { - if (not PathIsNonUpwards(blob.data)) { + if (not PathIsNonUpwards(*blob.data)) { return false; } } @@ -102,7 +102,7 @@ auto BazelNetworkReader::DumpRawTree(Artifact::ObjectInfo const& info, } try { - return std::invoke(dumper, blobs.at(0).data); + return std::invoke(dumper, *blobs.at(0).data); } catch (...) { return false; } diff --git a/src/buildtool/execution_api/remote/bazel/bazel_response.cpp b/src/buildtool/execution_api/remote/bazel/bazel_response.cpp index 9db3bb94..39196bf9 100644 --- a/src/buildtool/execution_api/remote/bazel/bazel_response.cpp +++ b/src/buildtool/execution_api/remote/bazel/bazel_response.cpp @@ -44,7 +44,7 @@ auto BazelResponse::ReadStringBlob(bazel_re::Digest const& id) noexcept id.hash()); return std::string{}; } - return blobs[0].data; + return *blobs[0].data; } auto BazelResponse::Artifacts() noexcept -> ArtifactInfos { @@ -181,7 +181,7 @@ auto BazelResponse::Populate() noexcept -> bool { for (auto const& tree_blob : tree_blobs) { try { auto tree = BazelMsgFactory::MessageFromString<bazel_re::Tree>( - tree_blob.data); + *tree_blob.data); if (not tree) { return false; } |