summaryrefslogtreecommitdiff
path: root/src/buildtool/serve_api/serve_service/target.cpp
diff options
context:
space:
mode:
authorPaul Cristian Sarbu <paul.cristian.sarbu@huawei.com>2023-11-27 16:29:30 +0100
committerPaul Cristian Sarbu <paul.cristian.sarbu@huawei.com>2023-12-05 10:52:23 +0100
commit74c2e21ad5326a1cb6330af4b6e5e46aefb05fc3 (patch)
treeb75d976539e4657a86cdf954d9493582244f7625 /src/buildtool/serve_api/serve_service/target.cpp
parent6b8c9456720b95e4da10677c8a6267b6f9f6ff61 (diff)
downloadjustbuild-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.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 =