From f30bdb53d39d62d42f70762a6ef9afb273e57c71 Mon Sep 17 00:00:00 2001 From: Oliver Reiche Date: Fri, 29 Jul 2022 14:09:54 +0200 Subject: BazelNetwork: Use bytestream for reading unknown size blobs ... otherwise actual blob size might exceed the maximum transfer size of the CAS client. Therefore, we always have to use the bytestream client if the size is unknown. --- src/buildtool/execution_api/remote/bazel/bazel_network.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/buildtool/execution_api/remote/bazel/bazel_network.cpp b/src/buildtool/execution_api/remote/bazel/bazel_network.cpp index a5574c77..bdb4f3be 100644 --- a/src/buildtool/execution_api/remote/bazel/bazel_network.cpp +++ b/src/buildtool/execution_api/remote/bazel/bazel_network.cpp @@ -191,8 +191,11 @@ auto BazelNetwork::BlobReader::Next() noexcept -> std::vector { std::vector blobs{}; while (current_ != ids_.end()) { - size += gsl::narrow(current_->size_bytes()); - if (size > kMaxBatchTransferSize) { + auto blob_size = gsl::narrow(current_->size_bytes()); + size += blob_size; + // read if size is 0 (unknown) or exceeds transfer size + if (blob_size == 0 or size > kMaxBatchTransferSize) { + // perform read of range [begin_, current_) if (begin_ == current_) { auto blob = cas_->ReadSingleBlob(instance_name_, *begin_); if (blob) { -- cgit v1.2.3