split the run function in two

This commit is contained in:
Tamo 2022-09-15 12:47:09 +02:00 committed by Clément Renault
parent a8b18b2c96
commit 9ff0fe952e
No known key found for this signature in database
GPG Key ID: 92ADA4E935E71FA4

View File

@ -201,45 +201,50 @@ impl IndexScheduler {
} }
/// This worker function must be run in a different thread and must be run only once. /// This worker function must be run in a different thread and must be run only once.
fn run(&self) { fn run(&self) -> ! {
loop { loop {
self.wake_up.wait(); self.wake_up.wait();
let mut wtxn = match self.env.write_txn() { self.tick()
Ok(wtxn) => wtxn, }
Err(e) => { }
log::error!("{}", e);
continue;
}
};
let batch = match self.create_next_batch(&wtxn) {
Ok(Some(batch)) => batch,
Ok(None) => continue,
Err(e) => {
log::error!("{}", e);
continue;
}
};
// 1. store the starting date with the bitmap of processing tasks
// 2. update the tasks with a starting date *but* do not write anything on disk
// 3. process the tasks /// Create and execute and store the result of one batch of registered tasks.
let _res = self.process_batch(&mut wtxn, batch); fn tick(&self) {
let mut wtxn = match self.env.write_txn() {
Ok(wtxn) => wtxn,
Err(e) => {
log::error!("{}", e);
return;
}
};
let batch = match self.create_next_batch(&wtxn) {
Ok(Some(batch)) => batch,
Ok(None) => return,
Err(e) => {
log::error!("{}", e);
return;
}
};
// 1. store the starting date with the bitmap of processing tasks
// 2. update the tasks with a starting date *but* do not write anything on disk
// 4. store the updated tasks on disk // 3. process the tasks
let _res = self.process_batch(&mut wtxn, batch);
// TODO: TAMO: do this later // 4. store the updated tasks on disk
// must delete the file on disk
// in case of error, must update the tasks with the error
// in case of « success » we must update all the task on disk
// self.handle_batch_result(res);
match wtxn.commit() { // TODO: TAMO: do this later
Ok(()) => log::info!("A batch of tasks was successfully completed."), // must delete the file on disk
Err(e) => { // in case of error, must update the tasks with the error
log::error!("{}", e); // in case of « success » we must update all the task on disk
continue; // self.handle_batch_result(res);
}
match wtxn.commit() {
Ok(()) => log::info!("A batch of tasks was successfully completed."),
Err(e) => {
log::error!("{}", e);
return;
} }
} }
} }