mirror of
https://github.com/meilisearch/meilisearch.git
synced 2025-06-07 04:35:37 +00:00
Merge pull request #5565 from meilisearch/fix-0-batched-task
Fix 0 batched task
This commit is contained in:
commit
cc2011a27f
@ -383,6 +383,11 @@ impl IndexScheduler {
|
|||||||
/// This function will execute in a different thread and must be called
|
/// This function will execute in a different thread and must be called
|
||||||
/// only once per index scheduler.
|
/// only once per index scheduler.
|
||||||
fn run(&self) {
|
fn run(&self) {
|
||||||
|
// If the number of batched tasks is 0, we don't need to run the scheduler at all.
|
||||||
|
// It will never be able to process any tasks.
|
||||||
|
if self.scheduler.max_number_of_batched_tasks == 0 {
|
||||||
|
return;
|
||||||
|
}
|
||||||
let run = self.private_clone();
|
let run = self.private_clone();
|
||||||
std::thread::Builder::new()
|
std::thread::Builder::new()
|
||||||
.name(String::from("scheduler"))
|
.name(String::from("scheduler"))
|
||||||
|
@ -0,0 +1,63 @@
|
|||||||
|
---
|
||||||
|
source: crates/index-scheduler/src/scheduler/test.rs
|
||||||
|
---
|
||||||
|
### Autobatching Enabled = true
|
||||||
|
### Processing batch None:
|
||||||
|
[]
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
### All Tasks:
|
||||||
|
0 {uid: 0, batch_uid: 0, status: succeeded, details: { primary_key: None }, kind: IndexCreation { index_uid: "doggos", primary_key: None }}
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
### Status:
|
||||||
|
enqueued []
|
||||||
|
succeeded [0,]
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
### Kind:
|
||||||
|
"indexCreation" [0,]
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
### Index Tasks:
|
||||||
|
doggos [0,]
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
### Index Mapper:
|
||||||
|
doggos: { number_of_documents: 0, field_distribution: {} }
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
### Canceled By:
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
### Enqueued At:
|
||||||
|
[timestamp] [0,]
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
### Started At:
|
||||||
|
[timestamp] [0,]
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
### Finished At:
|
||||||
|
[timestamp] [0,]
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
### All Batches:
|
||||||
|
0 {uid: 0, details: {}, stats: {"totalNbTasks":1,"status":{"succeeded":1},"types":{"indexCreation":1},"indexUids":{"doggos":1}}, stop reason: "task with id 0 of type `indexCreation` cannot be batched", }
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
### Batch to tasks mapping:
|
||||||
|
0 [0,]
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
### Batches Status:
|
||||||
|
succeeded [0,]
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
### Batches Kind:
|
||||||
|
"indexCreation" [0,]
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
### Batches Index Tasks:
|
||||||
|
doggos [0,]
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
### Batches Enqueued At:
|
||||||
|
[timestamp] [0,]
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
### Batches Started At:
|
||||||
|
[timestamp] [0,]
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
### Batches Finished At:
|
||||||
|
[timestamp] [0,]
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
### File Store:
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
@ -0,0 +1,51 @@
|
|||||||
|
---
|
||||||
|
source: crates/index-scheduler/src/scheduler/test.rs
|
||||||
|
---
|
||||||
|
### Autobatching Enabled = true
|
||||||
|
### Processing batch None:
|
||||||
|
[]
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
### All Tasks:
|
||||||
|
0 {uid: 0, status: enqueued, details: { primary_key: None }, kind: IndexCreation { index_uid: "doggos", primary_key: None }}
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
### Status:
|
||||||
|
enqueued [0,]
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
### Kind:
|
||||||
|
"indexCreation" [0,]
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
### Index Tasks:
|
||||||
|
doggos [0,]
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
### Index Mapper:
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
### Canceled By:
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
### Enqueued At:
|
||||||
|
[timestamp] [0,]
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
### Started At:
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
### Finished At:
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
### All Batches:
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
### Batch to tasks mapping:
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
### Batches Status:
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
### Batches Kind:
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
### Batches Index Tasks:
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
### Batches Enqueued At:
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
### Batches Started At:
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
### Batches Finished At:
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
### File Store:
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
@ -929,3 +929,30 @@ fn create_and_list_index() {
|
|||||||
]
|
]
|
||||||
"###);
|
"###);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_scheduler_doesnt_run_with_zero_batched_tasks() {
|
||||||
|
let (index_scheduler, mut handle) = IndexScheduler::test_with_custom_config(vec![], |config| {
|
||||||
|
config.max_number_of_batched_tasks = 0;
|
||||||
|
None
|
||||||
|
});
|
||||||
|
|
||||||
|
handle.scheduler_is_down();
|
||||||
|
|
||||||
|
// Register a task
|
||||||
|
index_scheduler
|
||||||
|
.register(
|
||||||
|
KindWithContent::IndexCreation { index_uid: S("doggos"), primary_key: None },
|
||||||
|
None,
|
||||||
|
false,
|
||||||
|
)
|
||||||
|
.unwrap();
|
||||||
|
snapshot!(snapshot_index_scheduler(&index_scheduler), name: "registered_task");
|
||||||
|
|
||||||
|
handle.scheduler_is_down();
|
||||||
|
|
||||||
|
// If we restart the scheduler, it should run properly.
|
||||||
|
let (index_scheduler, mut handle) = handle.restart(index_scheduler, true, vec![], |_| None);
|
||||||
|
handle.advance_n_successful_batches(1);
|
||||||
|
snapshot!(snapshot_index_scheduler(&index_scheduler), name: "after_restart");
|
||||||
|
}
|
||||||
|
@ -119,6 +119,9 @@ impl IndexScheduler {
|
|||||||
(versioning::VERSION_MAJOR, versioning::VERSION_MINOR, versioning::VERSION_PATCH)
|
(versioning::VERSION_MAJOR, versioning::VERSION_MINOR, versioning::VERSION_PATCH)
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// If the number of batched tasks is 0, the scheduler will not run and we can't do the init check.
|
||||||
|
let skip_init = options.max_number_of_batched_tasks == 0;
|
||||||
|
|
||||||
std::fs::create_dir_all(&options.auth_path).unwrap();
|
std::fs::create_dir_all(&options.auth_path).unwrap();
|
||||||
let auth_env = open_auth_store_env(&options.auth_path).unwrap();
|
let auth_env = open_auth_store_env(&options.auth_path).unwrap();
|
||||||
let index_scheduler =
|
let index_scheduler =
|
||||||
@ -127,7 +130,11 @@ impl IndexScheduler {
|
|||||||
// To be 100% consistent between all test we're going to start the scheduler right now
|
// To be 100% consistent between all test we're going to start the scheduler right now
|
||||||
// and ensure it's in the expected starting state.
|
// and ensure it's in the expected starting state.
|
||||||
let breakpoint = match receiver.recv_timeout(std::time::Duration::from_secs(10)) {
|
let breakpoint = match receiver.recv_timeout(std::time::Duration::from_secs(10)) {
|
||||||
|
Ok(b) if skip_init => {
|
||||||
|
panic!("The scheduler was not supposed to start, but it did: {b:?}.")
|
||||||
|
}
|
||||||
Ok(b) => b,
|
Ok(b) => b,
|
||||||
|
Err(_) if skip_init => (Init, false),
|
||||||
Err(RecvTimeoutError::Timeout) => {
|
Err(RecvTimeoutError::Timeout) => {
|
||||||
panic!("The scheduler seems to be waiting for a new task while your test is waiting for a breakpoint.")
|
panic!("The scheduler seems to be waiting for a new task while your test is waiting for a breakpoint.")
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user