diff --git a/crates/meilisearch/tests/upgrade/v1_12/v1_12_0.rs b/crates/meilisearch/tests/upgrade/v1_12/v1_12_0.rs index b42e4e8f8..50bd79e00 100644 --- a/crates/meilisearch/tests/upgrade/v1_12/v1_12_0.rs +++ b/crates/meilisearch/tests/upgrade/v1_12/v1_12_0.rs @@ -269,65 +269,3 @@ async fn check_the_index_features(server: &Server) { snapshot!(results, name: "search_with_sort_and_filter"); } -#[actix_rt::test] -#[cfg(target_os = "macos")] // The test should work everywhere but in the github CI it only works on macOS -async fn import_v1_12_0_with_version_file_error() { - use index_scheduler::versioning::Versioning; - use meilisearch_types::heed; - - let temp = tempfile::tempdir().unwrap(); - let original_db_path = exist_relative_path!("tests/upgrade/v1_12/v1_12_0.ms"); - let options = Opt { - experimental_dumpless_upgrade: true, - master_key: Some("kefir".to_string()), - ..default_settings(temp.path()) - }; - copy_dir_all(original_db_path, &options.db_path).unwrap(); - - // We're going to drop the write permission on the VERSION file to force Meilisearch to fail its startup. - let version_path = options.db_path.join("VERSION"); - - let file = std::fs::File::options().write(true).open(&version_path).unwrap(); - let mut perms = file.metadata().unwrap().permissions(); - perms.set_readonly(true); - file.set_permissions(perms).unwrap(); - file.sync_all().unwrap(); - drop(file); - - let err = Server::new_with_options(options.clone()).await.map(|_| ()).unwrap_err(); - snapshot!(err, @"Permission denied (os error 13)"); - - let env = unsafe { - heed::EnvOpenOptions::new() - .max_dbs(Versioning::nb_db()) - .map_size(1024 * 1024 * 1024) - .open(options.db_path.join("tasks")) - } - .unwrap(); - - // Even though the v1.12 don't have a version in its index-scheduler initially, after - // failing the startup the version should have been written before even trying to - // update the version file - let mut wtxn = env.write_txn().unwrap(); - let versioning = Versioning::raw_new(&env, &mut wtxn).unwrap(); - let version = versioning.get_version(&wtxn).unwrap().unwrap(); - snapshot!(format!("{version:?}"), @"(1, 12, 0)"); - drop(wtxn); - env.prepare_for_closing().wait(); - - // Finally we check that even after a first failure the engine can still start and work as expected - let file = std::fs::File::open(&version_path).unwrap(); - let mut perms = file.metadata().unwrap().permissions(); - #[allow(clippy::permissions_set_readonly_false)] - perms.set_readonly(false); - file.set_permissions(perms).unwrap(); - file.sync_all().unwrap(); - drop(file); - - let mut server = Server::new_with_options(options).await.unwrap(); - server.use_api_key("kefir"); - - check_the_keys(&server).await; - check_the_index_scheduler(&server).await; - check_the_index_features(&server).await; -}