Collect and show storage stats

This commit is contained in:
Mike Dilger 2023-08-01 09:53:34 +12:00
parent c185d6e531
commit 3101bd3ff0
2 changed files with 252 additions and 31 deletions

View File

@ -195,6 +195,71 @@ impl Storage {
Ok(storage)
}
pub fn get_general_stats(&self) -> Result<Stat, Error> {
let txn = self.env.begin_ro_txn()?;
Ok(txn.stat(self.general)?)
}
pub fn get_event_seen_on_relay_stats(&self) -> Result<Stat, Error> {
let txn = self.env.begin_ro_txn()?;
Ok(txn.stat(self.event_seen_on_relay)?)
}
pub fn get_event_viewed_stats(&self) -> Result<Stat, Error> {
let txn = self.env.begin_ro_txn()?;
Ok(txn.stat(self.event_viewed)?)
}
pub fn get_hashtags_stats(&self) -> Result<Stat, Error> {
let txn = self.env.begin_ro_txn()?;
Ok(txn.stat(self.hashtags)?)
}
pub fn get_relays_stats(&self) -> Result<Stat, Error> {
let txn = self.env.begin_ro_txn()?;
Ok(txn.stat(self.relays)?)
}
pub fn get_event_tags_stats(&self) -> Result<Stat, Error> {
let txn = self.env.begin_ro_txn()?;
Ok(txn.stat(self.event_tags)?)
}
pub fn get_event_stats(&self) -> Result<Stat, Error> {
let txn = self.env.begin_ro_txn()?;
Ok(txn.stat(self.events)?)
}
pub fn get_event_ek_pk_index_stats(&self) -> Result<Stat, Error> {
let txn = self.env.begin_ro_txn()?;
Ok(txn.stat(self.event_ek_pk_index)?)
}
pub fn get_event_ek_c_index_stats(&self) -> Result<Stat, Error> {
let txn = self.env.begin_ro_txn()?;
Ok(txn.stat(self.event_ek_c_index)?)
}
pub fn get_event_references_person_stats(&self) -> Result<Stat, Error> {
let txn = self.env.begin_ro_txn()?;
Ok(txn.stat(self.event_references_person)?)
}
pub fn get_relationships_stats(&self) -> Result<Stat, Error> {
let txn = self.env.begin_ro_txn()?;
Ok(txn.stat(self.relationships)?)
}
pub fn get_people_stats(&self) -> Result<Stat, Error> {
let txn = self.env.begin_ro_txn()?;
Ok(txn.stat(self.people)?)
}
pub fn get_person_relays_stats(&self) -> Result<Stat, Error> {
let txn = self.env.begin_ro_txn()?;
Ok(txn.stat(self.person_relays)?)
}
// Remove all events (and related data) with a created_at before `from`
pub fn prune(&self, from: Unixtime) -> Result<usize, Error> {
// Extract the Ids to delete.
@ -686,11 +751,6 @@ impl Storage {
}
}
pub fn get_event_stats(&self) -> Result<Stat, Error> {
let txn = self.env.begin_ro_txn()?;
Ok(txn.stat(self.events)?)
}
pub fn delete_event(&self, id: Id) -> Result<(), Error> {
let mut txn = self.env.begin_rw_txn()?;
let _ = txn.del(self.events, &id.as_slice(), None);
@ -1418,11 +1478,6 @@ impl Storage {
Ok(output)
}
pub fn get_people_stats(&self) -> Result<Stat, Error> {
let txn = self.env.begin_ro_txn()?;
Ok(txn.stat(self.people)?)
}
pub fn write_person_relay(&self, person_relay: &PersonRelay) -> Result<(), Error> {
let mut key = person_relay.pubkey.as_bytes();
key.extend(person_relay.url.0.as_bytes());

View File

@ -34,27 +34,7 @@ pub(super) fn update(_app: &mut GossipUi, _ctx: &Context, _frame: &mut eframe::F
));
ui.add_space(6.0);
ui.label(format!(
"Events in memory: {}",
GLOBALS
.storage
.get_event_stats()
.map(|s| s.entries())
.unwrap_or(0)
));
ui.add_space(6.0);
ui.label(format!(
"People in memory: {}",
GLOBALS
.storage
.get_people_stats()
.map(|s| s.entries())
.unwrap_or(0)
));
ui.separator();
ui.add_space(6.0);
ui.label(format!(
@ -67,5 +47,191 @@ pub(super) fn update(_app: &mut GossipUi, _ctx: &Context, _frame: &mut eframe::F
Ok(vec) => vec.len(),
}
));
ui.add_space(6.0);
ui.separator();
ui.add_space(6.0);
let general_stats = GLOBALS
.storage
.get_general_stats()
.map(|s| {
format!(
"General storage: {} records, {} pages",
s.entries(),
s.leaf_pages()
)
})
.unwrap_or("".to_owned());
ui.label(general_stats);
ui.add_space(6.0);
let event_seen_on_relay_stats = GLOBALS
.storage
.get_event_seen_on_relay_stats()
.map(|s| {
format!(
"Event_Seen_On_Relay storage: {} records, {} pages",
s.entries(),
s.leaf_pages()
)
})
.unwrap_or("".to_owned());
ui.label(event_seen_on_relay_stats);
ui.add_space(6.0);
let event_viewed_stats = GLOBALS
.storage
.get_event_viewed_stats()
.map(|s| {
format!(
"Event_Viewed storage: {} records, {} pages",
s.entries(),
s.leaf_pages()
)
})
.unwrap_or("".to_owned());
ui.label(event_viewed_stats);
ui.add_space(6.0);
let hashtags_stats = GLOBALS
.storage
.get_hashtags_stats()
.map(|s| {
format!(
"Hashtags storage: {} records, {} pages",
s.entries(),
s.leaf_pages()
)
})
.unwrap_or("".to_owned());
ui.label(hashtags_stats);
ui.add_space(6.0);
let relays_stats = GLOBALS
.storage
.get_relays_stats()
.map(|s| {
format!(
"Relays storage: {} records, {} pages",
s.entries(),
s.leaf_pages()
)
})
.unwrap_or("".to_owned());
ui.label(relays_stats);
ui.add_space(6.0);
let event_tags_stats = GLOBALS
.storage
.get_event_tags_stats()
.map(|s| {
format!(
"Event_Tags storage: {} records, {} pages",
s.entries(),
s.leaf_pages()
)
})
.unwrap_or("".to_owned());
ui.label(event_tags_stats);
ui.add_space(6.0);
let event_stats = GLOBALS
.storage
.get_event_stats()
.map(|s| {
format!(
"Event storage: {} records, {} pages",
s.entries(),
s.leaf_pages()
)
})
.unwrap_or("".to_owned());
ui.label(event_stats);
ui.add_space(6.0);
let event_ek_pk_index_stats = GLOBALS
.storage
.get_event_ek_pk_index_stats()
.map(|s| {
format!(
"Event_Ek_Pk_Index storage: {} records, {} pages",
s.entries(),
s.leaf_pages()
)
})
.unwrap_or("".to_owned());
ui.label(event_ek_pk_index_stats);
ui.add_space(6.0);
let event_ek_c_index_stats = GLOBALS
.storage
.get_event_ek_c_index_stats()
.map(|s| {
format!(
"Event_Ek_C_Index storage: {} records, {} pages",
s.entries(),
s.leaf_pages()
)
})
.unwrap_or("".to_owned());
ui.label(event_ek_c_index_stats);
ui.add_space(6.0);
let event_references_person_stats = GLOBALS
.storage
.get_event_references_person_stats()
.map(|s| {
format!(
"Event_References_Person storage: {} records, {} pages",
s.entries(),
s.leaf_pages()
)
})
.unwrap_or("".to_owned());
ui.label(event_references_person_stats);
ui.add_space(6.0);
let relationships_stats = GLOBALS
.storage
.get_relationships_stats()
.map(|s| {
format!(
"Relationships storage: {} records, {} pages",
s.entries(),
s.leaf_pages()
)
})
.unwrap_or("".to_owned());
ui.label(relationships_stats);
ui.add_space(6.0);
let people_stats = GLOBALS
.storage
.get_people_stats()
.map(|s| {
format!(
"People storage: {} records, {} pages",
s.entries(),
s.leaf_pages()
)
})
.unwrap_or("".to_owned());
ui.label(people_stats);
ui.add_space(6.0);
let person_relays_stats = GLOBALS
.storage
.get_person_relays_stats()
.map(|s| {
format!(
"Person_Relays storage: {} records, {} pages",
s.entries(),
s.leaf_pages()
)
})
.unwrap_or("".to_owned());
ui.label(person_relays_stats);
ui.add_space(6.0);
});
}