summaryrefslogtreecommitdiff
path: root/src/buildtool/storage/garbage_collector.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/buildtool/storage/garbage_collector.cpp')
-rw-r--r--src/buildtool/storage/garbage_collector.cpp39
1 files changed, 14 insertions, 25 deletions
diff --git a/src/buildtool/storage/garbage_collector.cpp b/src/buildtool/storage/garbage_collector.cpp
index 97a0f96c..817e5240 100644
--- a/src/buildtool/storage/garbage_collector.cpp
+++ b/src/buildtool/storage/garbage_collector.cpp
@@ -20,9 +20,7 @@
#include <filesystem>
#include <vector>
-#include "gsl/gsl"
#include "src/buildtool/common/artifact.hpp"
-#include "src/buildtool/common/protocol_traits.hpp"
#include "src/buildtool/crypto/hash_function.hpp"
#include "src/buildtool/execution_api/common/message_limits.hpp"
#include "src/buildtool/file_system/file_system_manager.hpp"
@@ -214,22 +212,6 @@ auto GarbageCollector::TriggerGarbageCollection(
auto GarbageCollector::Compactify(StorageConfig const& storage_config,
size_t threshold) noexcept -> bool {
- // Return to the initial compatibility mode once done:
- auto const guard =
- gsl::finally([mode = ProtocolTraits::Instance().IsCompatible()] {
- ProtocolTraits::Instance().SetCompatible(mode);
- });
-
- auto compactify = [threshold](StorageConfig const& config) -> bool {
- ProtocolTraits::Instance().SetCompatible(
- config.hash_function.GetType() == HashFunction::Type::PlainSHA256);
- auto const storage = ::Generation::Create(&config);
-
- return Compactifier::RemoveInvalid(storage.CAS()) and
- Compactifier::RemoveSpliced(storage.CAS()) and
- Compactifier::SplitLarge(storage.CAS(), threshold);
- };
-
// Compactification must be done for both native and compatible storages.
static constexpr std::array kHashes = {HashFunction::Type::GitSHA1,
HashFunction::Type::PlainSHA256};
@@ -237,13 +219,20 @@ auto GarbageCollector::Compactify(StorageConfig const& storage_config,
.SetBuildRoot(storage_config.build_root)
.SetNumGenerations(storage_config.num_generations);
- return std::all_of(kHashes.begin(),
- kHashes.end(),
- [&builder, &compactify](HashFunction::Type hash_type) {
- auto const config =
- builder.SetHashType(hash_type).Build();
- return config.has_value() and compactify(*config);
- });
+ return std::all_of(
+ kHashes.begin(),
+ kHashes.end(),
+ [threshold, &builder](HashFunction::Type hash_type) {
+ auto const config = builder.SetHashType(hash_type).Build();
+ if (not config) {
+ return false;
+ }
+
+ auto const storage = ::Generation::Create(&*config);
+ return Compactifier::RemoveInvalid(storage.CAS()) and
+ Compactifier::RemoveSpliced(storage.CAS()) and
+ Compactifier::SplitLarge(storage.CAS(), threshold);
+ });
}
#endif // BOOTSTRAP_BUILD_TOOL