summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/buildtool/serve_api/serve_service/target.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/buildtool/serve_api/serve_service/target.cpp b/src/buildtool/serve_api/serve_service/target.cpp
index 000de1c4..0b33f583 100644
--- a/src/buildtool/serve_api/serve_service/target.cpp
+++ b/src/buildtool/serve_api/serve_service/target.cpp
@@ -51,6 +51,14 @@ auto TargetService::ServeTarget(
auto const& target_cache_key_digest =
ArtifactDigest{request->target_cache_key_id()};
+ // acquire lock for CAS
+ auto lock = GarbageCollector::SharedLock();
+ if (!lock) {
+ auto error_msg = fmt::format("Could not acquire gc SharedLock");
+ logger_->Emit(LogLevel::Error, error_msg);
+ return ::grpc::Status{::grpc::StatusCode::INTERNAL, error_msg};
+ }
+
auto const& tc = Storage::Instance().TargetCache().WithShard(
ArtifactDigest{request->execution_backend_description_id()}.hash());
auto const& tc_key =