feat(db): add size api for meta

Former-commit-id: 0b240dbf664348f65a70e57a5d545857469ad37b
pull/191/head
Xu Peng 2019-05-24 17:41:43 +08:00
parent 0a7f334697
commit e15c445fb5
5 changed files with 31 additions and 13 deletions

View File

@ -476,20 +476,11 @@ Status DBMetaImpl::archive_files() {
}
if (criteria == "disk") {
size_t G = 1024*1024*1024UL;
long unsigned int sum = 0;
try {
auto sum_c = ConnectorPtr->sum(
&GroupFileSchema::rows,
where(
c(&GroupFileSchema::file_type) != (int)GroupFileSchema::TO_DELETE
));
sum = *sum_c;
} catch (std::exception & e) {
LOG(DEBUG) << e.what();
throw e;
}
long sum = 0;
size(sum);
// PXU TODO: refactor rows
auto to_delete = sum - limit*G/sizeof(float);
auto to_delete = (sum - limit*G)/sizeof(float);
discard_files_of_size(to_delete);
}
}
@ -497,6 +488,22 @@ Status DBMetaImpl::archive_files() {
return Status::OK();
}
Status DBMetaImpl::size(long& result) {
try {
auto sum_c = ConnectorPtr->sum(
&GroupFileSchema::rows,
where(
c(&GroupFileSchema::file_type) != (int)GroupFileSchema::TO_DELETE
));
result = *sum_c*sizeof(float);
} catch (std::exception & e) {
LOG(DEBUG) << e.what();
throw e;
}
return Status::OK();
}
Status DBMetaImpl::discard_files_of_size(long to_discard_size) {
LOG(DEBUG) << "Abort to discard size=" << to_discard_size;
if (to_discard_size <= 0) {

View File

@ -52,6 +52,8 @@ public:
virtual Status archive_files() override;
virtual Status size(long& result) override;
virtual Status cleanup() override;
virtual Status cleanup_ttl_files(uint16_t seconds) override;

View File

@ -261,6 +261,11 @@ Status LocalMetaImpl::drop_all() {
return Status::OK();
}
Status LocalMetaImpl::size(long& result) {
// PXU TODO
return Status::OK();
}
Status LocalMetaImpl::count(const std::string& group_id, long& result) {
// PXU TODO
return Status::OK();

View File

@ -55,6 +55,8 @@ public:
virtual Status drop_all() override;
virtual Status size(long& result) override;
private:
Status GetGroupMetaInfoByPath(const std::string& path, GroupSchema& group_info);

View File

@ -93,6 +93,8 @@ public:
virtual Status files_to_merge(const std::string& group_id,
DatePartionedGroupFilesSchema& files) = 0;
virtual Status size(long& result) = 0;
virtual Status archive_files() = 0;
virtual Status files_to_index(GroupFilesSchema&) = 0;