diff options
author | Maksim Denisov <denisov.maksim@huawei.com> | 2025-02-13 12:05:06 +0100 |
---|---|---|
committer | Maksim Denisov <denisov.maksim@huawei.com> | 2025-02-27 09:03:30 +0100 |
commit | 867b2f89ad37b39059334377cdf3b02587cc6ec6 (patch) | |
tree | 87a2295e49575891e6e3323e5a6bc221a517ba35 /src | |
parent | 323844f04d09332866dd78096c3e7f2bf7e23db4 (diff) | |
download | justbuild-867b2f89ad37b39059334377cdf3b02587cc6ec6.tar.gz |
BazelCasClient: Support request creation failure in InitRequest.
Diffstat (limited to 'src')
-rw-r--r-- | src/buildtool/execution_api/remote/bazel/bazel_cas_client.cpp | 11 |
1 files changed, 8 insertions, 3 deletions
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 3cd9d4a8..ed9a00a5 100644 --- a/src/buildtool/execution_api/remote/bazel/bazel_cas_client.cpp +++ b/src/buildtool/execution_api/remote/bazel/bazel_cas_client.cpp @@ -62,15 +62,20 @@ template <typename TRequest, std::nullopt) -> TIterator { std::size_t content_size = 0; for (auto it = begin; it != end; ++it) { - auto to_merge = std::invoke(request_creator, *it); - if (request->ByteSizeLong() + to_merge.ByteSizeLong() > message_limit) { + std::optional<TRequest> to_merge = std::invoke(request_creator, *it); + if (not to_merge.has_value()) { + return it; + } + + if (request->ByteSizeLong() + to_merge->ByteSizeLong() > + message_limit) { return it; } if (content_limit.has_value() and content_size + GetContentSize(*it) > *content_limit) { return it; } - request->MergeFrom(to_merge); + request->MergeFrom(*std::move(to_merge)); content_size += GetContentSize(*it); } return end; |