mirror of
https://github.com/scsibug/nostr-rs-relay.git
synced 2024-11-22 09:09:07 -05:00
improvement: run maintenance every 60 seconds instead of by event count
This commit is contained in:
parent
91177c61a1
commit
5917bc53b2
12
src/db.rs
12
src/db.rs
|
@ -38,8 +38,11 @@ pub struct SubmittedEvent {
|
||||||
|
|
||||||
/// Database file
|
/// Database file
|
||||||
pub const DB_FILE: &str = "nostr.db";
|
pub const DB_FILE: &str = "nostr.db";
|
||||||
|
|
||||||
|
/// How frequently to run maintenance
|
||||||
/// How many persisted events before DB maintenannce is triggered.
|
/// How many persisted events before DB maintenannce is triggered.
|
||||||
pub const EVENT_COUNT_MAINTENANCE_TRIGGER: usize = 2000;
|
pub const EVENT_MAINTENANCE_FREQ_SEC: u64 = 60;
|
||||||
|
|
||||||
/// How many persisted events before we pause for backups.
|
/// How many persisted events before we pause for backups.
|
||||||
/// It isn't clear this is enough to make the online backup API work yet.
|
/// It isn't clear this is enough to make the online backup API work yet.
|
||||||
pub const EVENT_COUNT_BACKUP_PAUSE_TRIGGER: usize = 1000;
|
pub const EVENT_COUNT_BACKUP_PAUSE_TRIGGER: usize = 1000;
|
||||||
|
@ -170,7 +173,7 @@ pub async fn db_writer(
|
||||||
let mut lim_opt = None;
|
let mut lim_opt = None;
|
||||||
// Keep rough track of events so we can run maintenance
|
// Keep rough track of events so we can run maintenance
|
||||||
// eventually.
|
// eventually.
|
||||||
let mut maintenance_counter: usize = 0;
|
let mut last_maintenance = Instant::now();
|
||||||
// Constant writing has interfered with online backups. Keep
|
// Constant writing has interfered with online backups. Keep
|
||||||
// track of how long since we've given the backups a chance to
|
// track of how long since we've given the backups a chance to
|
||||||
// run.
|
// run.
|
||||||
|
@ -316,10 +319,9 @@ pub async fn db_writer(
|
||||||
}
|
}
|
||||||
|
|
||||||
// Use this as a trigger to do optimization & checkpointing
|
// Use this as a trigger to do optimization & checkpointing
|
||||||
maintenance_counter += 1;
|
if last_maintenance.elapsed() > Duration::from_secs(EVENT_MAINTENANCE_FREQ_SEC) {
|
||||||
if maintenance_counter > EVENT_COUNT_MAINTENANCE_TRIGGER {
|
last_maintenance = Instant::now();
|
||||||
debug!("running database optimizer");
|
debug!("running database optimizer");
|
||||||
maintenance_counter = 0;
|
|
||||||
optimize_db(&mut pool.get()?).ok();
|
optimize_db(&mut pool.get()?).ok();
|
||||||
debug!("running wal_checkpoint(TRUNCATE)");
|
debug!("running wal_checkpoint(TRUNCATE)");
|
||||||
checkpoint_db(&mut pool.get()?).ok();
|
checkpoint_db(&mut pool.get()?).ok();
|
||||||
|
|
Loading…
Reference in New Issue
Block a user