From 327ea702ffcfcf7a8103da5adb2075cd6cfdc5f0 Mon Sep 17 00:00:00 2001 From: Paul Cristian Sarbu Date: Tue, 1 Jul 2025 10:48:46 +0200 Subject: serve target: Fix missing locking of Git CAS in service --- src/buildtool/serve_api/serve_service/target.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'src/buildtool/serve_api/serve_service/target.cpp') diff --git a/src/buildtool/serve_api/serve_service/target.cpp b/src/buildtool/serve_api/serve_service/target.cpp index 6df2382e..53f0ca87 100644 --- a/src/buildtool/serve_api/serve_service/target.cpp +++ b/src/buildtool/serve_api/serve_service/target.cpp @@ -679,6 +679,15 @@ auto TargetService::ServeTargetVariables( // retrieve content of target file std::optional target_file_content{std::nullopt}; bool tree_found{false}; + // Get repository lock before inspecting the root git cache + auto repo_lock = + RepositoryGarbageCollector::SharedLock(*local_context_.storage_config); + if (not repo_lock) { + auto msg = std::string("Could not acquire repo gc SharedLock"); + logger_->Emit(LogLevel::Error, msg); + return ::grpc::Status{::grpc::StatusCode::INTERNAL, msg}; + } + // try in local build root Git cache if (auto res = GetBlobContent(local_context_.storage_config->GitRoot(), root_tree, -- cgit v1.2.3