我的启动方法:
vector<ColumnFamilyDescriptor> columnFamilies = ...
DBOptions dbOptions(options);
std::vector<int32_t> ttls = ...
DBWithTTL* _db;
std::vector<ColumnFamilyHandle*> _handles;
Status status = DBWithTTL::Open(dbOptions, WORKING_DIRECTORY, columnFamilies, &_handles, &_db, ttls, false);
我的关机方法:
for (auto handle : _handles) {
delete handle;
}
delete _db->GetBaseDB();
但是在关闭完成后,我仍然会在merge
下获得带有堆栈的rocksdb::DBImpl::BGWorkCompaction(void * arg)
请求,这当然会失败,因为所有列族处理都被处理掉了。
如何标记任何压实或冲洗停止?删除数据库实例似乎还不够。