wip porting the index back in the scheduler

This commit is contained in:
Irevoire 2022-09-07 20:08:07 +02:00 committed by Clément Renault
parent a2587149f4
commit e7b2b9306a
No known key found for this signature in database
GPG key ID: 92ADA4E935E71FA4
14 changed files with 2493 additions and 21 deletions

View file

@ -44,6 +44,36 @@ impl IndexScheduler {
.collect::<Result<_>>()
}
pub(crate) fn update_task(&self, wtxn: &mut RwTxn, task: Task) -> Result<()> {
let old_task = self
.get_task(wtxn, task.uid)?
.ok_or(Error::CorruptedTaskQueue)?;
if old_task.status != task.status {
self.update_status(wtxn, old_task.status, |bitmap| {
bitmap.remove(task.uid);
bitmap
})?;
self.update_status(wtxn, task.status, |bitmap| {
bitmap.insert(task.uid);
bitmap
})?;
}
if old_task.kind.as_kind() != task.kind.as_kind() {
self.update_kind(wtxn, old_task.kind.as_kind(), |bitmap| {
bitmap.remove(task.uid);
bitmap
})?;
self.update_kind(wtxn, task.kind.as_kind(), |bitmap| {
bitmap.insert(task.uid);
bitmap
})?;
}
Ok(())
}
pub(crate) fn get_index(&self, rtxn: &RoTxn, index: &str) -> Result<RoaringBitmap> {
Ok(self.index_tasks.get(&rtxn, index)?.unwrap_or_default())
}