mirror of
https://github.com/meilisearch/MeiliSearch
synced 2025-07-04 20:37:15 +02:00
feat(lib): Reintroduce engine version file
Right now if you boot up MeiliSearch and point it to a DB directory created with a previous version of MeiliSearch the existing indexes will be deleted. This used to be prevented by a startup check which would compare the current engine version vs what was stored in the DB directory's version file, but this functionality seems to have been lost after a few refactorings of the code. In order to go back to the old behavior we'll need to reintroduce the VERSION file that used to be present; I considered reusing the metadata.json file used in the dumps feature, but this seemed like the simpler and more approach. As the intent is just to restore functionality, the implementation is quite basic. I imagine that in the future we could build on this and do things like compatibility across major/minor versions and even migrating between formats. This PR was made thanks to @mbStavola Closes #1840
This commit is contained in:
parent
fa196986c2
commit
a0e129304c
4 changed files with 91 additions and 0 deletions
|
@ -9,6 +9,7 @@ use tokio::time::sleep;
|
|||
use walkdir::WalkDir;
|
||||
|
||||
use crate::compression::from_tar_gz;
|
||||
use crate::index_controller::versioning::VERSION_FILE_NAME;
|
||||
use crate::tasks::task::Job;
|
||||
use crate::tasks::TaskStore;
|
||||
|
||||
|
@ -102,6 +103,7 @@ impl SnapshotJob {
|
|||
let temp_snapshot_dir = tempfile::tempdir()?;
|
||||
let temp_snapshot_path = temp_snapshot_dir.path();
|
||||
|
||||
self.snapshot_version_file(temp_snapshot_path)?;
|
||||
self.snapshot_meta_env(temp_snapshot_path)?;
|
||||
self.snapshot_file_store(temp_snapshot_path)?;
|
||||
self.snapshot_indexes(temp_snapshot_path)?;
|
||||
|
@ -133,6 +135,15 @@ impl SnapshotJob {
|
|||
Ok(())
|
||||
}
|
||||
|
||||
fn snapshot_version_file(&self, path: &Path) -> anyhow::Result<()> {
|
||||
let dst = path.join(VERSION_FILE_NAME);
|
||||
let src = self.src_path.join(VERSION_FILE_NAME);
|
||||
|
||||
fs::copy(src, dst)?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn snapshot_meta_env(&self, path: &Path) -> anyhow::Result<()> {
|
||||
let mut options = heed::EnvOpenOptions::new();
|
||||
options.map_size(self.meta_env_size);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue