mirror of
https://gitee.com/milvus-io/milvus.git
synced 2025-12-08 01:58:34 +08:00
feat(cpp/db): add background handling
Former-commit-id: c10f382912f3cfbeb45cedc0e17d355f9e2b0bc6
This commit is contained in:
parent
0352db4023
commit
e4b9a62edf
@ -6,7 +6,9 @@ namespace vecengine {
|
|||||||
DBImpl::DBImpl(const Options& options_, const std::string& name_)
|
DBImpl::DBImpl(const Options& options_, const std::string& name_)
|
||||||
: _dbname(name_),
|
: _dbname(name_),
|
||||||
_env(options_.env),
|
_env(options_.env),
|
||||||
_options(options_) {
|
_options(options_),
|
||||||
|
_bg_work_finish_signal(_mutex),
|
||||||
|
_bg_compaction_scheduled(false) {
|
||||||
}
|
}
|
||||||
|
|
||||||
Status DBImpl::add_group(const GroupOptions& options_,
|
Status DBImpl::add_group(const GroupOptions& options_,
|
||||||
@ -17,6 +19,35 @@ Status DBImpl::add_group(const GroupOptions& options_,
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DBImpl::try_schedule_compaction() {
|
||||||
|
if (_bg_compaction_scheduled) return;
|
||||||
|
if (!_bg_error.ok()) return;
|
||||||
|
|
||||||
|
_bg_compaction_scheduled = true;
|
||||||
|
_env->schedule(&DBImpl::BGWork, this);
|
||||||
|
}
|
||||||
|
|
||||||
|
void DBImpl::BGWork(void* db_) {
|
||||||
|
reinterpret_cast<DBImpl*>(db_)->background_call();
|
||||||
|
}
|
||||||
|
|
||||||
|
void DBImpl::background_call() {
|
||||||
|
std::lock_guard<std::mutex> lock(_mutex);
|
||||||
|
assert(_bg_compaction_scheduled);
|
||||||
|
|
||||||
|
if (!_bg_error.ok()) return;
|
||||||
|
|
||||||
|
background_compaction();
|
||||||
|
}
|
||||||
|
|
||||||
|
void DBImpl::background_compaction() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void DBImpl::compact_memory() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* DB
|
* DB
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -1,6 +1,8 @@
|
|||||||
#ifndef VECENGINE_DB_IMPL_H_
|
#ifndef VECENGINE_DB_IMPL_H_
|
||||||
#define VECENGINE_DB_IMPL_H_
|
#define VECENGINE_DB_IMPL_H_
|
||||||
|
|
||||||
|
#include <mutex>
|
||||||
|
#include <condition_variable>
|
||||||
#include "db.h"
|
#include "db.h"
|
||||||
|
|
||||||
namespace vecengine {
|
namespace vecengine {
|
||||||
@ -15,9 +17,15 @@ public:
|
|||||||
const std::string& group_id_,
|
const std::string& group_id_,
|
||||||
std::string& gid_) override;
|
std::string& gid_) override;
|
||||||
|
|
||||||
|
void try_schedule_compaction();
|
||||||
|
|
||||||
virtual ~DBImpl();
|
virtual ~DBImpl();
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
static void BGWork(void* db);
|
||||||
|
void background_call();
|
||||||
|
void background_compaction();
|
||||||
|
|
||||||
Status meta_add_group(const std::string& group_id_);
|
Status meta_add_group(const std::string& group_id_);
|
||||||
Status meta_add_group_file(const std::string& group_id_);
|
Status meta_add_group_file(const std::string& group_id_);
|
||||||
|
|
||||||
@ -25,6 +33,11 @@ private:
|
|||||||
Env* const _env;
|
Env* const _env;
|
||||||
const Options _options;
|
const Options _options;
|
||||||
|
|
||||||
|
std::mutex _mutex;
|
||||||
|
std::condition_variable _bg_work_finish_signal;
|
||||||
|
bool _bg_compaction_scheduled;
|
||||||
|
Status _bg_error;
|
||||||
|
|
||||||
}; // DBImpl
|
}; // DBImpl
|
||||||
|
|
||||||
} // namespace vecengine
|
} // namespace vecengine
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user