Fix(cli): Clamp databases max size to a multiple of system page size

fix #2659
This commit is contained in:
ManyTheFish 2022-08-11 10:44:47 +02:00
parent dfbdc565f9
commit cf955a77db
3 changed files with 9 additions and 0 deletions

1
Cargo.lock generated
View File

@ -2125,6 +2125,7 @@ dependencies = [
"num_cpus",
"obkv",
"once_cell",
"page_size",
"parking_lot",
"paste",
"permissive-json-pointer",

View File

@ -33,6 +33,7 @@ mime = "0.3.16"
num_cpus = "1.13.1"
obkv = "0.2.0"
once_cell = "1.10.0"
page_size = "0.4.2"
parking_lot = "0.12.0"
permissive-json-pointer = { path = "../permissive-json-pointer" }
rand = "0.8.5"

View File

@ -275,11 +275,13 @@ impl IndexControllerBuilder {
/// Set the index controller builder's max update store size.
pub fn set_max_task_store_size(&mut self, max_update_store_size: usize) -> &mut Self {
let max_update_store_size = clamp_to_page_size(max_update_store_size);
self.max_task_store_size.replace(max_update_store_size);
self
}
pub fn set_max_index_size(&mut self, size: usize) -> &mut Self {
let size = clamp_to_page_size(size);
self.max_index_size.replace(size);
self
}
@ -645,6 +647,11 @@ pub async fn get_arc_ownership_blocking<T>(mut item: Arc<T>) -> T {
}
}
// Clamp the provided value to be a multiple of system page size.
fn clamp_to_page_size(size: usize) -> usize {
size / page_size::get() * page_size::get()
}
#[cfg(test)]
mod test {
use futures::future::ok;