diff options
author | Paul Cristian Sarbu <paul.cristian.sarbu@huawei.com> | 2023-11-27 16:29:30 +0100 |
---|---|---|
committer | Paul Cristian Sarbu <paul.cristian.sarbu@huawei.com> | 2023-12-05 10:52:23 +0100 |
commit | 74c2e21ad5326a1cb6330af4b6e5e46aefb05fc3 (patch) | |
tree | b75d976539e4657a86cdf954d9493582244f7625 /src/buildtool/serve_api/serve_service/target.cpp | |
parent | 6b8c9456720b95e4da10677c8a6267b6f9f6ff61 (diff) | |
download | justbuild-74c2e21ad5326a1cb6330af4b6e5e46aefb05fc3.tar.gz |
serve target: Add missing gc lock
Diffstat (limited to 'src/buildtool/serve_api/serve_service/target.cpp')
-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 = |