|
|
|
@ -53,8 +53,8 @@ pub struct Config { |
|
|
|
sqlite_wal_clean_second_interval: u32, |
|
|
|
sqlite_wal_clean_second_interval: u32, |
|
|
|
#[serde(default = "default_sqlite_wal_clean_second_timeout")] |
|
|
|
#[serde(default = "default_sqlite_wal_clean_second_timeout")] |
|
|
|
sqlite_wal_clean_second_timeout: u32, |
|
|
|
sqlite_wal_clean_second_timeout: u32, |
|
|
|
#[serde(default = "default_sqlite_spillover_reap_chunk")] |
|
|
|
#[serde(default = "default_sqlite_spillover_reap_fraction")] |
|
|
|
sqlite_spillover_reap_chunk: u32, |
|
|
|
sqlite_spillover_reap_fraction: u32, |
|
|
|
#[serde(default = "default_sqlite_spillover_reap_interval_secs")] |
|
|
|
#[serde(default = "default_sqlite_spillover_reap_interval_secs")] |
|
|
|
sqlite_spillover_reap_interval_secs: u32, |
|
|
|
sqlite_spillover_reap_interval_secs: u32, |
|
|
|
#[serde(default = "default_max_request_size")] |
|
|
|
#[serde(default = "default_max_request_size")] |
|
|
|
@ -125,12 +125,12 @@ fn default_sqlite_wal_clean_second_timeout() -> u32 { |
|
|
|
2 |
|
|
|
2 |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
fn default_sqlite_spillover_reap_chunk() -> u32 { |
|
|
|
fn default_sqlite_spillover_reap_fraction() -> u32 { |
|
|
|
5 |
|
|
|
2 |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
fn default_sqlite_spillover_reap_interval_secs() -> u32 { |
|
|
|
fn default_sqlite_spillover_reap_interval_secs() -> u32 { |
|
|
|
10 |
|
|
|
60 |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
fn default_max_request_size() -> u32 { |
|
|
|
fn default_max_request_size() -> u32 { |
|
|
|
@ -558,10 +558,9 @@ impl Database { |
|
|
|
|
|
|
|
|
|
|
|
#[cfg(feature = "sqlite")] |
|
|
|
#[cfg(feature = "sqlite")] |
|
|
|
pub async fn start_spillover_reap_task(engine: Arc<Engine>, config: &Config) { |
|
|
|
pub async fn start_spillover_reap_task(engine: Arc<Engine>, config: &Config) { |
|
|
|
let chunk_size = match config.sqlite_spillover_reap_chunk { |
|
|
|
use std::convert::TryInto; |
|
|
|
0 => None, // zero means no chunking, reap everything
|
|
|
|
|
|
|
|
a @ _ => Some(a), |
|
|
|
let fraction_factor = config.sqlite_spillover_reap_fraction.max(1).try_into().unwrap(/* We just converted it to be at least 1 */); |
|
|
|
}; |
|
|
|
|
|
|
|
let interval_secs = config.sqlite_spillover_reap_interval_secs as u64; |
|
|
|
let interval_secs = config.sqlite_spillover_reap_interval_secs as u64; |
|
|
|
|
|
|
|
|
|
|
|
let weak = Arc::downgrade(&engine); |
|
|
|
let weak = Arc::downgrade(&engine); |
|
|
|
@ -577,7 +576,7 @@ impl Database { |
|
|
|
i.tick().await; |
|
|
|
i.tick().await; |
|
|
|
|
|
|
|
|
|
|
|
if let Some(arc) = Weak::upgrade(&weak) { |
|
|
|
if let Some(arc) = Weak::upgrade(&weak) { |
|
|
|
arc.reap_spillover(chunk_size); |
|
|
|
arc.reap_spillover_by_fraction(fraction_factor); |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
break; |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
|