diff --git a/index-scheduler/src/lib.rs b/index-scheduler/src/lib.rs index 4d95aa8e5..69f8e7f5a 100644 --- a/index-scheduler/src/lib.rs +++ b/index-scheduler/src/lib.rs @@ -589,10 +589,12 @@ impl IndexScheduler { ) -> Result { let mut tasks = self.get_task_ids(rtxn, query)?; - // If the query contains a list of index_uid, then we must exclude IndexSwap tasks - // from the result (because it is not publicly associated with any index) + // If the query contains a list of `index_uid`, then we must exclude all the kind that + // arn't associated to one and only one index. if query.index_uid.is_some() { - tasks -= self.get_kind(rtxn, Kind::IndexSwap)? + for kind in enum_iterator::all::().filter(|kind| !kind.related_to_one_index()) { + tasks -= self.get_kind(rtxn, kind)?; + } } // Any task that is internally associated with a non-authorized index diff --git a/meilisearch-types/src/tasks.rs b/meilisearch-types/src/tasks.rs index a5c990a2f..aafa3008e 100644 --- a/meilisearch-types/src/tasks.rs +++ b/meilisearch-types/src/tasks.rs @@ -381,6 +381,24 @@ pub enum Kind { SnapshotCreation, } +impl Kind { + pub fn related_to_one_index(&self) -> bool { + match self { + Kind::DocumentAdditionOrUpdate + | Kind::DocumentDeletion + | Kind::SettingsUpdate + | Kind::IndexCreation + | Kind::IndexDeletion + | Kind::IndexUpdate => true, + Kind::IndexSwap + | Kind::TaskCancelation + | Kind::TaskDeletion + | Kind::DumpCreation + | Kind::SnapshotCreation => false, + } + } +} + impl FromStr for Kind { type Err = ResponseError;