diff --git a/crates/brk_cli/src/run.rs b/crates/brk_cli/src/run.rs index 3c9707ae4..29d50cf5f 100644 --- a/crates/brk_cli/src/run.rs +++ b/crates/brk_cli/src/run.rs @@ -133,7 +133,7 @@ pub struct RunConfig { #[arg(short, long)] computation: Option, - /// Format of computed datasets, `compressed` to save disk space, `raw` to prioritize speed, default: `compressed`, saved + /// Format of computed datasets, `compressed` to save disk space (experimental), `raw` to prioritize speed, default: `raw`, saved #[serde(default, deserialize_with = "default_on_error")] #[arg(short, long)] format: Option, diff --git a/crates/brk_computer/src/vecs/stateful/mod.rs b/crates/brk_computer/src/vecs/stateful/mod.rs index eb5126271..735cd3fa9 100644 --- a/crates/brk_computer/src/vecs/stateful/mod.rs +++ b/crates/brk_computer/src/vecs/stateful/mod.rs @@ -1443,7 +1443,10 @@ impl Vecs { let height = txindex_to_height .get_or_read(input_txindex, &txindex_to_height_mmap) .unwrap() - .unwrap() + .unwrap_or_else(|| { + dbg!(input_txindex, txindex_to_height.len()); + unreachable!("") + }) .into_inner(); (height, value, input_type) diff --git a/crates/brk_server/src/api/mod.rs b/crates/brk_server/src/api/mod.rs index 3e8fff14d..b5837440d 100644 --- a/crates/brk_server/src/api/mod.rs +++ b/crates/brk_server/src/api/mod.rs @@ -124,6 +124,7 @@ pub async fn variant_handler( Query(params_opt): Query, state: State, ) -> Response { + let variant = variant.replace("_", "-"); let mut split = variant.split(TO_SEPARATOR); let params = Params::from(( ( diff --git a/crates/brk_vec/src/traits/generic.rs b/crates/brk_vec/src/traits/generic.rs index 3d4aab484..9cbbcf4f9 100644 --- a/crates/brk_vec/src/traits/generic.rs +++ b/crates/brk_vec/src/traits/generic.rs @@ -31,7 +31,7 @@ where } #[inline] fn get_or_read_(&self, index: usize, mmap: &Mmap) -> Result>> { - let stored_len = mmap.len() / Self::SIZE_OF_T; + let stored_len = self.stored_len_(mmap); if index >= stored_len { let pushed = self.pushed(); @@ -53,6 +53,7 @@ where fn mmap(&self) -> &ArcSwap; fn stored_len(&self) -> usize; + fn stored_len_(&self, mmap: &Mmap) -> usize; fn pushed(&self) -> &[T]; #[inline] diff --git a/crates/brk_vec/src/variants/compressed.rs b/crates/brk_vec/src/variants/compressed.rs index 841216cbc..73a11c83c 100644 --- a/crates/brk_vec/src/variants/compressed.rs +++ b/crates/brk_vec/src/variants/compressed.rs @@ -133,7 +133,7 @@ where page_index * Self::PER_PAGE } - fn stored_len_(pages_meta: &Guard>) -> usize { + fn stored_len__(pages_meta: &Guard>) -> usize { if let Some(last) = pages_meta.last() { (pages_meta.len() - 1) * Self::PER_PAGE + last.values_len as usize } else { @@ -182,7 +182,11 @@ where #[inline] fn stored_len(&self) -> usize { - Self::stored_len_(&self.pages_meta.load()) + Self::stored_len__(&self.pages_meta.load()) + } + #[inline] + fn stored_len_(&self, _: &Mmap) -> usize { + self.stored_len() } #[inline] @@ -481,7 +485,7 @@ where fn into_iter(self) -> Self::IntoIter { let pages_meta = self.pages_meta.load(); - let stored_len = CompressedVec::::stored_len_(&pages_meta); + let stored_len = CompressedVec::::stored_len__(&pages_meta); CompressedVecIterator { vec: self, guard: self.mmap().load(), diff --git a/crates/brk_vec/src/variants/raw.rs b/crates/brk_vec/src/variants/raw.rs index 9b682087a..b2287915c 100644 --- a/crates/brk_vec/src/variants/raw.rs +++ b/crates/brk_vec/src/variants/raw.rs @@ -104,7 +104,11 @@ where #[inline] fn stored_len(&self) -> usize { - self.mmap.load().len() / Self::SIZE_OF_T + self.stored_len_(&self.mmap.load()) + } + #[inline] + fn stored_len_(&self, mmap: &Mmap) -> usize { + mmap.len() / Self::SIZE_OF_T } #[inline] diff --git a/crates/brk_vec/src/variants/stored.rs b/crates/brk_vec/src/variants/stored.rs index a9ca895ff..c5aef5bf3 100644 --- a/crates/brk_vec/src/variants/stored.rs +++ b/crates/brk_vec/src/variants/stored.rs @@ -73,6 +73,13 @@ where StoredVec::Compressed(v) => v.stored_len(), } } + #[inline] + fn stored_len_(&self, mmap: &Mmap) -> usize { + match self { + StoredVec::Raw(v) => v.stored_len_(mmap), + StoredVec::Compressed(v) => v.stored_len_(mmap), + } + } #[inline] fn pushed(&self) -> &[T] {