summaryrefslogtreecommitdiff
path: root/src/buildtool/execution_api/execution_service
diff options
context:
space:
mode:
authorAlberto Sartori <alberto.sartori@huawei.com>2023-07-13 13:20:59 +0200
committerKlaus Aehlig <klaus.aehlig@huawei.com>2023-07-13 17:21:10 +0200
commit771cf0eb75a8f910c9060599a188c1e770ecede0 (patch)
tree96503bfaf1d3319aa4b6575304331b9584bd1bb7 /src/buildtool/execution_api/execution_service
parent67d6d25bde37c0a41f974ef3832cdfc73e4e9847 (diff)
downloadjustbuild-771cf0eb75a8f910c9060599a188c1e770ecede0.tar.gz
bytestream_server: store temporary files under the local-buil-root
The bytestream server implementation (deployed by just execute) now stores the temporary files under $local_build_root/protocol-depenedent/generation-0 so that they can be garbage collected if "just exectue" is terminated before they are cleaned up. (cherry picked from ba28beba51ff7d495e5165471b96f7496bf585c2)
Diffstat (limited to 'src/buildtool/execution_api/execution_service')
-rw-r--r--src/buildtool/execution_api/execution_service/bytestream_server.cpp20
1 files changed, 11 insertions, 9 deletions
diff --git a/src/buildtool/execution_api/execution_service/bytestream_server.cpp b/src/buildtool/execution_api/execution_service/bytestream_server.cpp
index 234c4adc..b450c697 100644
--- a/src/buildtool/execution_api/execution_service/bytestream_server.cpp
+++ b/src/buildtool/execution_api/execution_service/bytestream_server.cpp
@@ -113,7 +113,14 @@ auto BytestreamServiceImpl::Write(
*hash,
request.write_offset(),
request.finish_write());
- auto tmp_dir = TmpDir::Create("execution-service");
+ auto lock = GarbageCollector::SharedLock();
+ if (!lock) {
+ auto str = fmt::format("Could not acquire SharedLock");
+ logger_.Emit(LogLevel::Error, str);
+ return grpc::Status{grpc::StatusCode::INTERNAL, str};
+ }
+ auto tmp_dir = TmpDir::Create(StorageConfig::GenerationCacheRoot(0) /
+ "execution-service");
if (!tmp_dir) {
return ::grpc::Status{::grpc::StatusCode::INTERNAL,
"could not create TmpDir"};
@@ -129,21 +136,16 @@ auto BytestreamServiceImpl::Write(
of.write(request.data().data(),
static_cast<std::streamsize>(request.data().size()));
}
- auto lock = GarbageCollector::SharedLock();
- if (!lock) {
- auto str = fmt::format("Could not acquire SharedLock");
- logger_.Emit(LogLevel::Error, str);
- return grpc::Status{grpc::StatusCode::INTERNAL, str};
- }
if (NativeSupport::IsTree(*hash)) {
- if (not storage_->CAS().StoreTree(tmp)) {
+ if (not storage_->CAS().StoreTree</*kOwner=*/true>(tmp)) {
auto str = fmt::format("could not store tree {}", *hash);
logger_.Emit(LogLevel::Error, str);
return ::grpc::Status{::grpc::StatusCode::INVALID_ARGUMENT, str};
}
}
else {
- if (not storage_->CAS().StoreBlob(tmp, /*is_executable=*/false)) {
+ if (not storage_->CAS().StoreBlob</*kOwner=*/true>(
+ tmp, /*is_executable=*/false)) {
auto str = fmt::format("could not store blob {}", *hash);
logger_.Emit(LogLevel::Error, str);
return ::grpc::Status{::grpc::StatusCode::INVALID_ARGUMENT, str};