未验证 提交 cd4b667b 编写于 作者: B BossZou 提交者: GitHub

Update InactiveResourceGCEvent (#3051)

Signed-off-by: Nyhz <413554850@qq.com>
上级 5b1fdcf7
......@@ -26,7 +26,7 @@ namespace milvus {
namespace engine {
namespace snapshot {
class InActiveResourcesGCEvent : public MetaEvent, public Operations {
class InActiveResourcesGCEvent : public GCEvent, public Operations {
public:
using Ptr = std::shared_ptr<InActiveResourcesGCEvent>;
......@@ -77,6 +77,7 @@ class InActiveResourcesGCEvent : public MetaEvent, public Operations {
auto ok = boost::filesystem::remove(res_path);
/* std::cout << "[GC] Remove file " << res_->ToString() << " " << res_path << " " << ok << std::endl; */
} else {
RemoveWithSuffix<ResourceT>(res, res_path, store->GetSuffixSet());
std::cout << "[GC] Remove stale " << res_path << " for " << res->ToString() << std::endl;
}
......
......@@ -11,6 +11,11 @@
#pragma once
#include <set>
#include <string>
#include <boost/filesystem.hpp>
#include "db/snapshot/Store.h"
#include "utils/Status.h"
......@@ -23,6 +28,26 @@ class MetaEvent {
virtual Status Process(StorePtr) = 0;
};
class GCEvent : virtual public MetaEvent {
protected:
template <class ResourceT>
void
RemoveWithSuffix(typename ResourceT::Ptr res, const std::string& path, const std::set<std::string>& suffix_set) {
for (auto& suffix : suffix_set) {
if (suffix.empty()) {
continue;
}
auto adjusted = path + suffix;
if (boost::filesystem::is_regular_file(adjusted)) {
auto ok = boost::filesystem::remove(adjusted);
std::cout << "[GC] Remove FILE " << res->ToString() << " " << adjusted << " " << ok << std::endl;
return;
}
}
std::cout << "[GC] Remove STALE OBJECT " << path << " for " << res->ToString() << std::endl;
}
};
} // namespace snapshot
} // namespace engine
} // namespace milvus
......@@ -25,7 +25,7 @@
namespace milvus::engine::snapshot {
template <class ResourceT>
class ResourceGCEvent : public MetaEvent {
class ResourceGCEvent : public GCEvent {
public:
using Ptr = std::shared_ptr<ResourceGCEvent>;
......@@ -52,7 +52,7 @@ class ResourceGCEvent : public MetaEvent {
auto ok = boost::filesystem::remove(res_path);
std::cout << "[GC] Remove FILE " << res_->ToString() << " " << res_path << " " << ok << std::endl;
} else {
RemoveWithSuffix(res_path, store->GetSuffixSet());
RemoveWithSuffix<ResourceT>(res_, res_path, store->GetSuffixSet());
}
/* remove resource from meta */
......@@ -63,23 +63,7 @@ class ResourceGCEvent : public MetaEvent {
}
private:
void
RemoveWithSuffix(const std::string& path, const std::set<std::string>& suffix_set) {
for (auto& suffix : suffix_set) {
if (suffix.empty()) {
continue;
}
auto adjusted = path + suffix;
if (boost::filesystem::is_regular_file(adjusted)) {
auto ok = boost::filesystem::remove(adjusted);
std::cout << "[GC] Remove FILE " << res_->ToString() << " " << adjusted << " " << ok << std::endl;
return;
}
}
std::cout << "[GC] Remove STALE OBJECT " << path << " for " << res_->ToString() << std::endl;
}
class ResourceT::Ptr res_;
typename ResourceT::Ptr res_;
};
} // namespace milvus::engine::snapshot
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册