From 3917084e012ce88e85e991925fde15a43c4a3e4d Mon Sep 17 00:00:00 2001 From: Xu Peng Date: Tue, 16 Apr 2019 16:05:46 +0800 Subject: [PATCH] feat(db): add merge files Former-commit-id: 9673339417ce0eb4f4d767420e4a87aa551b1edc --- cpp/src/db/db_impl.cpp | 10 +++++----- cpp/src/db/db_meta.h | 3 +++ cpp/src/db/db_meta_impl.cpp | 22 ++++++++++++++++++++++ cpp/src/db/db_meta_impl.h | 3 +++ 4 files changed, 33 insertions(+), 5 deletions(-) diff --git a/cpp/src/db/db_impl.cpp b/cpp/src/db/db_impl.cpp index 723b80cb4a..ace1996eb4 100644 --- a/cpp/src/db/db_impl.cpp +++ b/cpp/src/db/db_impl.cpp @@ -136,11 +136,11 @@ Status DBImpl::merge_files(const std::string& group_id, const meta::DateT& date, Status DBImpl::background_merge_files(const std::string& group_id) { meta::DatePartionedGroupFilesSchema raw_files; - /* auto status = _pMeta->get_small_raw_files(group_id, raw_files); */ - /* if (!status.ok()) { */ - /* _bg_error = status; */ - /* return status; */ - /* } */ + auto status = _pMeta->files_to_merge(group_id, raw_files); + if (!status.ok()) { + _bg_error = status; + return status; + } if (raw_files.size() == 0) { return Status::OK(); diff --git a/cpp/src/db/db_meta.h b/cpp/src/db/db_meta.h index 22ab911fd3..02b899ec0d 100644 --- a/cpp/src/db/db_meta.h +++ b/cpp/src/db/db_meta.h @@ -74,6 +74,9 @@ public: virtual Status update_files(const GroupFilesSchema& files) = 0; + virtual Status files_to_merge(const std::string& group_id, + DatePartionedGroupFilesSchema& files) = 0; + static DateT GetDate(const std::time_t& t); static DateT GetDate(); diff --git a/cpp/src/db/db_meta_impl.cpp b/cpp/src/db/db_meta_impl.cpp index 1f8c4a94ce..ef7ff7d04a 100644 --- a/cpp/src/db/db_meta_impl.cpp +++ b/cpp/src/db/db_meta_impl.cpp @@ -1,5 +1,6 @@ #include #include +#include #include "db_meta_impl.h" #include "id_generators.h" @@ -56,6 +57,27 @@ Status DBMetaImpl::add_group_file(const std::string& group_id, return Status::OK(); } +Status DBMetaImpl::files_to_merge(const std::string& group_id, + DatePartionedGroupFilesSchema& files) { + //PXU TODO + files.clear(); + std::stringstream ss; + ss << "/tmp/test/" << Meta::GetDate(); + boost::filesystem::path path(ss.str().c_str()); + boost::filesystem::directory_iterator end_itr; + GroupFilesSchema gfiles; + DateT date = Meta::GetDate(); + files[date] = gfiles; + for (boost::filesystem::directory_iterator itr(path); itr != end_itr; ++itr) { + std::cout << itr->path().string() << std::endl; + GroupFileSchema f; + f.location = itr->path().string(); + files[date].push_back(f); + } + + return Status::OK(); +} + Status DBMetaImpl::has_group_file(const std::string& group_id_, const std::string& file_id_, bool& has_or_not_) { diff --git a/cpp/src/db/db_meta_impl.h b/cpp/src/db/db_meta_impl.h index 06e04902ce..ee2c57ea3c 100644 --- a/cpp/src/db/db_meta_impl.h +++ b/cpp/src/db/db_meta_impl.h @@ -38,6 +38,9 @@ public: virtual Status update_files(const GroupFilesSchema& files) override; + virtual Status files_to_merge(const std::string& group_id, + DatePartionedGroupFilesSchema& files) override; + private: Status initialize();