summaryrefslogtreecommitdiff
path: root/src/buildtool/storage/garbage_collector.cpp
diff options
context:
space:
mode:
authorMaksim Denisov <denisov.maksim@huawei.com>2024-06-18 15:46:56 +0200
committerMaksim Denisov <denisov.maksim@huawei.com>2024-07-05 12:58:35 +0200
commitb5a29ec0daf024fde9bd06f76cab8a12fd509aab (patch)
treeb1786fc20a5033aa6789ab37b916e072c4d3937a /src/buildtool/storage/garbage_collector.cpp
parentc88585ddf9386fb14154a4f3baa702569d55584a (diff)
downloadjustbuild-b5a29ec0daf024fde9bd06f76cab8a12fd509aab.tar.gz
Pass StorageConfig to GarbageCollector::SharedLock
Diffstat (limited to 'src/buildtool/storage/garbage_collector.cpp')
-rw-r--r--src/buildtool/storage/garbage_collector.cpp22
1 files changed, 12 insertions, 10 deletions
diff --git a/src/buildtool/storage/garbage_collector.cpp b/src/buildtool/storage/garbage_collector.cpp
index 3fe876c7..b4422d11 100644
--- a/src/buildtool/storage/garbage_collector.cpp
+++ b/src/buildtool/storage/garbage_collector.cpp
@@ -34,7 +34,6 @@
#include "src/buildtool/logging/log_level.hpp"
#include "src/buildtool/logging/logger.hpp"
#include "src/buildtool/storage/compactifier.hpp"
-#include "src/buildtool/storage/config.hpp"
#include "src/buildtool/storage/storage.hpp"
#include "src/buildtool/storage/target_cache_entry.hpp"
#include "src/utils/cpp/hex_string.hpp"
@@ -141,16 +140,19 @@ auto GarbageCollector::GlobalUplinkTargetCacheEntry(
return false;
}
-auto GarbageCollector::SharedLock() noexcept -> std::optional<LockFile> {
- return LockFile::Acquire(LockFilePath(), /*is_shared=*/true);
+auto GarbageCollector::SharedLock(StorageConfig const& storage_config) noexcept
+ -> std::optional<LockFile> {
+ return LockFile::Acquire(LockFilePath(storage_config), /*is_shared=*/true);
}
-auto GarbageCollector::ExclusiveLock() noexcept -> std::optional<LockFile> {
- return LockFile::Acquire(LockFilePath(), /*is_shared=*/false);
+auto GarbageCollector::ExclusiveLock(
+ StorageConfig const& storage_config) noexcept -> std::optional<LockFile> {
+ return LockFile::Acquire(LockFilePath(storage_config), /*is_shared=*/false);
}
-auto GarbageCollector::LockFilePath() noexcept -> std::filesystem::path {
- return StorageConfig::Instance().CacheRoot() / "gc.lock";
+auto GarbageCollector::LockFilePath(
+ StorageConfig const& storage_config) noexcept -> std::filesystem::path {
+ return storage_config.CacheRoot() / "gc.lock";
}
auto GarbageCollector::TriggerGarbageCollection(bool no_rotation) noexcept
@@ -167,7 +169,7 @@ auto GarbageCollector::TriggerGarbageCollection(bool no_rotation) noexcept
// With a shared lock, we can remove all directories with the given prefix,
// as we own the process id.
{
- auto lock = SharedLock();
+ auto lock = SharedLock(StorageConfig::Instance());
if (not lock) {
Logger::Log(LogLevel::Error,
"Failed to get a shared lock the local build root");
@@ -194,7 +196,7 @@ auto GarbageCollector::TriggerGarbageCollection(bool no_rotation) noexcept
// after releasing the shared lock, wait to get an exclusive lock for doing
// the critical renaming
{
- auto lock = ExclusiveLock();
+ auto lock = ExclusiveLock(StorageConfig::Instance());
if (not lock) {
Logger::Log(LogLevel::Error,
"Failed to exclusively lock the local build root");
@@ -287,7 +289,7 @@ auto GarbageCollector::TriggerGarbageCollection(bool no_rotation) noexcept
// have to remove
bool success{};
{
- auto lock = SharedLock();
+ auto lock = SharedLock(StorageConfig::Instance());
if (not lock) {
Logger::Log(LogLevel::Error,
"Failed to get a shared lock the local build root");