From b722da303a4a43264135fb1a7ea616008d62b93e Mon Sep 17 00:00:00 2001 From: Louis Dureuil Date: Thu, 25 Sep 2025 09:54:58 +0200 Subject: [PATCH 1/3] Do not start from the end of the finished tasks when selecting the tasks to delete --- crates/index-scheduler/src/queue/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/index-scheduler/src/queue/mod.rs b/crates/index-scheduler/src/queue/mod.rs index 9f680ff54..880a99392 100644 --- a/crates/index-scheduler/src/queue/mod.rs +++ b/crates/index-scheduler/src/queue/mod.rs @@ -310,7 +310,7 @@ impl Queue { | self.tasks.status.get(wtxn, &Status::Failed)?.unwrap_or_default() | self.tasks.status.get(wtxn, &Status::Canceled)?.unwrap_or_default(); - let to_delete = RoaringBitmap::from_iter(finished.into_iter().rev().take(100_000)); + let to_delete = RoaringBitmap::from_iter(finished.into_iter().take(100_000)); // /!\ the len must be at least 2 or else we might enter an infinite loop where we only delete // the deletion tasks we enqueued ourselves. From 4beb4520276538bfa06f73a7f7a706a75abb9826 Mon Sep 17 00:00:00 2001 From: Louis Dureuil Date: Thu, 25 Sep 2025 10:16:30 +0200 Subject: [PATCH 2/3] Optimize by using `from_sorted_iter` Co-authored-by: Tamo --- crates/index-scheduler/src/queue/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/index-scheduler/src/queue/mod.rs b/crates/index-scheduler/src/queue/mod.rs index 880a99392..10a8e8439 100644 --- a/crates/index-scheduler/src/queue/mod.rs +++ b/crates/index-scheduler/src/queue/mod.rs @@ -310,7 +310,7 @@ impl Queue { | self.tasks.status.get(wtxn, &Status::Failed)?.unwrap_or_default() | self.tasks.status.get(wtxn, &Status::Canceled)?.unwrap_or_default(); - let to_delete = RoaringBitmap::from_iter(finished.into_iter().take(100_000)); + let to_delete = RoaringBitmap::from_sorted_iter(finished.into_iter().take(100_000)).unwrap(); // /!\ the len must be at least 2 or else we might enter an infinite loop where we only delete // the deletion tasks we enqueued ourselves. From 94eabd34e64f2136b2da976ef464be09acab5344 Mon Sep 17 00:00:00 2001 From: Tamo Date: Thu, 25 Sep 2025 11:01:53 +0200 Subject: [PATCH 3/3] fmt --- crates/index-scheduler/src/queue/mod.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/crates/index-scheduler/src/queue/mod.rs b/crates/index-scheduler/src/queue/mod.rs index 10a8e8439..39406d68e 100644 --- a/crates/index-scheduler/src/queue/mod.rs +++ b/crates/index-scheduler/src/queue/mod.rs @@ -310,7 +310,8 @@ impl Queue { | self.tasks.status.get(wtxn, &Status::Failed)?.unwrap_or_default() | self.tasks.status.get(wtxn, &Status::Canceled)?.unwrap_or_default(); - let to_delete = RoaringBitmap::from_sorted_iter(finished.into_iter().take(100_000)).unwrap(); + let to_delete = + RoaringBitmap::from_sorted_iter(finished.into_iter().take(100_000)).unwrap(); // /!\ the len must be at least 2 or else we might enter an infinite loop where we only delete // the deletion tasks we enqueued ourselves.