diff --git a/index-scheduler/src/lib.rs b/index-scheduler/src/lib.rs index 3bde39040..b0ecef0f3 100644 --- a/index-scheduler/src/lib.rs +++ b/index-scheduler/src/lib.rs @@ -822,7 +822,7 @@ impl IndexScheduler { // if the task doesn't delete anything and 50% of the task queue is full, we must refuse to enqueue the incomming task if !matches!(&kind, KindWithContent::TaskDeletion { tasks, .. } if !tasks.is_empty()) - && (self.env.real_disk_size()? * 100) / self.env.map_size()? as u64 > 50 + && (self.env.non_free_pages_size()? * 100) / self.env.map_size()? as u64 > 50 { return Err(Error::NoSpaceLeftInTaskQueue); } diff --git a/meilisearch/tests/tasks/mod.rs b/meilisearch/tests/tasks/mod.rs index 88f83bb70..40093dc41 100644 --- a/meilisearch/tests/tasks/mod.rs +++ b/meilisearch/tests/tasks/mod.rs @@ -1050,7 +1050,7 @@ async fn test_task_queue_is_full() { "###); // But we should still be able to register tasks deletion IF they delete something - let (result, code) = server.delete_tasks("uids=0").await; + let (result, code) = server.delete_tasks("uids=*").await; snapshot!(code, @"200 OK"); snapshot!(json_string!(result, { ".enqueuedAt" => "[date]", ".taskUid" => "uid" }), @r###" { @@ -1062,6 +1062,22 @@ async fn test_task_queue_is_full() { } "###); + let result = server.wait_task(result["taskUid"].as_u64().unwrap()).await; + snapshot!(json_string!(result["status"]), @r###""succeeded""###); + + // Now we should be able to register tasks again + let (result, code) = server.create_index(json!({ "uid": "doggo" })).await; + snapshot!(code, @"202 Accepted"); + snapshot!(json_string!(result, { ".enqueuedAt" => "[date]", ".taskUid" => "uid" }), @r###" + { + "taskUid": "uid", + "indexUid": "doggo", + "status": "enqueued", + "type": "indexCreation", + "enqueuedAt": "[date]" + } + "###); + // we're going to fill up the queue once again loop { let (res, code) = server.delete_tasks("uids=0").await;