From d7776ec82b360e6c25b7a56f0f5999f7349309a3 Mon Sep 17 00:00:00 2001 From: Mubelotix Date: Tue, 12 Aug 2025 16:47:21 +0200 Subject: [PATCH] Move function to utils --- .../src/scheduler/process_batch.rs | 29 ++----------------- crates/index-scheduler/src/utils.rs | 26 ++++++++++++++++- 2 files changed, 27 insertions(+), 28 deletions(-) diff --git a/crates/index-scheduler/src/scheduler/process_batch.rs b/crates/index-scheduler/src/scheduler/process_batch.rs index 0f83da7d4..f3cddacd2 100644 --- a/crates/index-scheduler/src/scheduler/process_batch.rs +++ b/crates/index-scheduler/src/scheduler/process_batch.rs @@ -1,5 +1,4 @@ use std::collections::{BTreeSet, HashMap, HashSet}; -use std::ops::RangeInclusive; use std::panic::{catch_unwind, AssertUnwindSafe}; use std::sync::atomic::Ordering; @@ -18,7 +17,7 @@ use crate::processing::{ InnerSwappingTwoIndexes, SwappingTheIndexes, TaskCancelationProgress, TaskDeletionProgress, UpdateIndexProgress, }; -use crate::utils::{swap_index_uid_in_task, ProcessingBatch}; +use crate::utils::{consecutive_ranges, swap_index_uid_in_task, ProcessingBatch}; use crate::{Error, IndexScheduler, Result, TaskId, BEI128}; #[derive(Debug, Default)] @@ -511,30 +510,6 @@ impl IndexScheduler { matched_tasks: &RoaringBitmap, progress: &Progress, ) -> Result { - /// Given a **sorted** iterator of `u32`, return an iterator of the ranges of consecutive values it contains. - fn consecutive_ranges( - iter: impl IntoIterator, - ) -> impl Iterator> { - let mut iter = iter.into_iter().peekable(); - - std::iter::from_fn(move || { - let start = iter.next()?; - - let mut end = start; - - while let Some(&next) = iter.peek() { - if next == end + 1 { - end = next; - iter.next(); - } else { - break; - } - } - - Some(start..=end) - }) - } - fn remove_task_datetimes( wtxn: &mut RwTxn<'_>, mut to_remove: HashMap, @@ -575,7 +550,7 @@ impl IndexScheduler { } } if let Some(delete_range_start) = delete_range_start.take() { - delete_ranges.push(delete_range_start..(max+1)); + delete_ranges.push(delete_range_start..(max + 1)); } for range in delete_ranges { diff --git a/crates/index-scheduler/src/utils.rs b/crates/index-scheduler/src/utils.rs index 5efc317b5..5579463e4 100644 --- a/crates/index-scheduler/src/utils.rs +++ b/crates/index-scheduler/src/utils.rs @@ -2,7 +2,7 @@ use crate::milli::progress::EmbedderStats; use std::collections::{BTreeSet, HashSet}; -use std::ops::Bound; +use std::ops::{Bound, RangeInclusive}; use std::sync::Arc; use meilisearch_types::batches::{Batch, BatchEnqueuedAt, BatchId, BatchStats}; @@ -159,6 +159,30 @@ impl ProcessingBatch { } } +/// Given a **sorted** iterator of `u32`, return an iterator of the ranges of consecutive values it contains. +pub(crate) fn consecutive_ranges( + iter: impl IntoIterator, +) -> impl Iterator> { + let mut iter = iter.into_iter().peekable(); + + std::iter::from_fn(move || { + let start = iter.next()?; + + let mut end = start; + + while let Some(&next) = iter.peek() { + if next == end + 1 { + end = next; + iter.next(); + } else { + break; + } + } + + Some(start..=end) + }) +} + pub(crate) fn insert_task_datetime( wtxn: &mut RwTxn, database: Database,