diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/buildtool/serve_api/serve_service/target.cpp | 8 |
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 = |