use std::thread;
use std::time::{Duration, Instant};
use crate::store::fst::StoreFSTPool;
use crate::store::kv::StoreKVPool;
pub struct TaskerBuilder;
pub struct Tasker;
const TASKER_TICK_INTERVAL: Duration = Duration::from_secs(10);
impl TaskerBuilder {
pub fn build() -> Tasker {
Tasker {}
}
}
impl Tasker {
pub fn run(&self) {
info!("tasker is now active");
loop {
thread::sleep(TASKER_TICK_INTERVAL);
debug!("running a tasker tick...");
let tick_start = Instant::now();
Self::tick();
let tick_took = tick_start.elapsed();
info!(
"ran tasker tick (took {}s + {}ms)",
tick_took.as_secs(),
tick_took.subsec_millis()
);
}
}
fn tick() {
StoreKVPool::janitor();
StoreFSTPool::janitor();
StoreKVPool::flush(false);
StoreFSTPool::consolidate(false);
}
}