From 648f4e697e4ca31becf92d360aa6adbad76e06e4 Mon Sep 17 00:00:00 2001 From: NikVolf Date: Sun, 5 Jan 2020 14:49:43 +0300 Subject: [PATCH 1/2] use proper queries to rocksdb --- kvdb-rocksdb/src/lib.rs | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/kvdb-rocksdb/src/lib.rs b/kvdb-rocksdb/src/lib.rs index d13603da9..f62232253 100644 --- a/kvdb-rocksdb/src/lib.rs +++ b/kvdb-rocksdb/src/lib.rs @@ -232,8 +232,8 @@ struct DBAndColumns { column_names: Vec, } -fn static_property_or_warn(db: &DB, prop: &str) -> usize { - match db.property_int_value(prop) { +fn static_property_or_warn(db: &DB, col: &ColumnFamily, prop: &str) -> usize { + match db.property_int_value_cf(col, prop) { Ok(Some(v)) => v as usize, _ => { warn!("Cannot read expected static property of RocksDb database: {}", prop); @@ -244,10 +244,16 @@ fn static_property_or_warn(db: &DB, prop: &str) -> usize { impl MallocSizeOf for DBAndColumns { fn size_of(&self, ops: &mut parity_util_mem::MallocSizeOfOps) -> usize { - self.column_names.size_of(ops) - + static_property_or_warn(&self.db, "rocksdb.estimate-table-readers-mem") - + static_property_or_warn(&self.db, "rocksdb.cur-size-all-mem-tables") - + static_property_or_warn(&self.db, "rocksdb.block-cache-usage") + let mut total = self.column_names.size_of(ops); + for v in 0..self.column_names.len() { + total = total + static_property_or_warn(&self.db, self.cf(v), "rocksdb.estimate-table-readers-mem"); + total = total + static_property_or_warn(&self.db, self.cf(v), "rocksdb.cur-size-all-mem-tables"); + if v == 0 { + total = total + static_property_or_warn(&self.db, self.cf(v), "rocksdb.block-cache-usage"); + } + } + + total } } From 3539d1ff9c7d15e5d79095f31ed541f1303a4c11 Mon Sep 17 00:00:00 2001 From: NikVolf Date: Sun, 5 Jan 2020 15:23:39 +0300 Subject: [PATCH 2/2] fix test --- kvdb-rocksdb/src/lib.rs | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/kvdb-rocksdb/src/lib.rs b/kvdb-rocksdb/src/lib.rs index f62232253..d478a0c6d 100644 --- a/kvdb-rocksdb/src/lib.rs +++ b/kvdb-rocksdb/src/lib.rs @@ -232,25 +232,15 @@ struct DBAndColumns { column_names: Vec, } -fn static_property_or_warn(db: &DB, col: &ColumnFamily, prop: &str) -> usize { - match db.property_int_value_cf(col, prop) { - Ok(Some(v)) => v as usize, - _ => { - warn!("Cannot read expected static property of RocksDb database: {}", prop); - 0 - } - } -} - impl MallocSizeOf for DBAndColumns { fn size_of(&self, ops: &mut parity_util_mem::MallocSizeOfOps) -> usize { - let mut total = self.column_names.size_of(ops); + let mut total = self.column_names.size_of(ops) + // we have at least one column always, so we can call property on it + + self.static_property_or_warn(0, "rocksdb.block-cache-usage"); + for v in 0..self.column_names.len() { - total = total + static_property_or_warn(&self.db, self.cf(v), "rocksdb.estimate-table-readers-mem"); - total = total + static_property_or_warn(&self.db, self.cf(v), "rocksdb.cur-size-all-mem-tables"); - if v == 0 { - total = total + static_property_or_warn(&self.db, self.cf(v), "rocksdb.block-cache-usage"); - } + total += self.static_property_or_warn(v, "rocksdb.estimate-table-readers-mem"); + total += self.static_property_or_warn(v, "rocksdb.cur-size-all-mem-tables"); } total @@ -261,6 +251,16 @@ impl DBAndColumns { fn cf(&self, i: usize) -> &ColumnFamily { self.db.cf_handle(&self.column_names[i]).expect("the specified column name is correct; qed") } + + fn static_property_or_warn(&self, col: usize, prop: &str) -> usize { + match self.db.property_int_value_cf(self.cf(col), prop) { + Ok(Some(v)) => v as usize, + _ => { + warn!("Cannot read expected static property of RocksDb database: {}", prop); + 0 + } + } + } } /// Key-Value database. @@ -862,7 +862,7 @@ mod tests { { let db = db.db.read(); db.as_ref().map(|db| { - assert!(super::static_property_or_warn(&db.db, "rocksdb.cur-size-all-mem-tables") > 512); + assert!(db.static_property_or_warn(0, "rocksdb.cur-size-all-mem-tables") > 512); }); } }