summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/buildtool/serve_api/serve_service/source_tree.cpp20
1 files changed, 16 insertions, 4 deletions
diff --git a/src/buildtool/serve_api/serve_service/source_tree.cpp b/src/buildtool/serve_api/serve_service/source_tree.cpp
index 0108d8d7..02007e1e 100644
--- a/src/buildtool/serve_api/serve_service/source_tree.cpp
+++ b/src/buildtool/serve_api/serve_service/source_tree.cpp
@@ -1637,13 +1637,25 @@ auto SourceTreeService::GetRemoteTree(
response->set_status(GetRemoteTreeResponse::INTERNAL_ERROR);
return ::grpc::Status::OK;
}
- if (not apis_.remote->RetrieveToPaths(
+ if (not apis_.remote->ParallelRetrieveToCas(
{Artifact::ObjectInfo{.digest = *remote_digest,
.type = ObjectType::Tree}},
- {tmp_dir->GetPath()},
- &(*apis_.local))) {
+ *apis_.local,
+ serve_config_.jobs,
+ true)) {
+ logger_->Emit(
+ LogLevel::Error,
+ "Failed to parallel retrieve tree {} from remote CAS to local CAS",
+ remote_digest->hash());
+ response->set_status(GetRemoteTreeResponse::FAILED_PRECONDITION);
+ return ::grpc::Status::OK;
+ }
+ if (not apis_.local->RetrieveToPaths(
+ {Artifact::ObjectInfo{.digest = *remote_digest,
+ .type = ObjectType::Tree}},
+ {tmp_dir->GetPath()})) {
logger_->Emit(LogLevel::Error,
- "Failed to retrieve tree {} from remote CAS",
+ "Failed to install tree {} from local CAS",
remote_digest->hash());
response->set_status(GetRemoteTreeResponse::FAILED_PRECONDITION);
return ::grpc::Status::OK;