mirror of
https://github.com/meilisearch/MeiliSearch
synced 2025-01-30 23:27:36 +01:00
44 lines
1.3 KiB
Rust
44 lines
1.3 KiB
Rust
|
use std::path::Path;
|
||
|
|
||
|
use meilisearch_types::{
|
||
|
heed,
|
||
|
tasks::{KindWithContent, Status, Task},
|
||
|
};
|
||
|
use time::OffsetDateTime;
|
||
|
use tracing::info;
|
||
|
|
||
|
use crate::queue::TaskQueue;
|
||
|
|
||
|
pub fn upgrade_task_queue(tasks_path: &Path, version: (u32, u32, u32)) -> anyhow::Result<()> {
|
||
|
info!("Upgrading the task queue");
|
||
|
let env = unsafe {
|
||
|
heed::EnvOpenOptions::new()
|
||
|
.max_dbs(19)
|
||
|
// Since that's the only database memory-mapped currently we don't need to check the budget yet
|
||
|
.map_size(100 * 1024 * 1024)
|
||
|
.open(tasks_path)
|
||
|
}?;
|
||
|
let mut wtxn = env.write_txn()?;
|
||
|
let queue = TaskQueue::new(&env, &mut wtxn)?;
|
||
|
let uid = queue.next_task_id(&wtxn)?;
|
||
|
queue.register(
|
||
|
&mut wtxn,
|
||
|
&Task {
|
||
|
uid,
|
||
|
batch_uid: None,
|
||
|
enqueued_at: OffsetDateTime::now_utc(),
|
||
|
started_at: None,
|
||
|
finished_at: None,
|
||
|
error: None,
|
||
|
canceled_by: None,
|
||
|
details: None,
|
||
|
status: Status::Enqueued,
|
||
|
kind: KindWithContent::UpgradeDatabase { from: version },
|
||
|
},
|
||
|
)?;
|
||
|
wtxn.commit()?;
|
||
|
// Should be pretty much instantaneous since we're the only one reading this env
|
||
|
env.prepare_for_closing().wait();
|
||
|
Ok(())
|
||
|
}
|