diff options
Diffstat (limited to 'src/buildtool/serve_api/remote/target_client.cpp')
-rw-r--r-- | src/buildtool/serve_api/remote/target_client.cpp | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/buildtool/serve_api/remote/target_client.cpp b/src/buildtool/serve_api/remote/target_client.cpp index 8571910d..7166a604 100644 --- a/src/buildtool/serve_api/remote/target_client.cpp +++ b/src/buildtool/serve_api/remote/target_client.cpp @@ -25,7 +25,8 @@ TargetClient::TargetClient(std::string const& server, Port port) noexcept { CreateChannelWithCredentials(server, port)); } -auto TargetClient::ServeTarget(const TargetCacheKey& key) +auto TargetClient::ServeTarget(const TargetCacheKey& key, + const std::string& repo_key) -> std::optional<std::pair<TargetCacheEntry, Artifact::ObjectInfo>> { // make sure the blob containing the key is in the remote cas if (!local_api_->RetrieveToCas({key.Id()}, &*remote_api_)) { @@ -34,6 +35,16 @@ auto TargetClient::ServeTarget(const TargetCacheKey& key) key.Id().ToString()); return std::nullopt; } + // make sure the repository configuration blob is in the remote cas + if (!local_api_->RetrieveToCas( + {Artifact::ObjectInfo{.digest = ArtifactDigest{repo_key, 0, false}, + .type = ObjectType::File}}, + &*remote_api_)) { + logger_.Emit(LogLevel::Error, + "failed to retrieve to remote cas blob {}", + repo_key); + return std::nullopt; + } bazel_re::Digest key_dgst{key.Id().digest}; justbuild::just_serve::ServeTargetRequest request{}; |