diff --git a/src/store/reader.rs b/src/store/reader.rs index 810c5c5b8..d002be787 100644 --- a/src/store/reader.rs +++ b/src/store/reader.rs @@ -166,6 +166,7 @@ impl StoreReader { .map(|checkpoint| self.read_block(&checkpoint).map_err(|e| e.kind())); // map error in order to enable cloning let mut block_start_pos = 0; let mut num_skipped = 0; + let mut reset_block_pos = false; (0..last_docid) .filter_map(move |doc_id| { // filter_map is only used to resolve lifetime issues between the two closures on @@ -175,8 +176,8 @@ impl StoreReader { // we keep the number of skipped documents to move forward in the map block num_skipped += 1; } + // check move to next checkpoint - let mut reset_block_pos = false; if doc_id >= curr_checkpoint.as_ref().unwrap().doc_range.end { curr_checkpoint = checkpoint_block_iter.next(); curr_block = curr_checkpoint @@ -190,6 +191,7 @@ impl StoreReader { let ret = Some((curr_block.clone(), num_skipped, reset_block_pos)); // the map block will move over the num_skipped, so we reset to 0 num_skipped = 0; + reset_block_pos = false; ret } else { None @@ -222,6 +224,10 @@ impl StoreReader { break doc_length; } else { block_start_pos += doc_length; + if block_start_pos > block[0..].len() { + println!("Hmm"); + } + cursor = &block[block_start_pos..]; } };