@@ -139,6 +139,12 @@ pub struct RocksSecondaryIndexValueTTLExtended {
139139 pub raw_size : u32 ,
140140}
141141
142+ #[ derive( Debug , Eq , PartialEq , Clone , Serialize , Deserialize ) ]
143+ pub struct RocksPropertyRow {
144+ pub key : String ,
145+ pub value : Option < String > ,
146+ }
147+
142148#[ derive( Debug ) ]
143149pub enum RocksSecondaryIndexValue < ' a > {
144150 Hash ( & ' a [ u8 ] ) ,
@@ -991,6 +997,55 @@ impl RocksStore {
991997 Ok ( ( ) )
992998 }
993999
1000+ pub fn rocksdb_properties ( & self ) -> Result < Vec < RocksPropertyRow > , CubeError > {
1001+ let to_collect = [
1002+ rocksdb:: properties:: BLOCK_CACHE_CAPACITY ,
1003+ rocksdb:: properties:: BLOCK_CACHE_USAGE ,
1004+ rocksdb:: properties:: BLOCK_CACHE_PINNED_USAGE ,
1005+ rocksdb:: properties:: LEVELSTATS ,
1006+ & rocksdb:: properties:: compression_ratio_at_level ( 0 ) ,
1007+ & rocksdb:: properties:: compression_ratio_at_level ( 1 ) ,
1008+ & rocksdb:: properties:: compression_ratio_at_level ( 2 ) ,
1009+ & rocksdb:: properties:: compression_ratio_at_level ( 3 ) ,
1010+ & rocksdb:: properties:: compression_ratio_at_level ( 4 ) ,
1011+ & rocksdb:: properties:: compression_ratio_at_level ( 6 ) ,
1012+ rocksdb:: properties:: DBSTATS ,
1013+ // rocksdb::properties::SSTABLES,
1014+ rocksdb:: properties:: NUM_RUNNING_FLUSHES ,
1015+ rocksdb:: properties:: COMPACTION_PENDING ,
1016+ rocksdb:: properties:: NUM_RUNNING_COMPACTIONS ,
1017+ rocksdb:: properties:: BACKGROUND_ERRORS ,
1018+ rocksdb:: properties:: CUR_SIZE_ACTIVE_MEM_TABLE ,
1019+ rocksdb:: properties:: CUR_SIZE_ALL_MEM_TABLES ,
1020+ rocksdb:: properties:: SIZE_ALL_MEM_TABLES ,
1021+ rocksdb:: properties:: NUM_ENTRIES_ACTIVE_MEM_TABLE ,
1022+ rocksdb:: properties:: NUM_ENTRIES_IMM_MEM_TABLES ,
1023+ rocksdb:: properties:: NUM_DELETES_ACTIVE_MEM_TABLE ,
1024+ rocksdb:: properties:: NUM_DELETES_IMM_MEM_TABLES ,
1025+ rocksdb:: properties:: ESTIMATE_NUM_KEYS ,
1026+ rocksdb:: properties:: NUM_SNAPSHOTS ,
1027+ rocksdb:: properties:: OLDEST_SNAPSHOT_TIME ,
1028+ rocksdb:: properties:: NUM_LIVE_VERSIONS ,
1029+ rocksdb:: properties:: ESTIMATE_LIVE_DATA_SIZE ,
1030+ rocksdb:: properties:: LIVE_SST_FILES_SIZE ,
1031+ rocksdb:: properties:: ESTIMATE_PENDING_COMPACTION_BYTES ,
1032+ rocksdb:: properties:: ESTIMATE_TABLE_READERS_MEM ,
1033+ rocksdb:: properties:: BASE_LEVEL ,
1034+ rocksdb:: properties:: AGGREGATED_TABLE_PROPERTIES ,
1035+ ] ;
1036+
1037+ let mut result = Vec :: with_capacity ( to_collect. len ( ) ) ;
1038+
1039+ for property_name in to_collect {
1040+ result. push ( RocksPropertyRow {
1041+ key : property_name. to_string_lossy ( ) . to_string ( ) ,
1042+ value : self . db . property_value ( property_name) ?,
1043+ } )
1044+ }
1045+
1046+ Ok ( result)
1047+ }
1048+
9941049 pub async fn healthcheck ( & self ) -> Result < ( ) , CubeError > {
9951050 self . read_operation ( move |_| {
9961051 // read_operation will call getSnapshot, which is enough to test that RocksDB works
0 commit comments