void RocksDBStore::get_statistics(Formatter *f)
{
if (!cct->_conf->rocksdb_perf) {
- dout(20) << __func__ << " RocksDB perf is disabled, can't probe for stats"
- << dendl;
+ f->write_raw_data("error: RocksDB perf is disabled, can't probe for stats.\n");
+ return;
+ }
+ if (!cct->_conf->rocksdb_collect_compaction_stats &&
+ !cct->_conf->rocksdb_collect_extended_stats &&
+ !cct->_conf->rocksdb_collect_memory_stats) {
+ f->write_raw_data("error: None of rocksdb_collect_* setting is enabled, hence no output.\n");
return;
}
-
+
if (cct->_conf->rocksdb_collect_compaction_stats) {
- std::string stat_str;
- bool status = db->GetProperty("rocksdb.stats", &stat_str);
- if (status) {
- f->open_object_section("rocksdb_statistics");
+ vector<rocksdb::ColumnFamilyHandle*> handles;
+ handles.push_back(default_cf);
+ for (auto cf : cf_handles) {
+ for (auto shard_cf : cf.second.handles) {
+ handles.push_back(shard_cf);
+ }
+ }
+ f->open_object_section("rocksdb_statistics");
+ for (auto handle : handles) {
+ std::string stat_str;
+ bool status = db->GetProperty(handle, "rocksdb.stats", &stat_str);
+ if (!status) {
+ derr << __func__ << " failed to get rocksdb.stats for the cf: "
+ << handle->GetName() << dendl;
+ continue;
+ }
f->dump_string("rocksdb_compaction_statistics", "");
vector<string> stats;
split_stats(stat_str, '\n', stats);