summaryrefslogtreecommitdiff
path: root/src/buildtool/serve_api/remote/target_client.cpp
diff options
context:
space:
mode:
authorPaul Cristian Sarbu <paul.cristian.sarbu@huawei.com>2023-11-30 12:26:10 +0100
committerPaul Cristian Sarbu <paul.cristian.sarbu@huawei.com>2023-12-05 10:52:23 +0100
commitbe353baa567da5de46b257a4f73b48dc301aacf0 (patch)
treeeba44501f3e3087b04e6ecc0f5eb5fb0204f8d31 /src/buildtool/serve_api/remote/target_client.cpp
parentb5bb39846e3743741339037a72e569fac1676011 (diff)
downloadjustbuild-be353baa567da5de46b257a4f73b48dc301aacf0.tar.gz
serve target client: Ensure repository key blob is also in remote CAS
Diffstat (limited to 'src/buildtool/serve_api/remote/target_client.cpp')
-rw-r--r--src/buildtool/serve_api/remote/target_client.cpp13
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{};