in glean/rocksdb/rocksdb.cpp [353:379]
void optimize() override {
for (uint32_t i = 0; i < families.size(); i++) {
auto family = Family::family(i);
auto handle = families[i];
if (handle && family) {
if (!family->keep) {
// delete the contents of this column family
check(db->DropColumnFamily(handle));
db->DestroyColumnFamilyHandle(handle);
rocksdb::ColumnFamilyOptions opts(options);
family->options(opts);
check(db->CreateColumnFamily(
opts,
family->name,
&handle));
families[i] = handle;
}
const auto nlevels = db->NumberLevels(handle);
if (nlevels != 2) {
rocksdb::CompactRangeOptions copts;
copts.change_level = true;
copts.target_level = 1;
check(db->CompactRange(copts, handle, nullptr, nullptr));
}
}
}
}