Browse Source

add better performance around syncs

merge-requests/114/head
Jonathan de Jong 5 years ago
parent
commit
a55dec9035
  1. 2
      src/client_server/sync.rs
  2. 15
      src/main.rs

2
src/client_server/sync.rs

@ -144,6 +144,8 @@ pub async fn sync_helper_wrapper(
} }
} }
drop(db);
let _ = tx.send(Some(r.map(|(r, _)| r.into()))); let _ = tx.send(Some(r.map(|(r, _)| r.into())));
} }

15
src/main.rs

@ -32,7 +32,7 @@ use rocket::{
}; };
use tokio::{ use tokio::{
sync::RwLock, sync::RwLock,
time::{interval, Interval}, time::{interval, timeout},
}; };
use tracing::span; use tracing::span;
use tracing_subscriber::{prelude::*, Registry}; use tracing_subscriber::{prelude::*, Registry};
@ -211,18 +211,25 @@ async fn main() {
tokio::spawn(async { tokio::spawn(async {
let weak = weak; let weak = weak;
let mut i = interval(Duration::from_secs(10)); let mut i = interval(Duration::from_secs(60));
loop { loop {
i.tick().await; i.tick().await;
if let Some(arc) = Weak::upgrade(&weak) { if let Some(arc) = Weak::upgrade(&weak) {
log::warn!("wal-trunc: locking..."); log::warn!("wal-trunc: locking...");
let guard = arc.write().await; let guard = {
if let Ok(guard) = timeout(Duration::from_secs(5), arc.write()).await {
guard
} else {
log::warn!("wal-trunc: lock failed in timeout, canceled.");
continue;
}
};
log::warn!("wal-trunc: locked, flushing..."); log::warn!("wal-trunc: locked, flushing...");
let start = Instant::now(); let start = Instant::now();
guard.flush_wal(); guard.flush_wal();
log::warn!("wal-trunc: locked, flushed in {:?}", start.elapsed()); log::warn!("wal-trunc: flushed in {:?}", start.elapsed());
} else { } else {
break; break;
} }

Loading…
Cancel
Save