void optimize()

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));
        }
      }
    }
  }