Comprehensive observability snapshot for this KV engine.
(&self)
| 135 | |
| 136 | /// Comprehensive observability snapshot for this KV engine. |
| 137 | pub fn stats(&self) -> KvStats { |
| 138 | let mut total_entries = 0usize; |
| 139 | let mut total_mem = 0usize; |
| 140 | let mut total_index_entries = 0usize; |
| 141 | let mut is_rehashing = false; |
| 142 | let mut max_load_factor: f32 = 0.0; |
| 143 | |
| 144 | for table in self.tables.values() { |
| 145 | total_entries += table.len(); |
| 146 | total_mem += table.mem_usage(); |
| 147 | if table.load_factor() > max_load_factor { |
| 148 | max_load_factor = table.load_factor(); |
| 149 | } |
| 150 | if table.is_rehashing() { |
| 151 | is_rehashing = true; |
| 152 | } |
| 153 | } |
| 154 | |
| 155 | for idx_set in self.indexes.values() { |
| 156 | for field in idx_set.indexed_fields() { |
| 157 | if let Some(idx) = idx_set.get_index(field) { |
| 158 | total_index_entries += idx.entry_count(); |
| 159 | } |
| 160 | } |
| 161 | } |
| 162 | |
| 163 | KvStats { |
| 164 | total_entries, |
| 165 | total_mem_bytes: total_mem, |
| 166 | collection_count: self.tables.len(), |
| 167 | max_load_factor, |
| 168 | is_rehashing, |
| 169 | total_index_entries, |
| 170 | expiry_queue_depth: self.expiry.len(), |
| 171 | expiry_backlog: self.expiry.backlog(), |
| 172 | } |
| 173 | } |
| 174 | } |
no test coverage detected