mirror of
https://github.com/meilisearch/meilisearch.git
synced 2025-09-05 20:26:31 +00:00
Optim O: Put instead of update
This commit is contained in:
@ -1,5 +1,5 @@
|
||||
use std::collections::{BTreeSet, HashMap, HashSet};
|
||||
use std::ops::{Range, RangeInclusive};
|
||||
use std::ops::RangeInclusive;
|
||||
use std::panic::{catch_unwind, AssertUnwindSafe};
|
||||
use std::sync::atomic::Ordering;
|
||||
|
||||
@ -805,29 +805,7 @@ impl IndexScheduler {
|
||||
self.queue.batches.finished_at,
|
||||
)?;
|
||||
|
||||
// 9. Remove tasks from indexes, statuses, and kinds
|
||||
progress.update_progress(TaskDeletionProgress::DeletingTasksMetadata);
|
||||
let (atomic_progress, task_progress) = AtomicTaskStep::new(
|
||||
(affected_indexes.len() + affected_statuses.len() + affected_kinds.len()) as u32,
|
||||
);
|
||||
progress.update_progress(task_progress);
|
||||
|
||||
for index in affected_indexes.iter() {
|
||||
self.queue.tasks.update_index(wtxn, index, |bitmap| *bitmap -= &to_delete_tasks)?;
|
||||
atomic_progress.fetch_add(1, Ordering::Relaxed);
|
||||
}
|
||||
|
||||
for status in affected_statuses.iter() {
|
||||
self.queue.tasks.update_status(wtxn, *status, |bitmap| *bitmap -= &to_delete_tasks)?;
|
||||
atomic_progress.fetch_add(1, Ordering::Relaxed);
|
||||
}
|
||||
|
||||
for kind in affected_kinds.iter() {
|
||||
self.queue.tasks.update_kind(wtxn, *kind, |bitmap| *bitmap -= &to_delete_tasks)?;
|
||||
atomic_progress.fetch_add(1, Ordering::Relaxed);
|
||||
}
|
||||
|
||||
// 10. Remove batches metadata from indexes, statuses, and kinds
|
||||
// 9. Remove batches metadata from indexes, statuses, and kinds
|
||||
progress.update_progress(TaskDeletionProgress::DeletingBatchesMetadata);
|
||||
|
||||
for (index, batches) in to_remove_from_indexes {
|
||||
@ -848,6 +826,31 @@ impl IndexScheduler {
|
||||
})?;
|
||||
}
|
||||
|
||||
// 10. Remove tasks from indexes, statuses, and kinds
|
||||
progress.update_progress(TaskDeletionProgress::DeletingTasksMetadata);
|
||||
let (atomic_progress, task_progress) = AtomicTaskStep::new(
|
||||
(affected_indexes.len() + affected_statuses.len() + affected_kinds.len()) as u32,
|
||||
);
|
||||
progress.update_progress(task_progress);
|
||||
|
||||
for (index, mut previous_tasks) in affected_indexes_tasks.into_iter() {
|
||||
previous_tasks -= &to_delete_tasks;
|
||||
self.queue.tasks.index_tasks.put(wtxn, index, &previous_tasks)?;
|
||||
atomic_progress.fetch_add(1, Ordering::Relaxed);
|
||||
}
|
||||
|
||||
for (status, mut previous_tasks) in affected_statuses_tasks.into_iter() {
|
||||
previous_tasks -= &to_delete_tasks;
|
||||
self.queue.tasks.status.put(wtxn, &status, &previous_tasks)?;
|
||||
atomic_progress.fetch_add(1, Ordering::Relaxed);
|
||||
}
|
||||
|
||||
for (kind, mut previous_tasks) in affected_kinds_tasks.into_iter() {
|
||||
previous_tasks -= &to_delete_tasks;
|
||||
self.queue.tasks.kind.put(wtxn, &kind, &previous_tasks)?;
|
||||
atomic_progress.fetch_add(1, Ordering::Relaxed);
|
||||
}
|
||||
|
||||
// 11. Delete tasks
|
||||
progress.update_progress(TaskDeletionProgress::DeletingTasks);
|
||||
let (atomic_progress, task_progress) =
|
||||
|
Reference in New Issue
Block a user