Make version constants u32

This commit is contained in:
Louis Dureuil 2025-04-24 14:17:12 +02:00
parent 29b947ee43
commit 49add50cb3
No known key found for this signature in database
12 changed files with 46 additions and 70 deletions

View File

@ -41,11 +41,8 @@ pub fn snapshot_index_scheduler(scheduler: &IndexScheduler) -> String {
let mut snap = String::new(); let mut snap = String::new();
let indx_sched_version = version.get_version(&rtxn).unwrap(); let indx_sched_version = version.get_version(&rtxn).unwrap();
let latest_version = ( let latest_version =
versioning::VERSION_MAJOR.parse().unwrap(), (versioning::VERSION_MAJOR, versioning::VERSION_MINOR, versioning::VERSION_PATCH);
versioning::VERSION_MINOR.parse().unwrap(),
versioning::VERSION_PATCH.parse().unwrap(),
);
if indx_sched_version != Some(latest_version) { if indx_sched_version != Some(latest_version) {
snap.push_str(&format!("index scheduler running on version {indx_sched_version:?}\n")); snap.push_str(&format!("index scheduler running on version {indx_sched_version:?}\n"));
} }

View File

@ -114,12 +114,8 @@ impl IndexScheduler {
auto_upgrade: true, // Don't cost much and will ensure the happy path works auto_upgrade: true, // Don't cost much and will ensure the happy path works
embedding_cache_cap: 10, embedding_cache_cap: 10,
}; };
let version = configuration(&mut options).unwrap_or_else(|| { let version = configuration(&mut options).unwrap_or({
( (versioning::VERSION_MAJOR, versioning::VERSION_MINOR, versioning::VERSION_PATCH)
versioning::VERSION_MAJOR.parse().unwrap(),
versioning::VERSION_MINOR.parse().unwrap(),
versioning::VERSION_PATCH.parse().unwrap(),
)
}); });
std::fs::create_dir_all(&options.auth_path).unwrap(); std::fs::create_dir_all(&options.auth_path).unwrap();

View File

@ -104,10 +104,6 @@ impl UpgradeIndexScheduler for ToCurrentNoOp {
} }
fn target_version(&self) -> (u32, u32, u32) { fn target_version(&self) -> (u32, u32, u32) {
( (VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH)
VERSION_MAJOR.parse().unwrap(),
VERSION_MINOR.parse().unwrap(),
VERSION_PATCH.parse().unwrap(),
)
} }
} }

View File

@ -39,9 +39,9 @@ impl Versioning {
} }
pub fn set_current_version(&self, wtxn: &mut RwTxn) -> Result<(), heed::Error> { pub fn set_current_version(&self, wtxn: &mut RwTxn) -> Result<(), heed::Error> {
let major = versioning::VERSION_MAJOR.parse().unwrap(); let major = versioning::VERSION_MAJOR;
let minor = versioning::VERSION_MINOR.parse().unwrap(); let minor = versioning::VERSION_MINOR;
let patch = versioning::VERSION_PATCH.parse().unwrap(); let patch = versioning::VERSION_PATCH;
self.set_version(wtxn, (major, minor, patch)) self.set_version(wtxn, (major, minor, patch))
} }
@ -64,9 +64,9 @@ impl Versioning {
}; };
wtxn.commit()?; wtxn.commit()?;
let bin_major: u32 = versioning::VERSION_MAJOR.parse().unwrap(); let bin_major: u32 = versioning::VERSION_MAJOR;
let bin_minor: u32 = versioning::VERSION_MINOR.parse().unwrap(); let bin_minor: u32 = versioning::VERSION_MINOR;
let bin_patch: u32 = versioning::VERSION_PATCH.parse().unwrap(); let bin_patch: u32 = versioning::VERSION_PATCH;
let to = (bin_major, bin_minor, bin_patch); let to = (bin_major, bin_minor, bin_patch);
if from != to { if from != to {

View File

@ -272,9 +272,9 @@ impl KindWithContent {
KindWithContent::UpgradeDatabase { from } => Some(Details::UpgradeDatabase { KindWithContent::UpgradeDatabase { from } => Some(Details::UpgradeDatabase {
from: (from.0, from.1, from.2), from: (from.0, from.1, from.2),
to: ( to: (
versioning::VERSION_MAJOR.parse().unwrap(), versioning::VERSION_MAJOR,
versioning::VERSION_MINOR.parse().unwrap(), versioning::VERSION_MINOR,
versioning::VERSION_PATCH.parse().unwrap(), versioning::VERSION_PATCH,
), ),
}), }),
} }
@ -338,9 +338,9 @@ impl KindWithContent {
KindWithContent::UpgradeDatabase { from } => Some(Details::UpgradeDatabase { KindWithContent::UpgradeDatabase { from } => Some(Details::UpgradeDatabase {
from: *from, from: *from,
to: ( to: (
versioning::VERSION_MAJOR.parse().unwrap(), versioning::VERSION_MAJOR,
versioning::VERSION_MINOR.parse().unwrap(), versioning::VERSION_MINOR,
versioning::VERSION_PATCH.parse().unwrap(), versioning::VERSION_PATCH,
), ),
}), }),
} }
@ -386,9 +386,9 @@ impl From<&KindWithContent> for Option<Details> {
KindWithContent::UpgradeDatabase { from } => Some(Details::UpgradeDatabase { KindWithContent::UpgradeDatabase { from } => Some(Details::UpgradeDatabase {
from: *from, from: *from,
to: ( to: (
versioning::VERSION_MAJOR.parse().unwrap(), versioning::VERSION_MAJOR,
versioning::VERSION_MINOR.parse().unwrap(), versioning::VERSION_MINOR,
versioning::VERSION_PATCH.parse().unwrap(), versioning::VERSION_PATCH,
), ),
}), }),
} }

View File

@ -8,9 +8,7 @@ use tempfile::NamedTempFile;
/// The name of the file that contains the version of the database. /// The name of the file that contains the version of the database.
pub const VERSION_FILE_NAME: &str = "VERSION"; pub const VERSION_FILE_NAME: &str = "VERSION";
pub static VERSION_MAJOR: &str = env!("CARGO_PKG_VERSION_MAJOR"); pub use milli::constants::{VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH};
pub static VERSION_MINOR: &str = env!("CARGO_PKG_VERSION_MINOR");
pub static VERSION_PATCH: &str = env!("CARGO_PKG_VERSION_PATCH");
/// Persists the version of the current Meilisearch binary to a VERSION file /// Persists the version of the current Meilisearch binary to a VERSION file
pub fn create_current_version_file(db_path: &Path) -> anyhow::Result<()> { pub fn create_current_version_file(db_path: &Path) -> anyhow::Result<()> {
@ -19,9 +17,9 @@ pub fn create_current_version_file(db_path: &Path) -> anyhow::Result<()> {
pub fn create_version_file( pub fn create_version_file(
db_path: &Path, db_path: &Path,
major: &str, major: u32,
minor: &str, minor: u32,
patch: &str, patch: u32,
) -> anyhow::Result<()> { ) -> anyhow::Result<()> {
let version_path = db_path.join(VERSION_FILE_NAME); let version_path = db_path.join(VERSION_FILE_NAME);
// In order to persist the file later we must create it in the `data.ms` and not in `/tmp` // In order to persist the file later we must create it in the `data.ms` and not in `/tmp`

View File

@ -235,10 +235,7 @@ pub fn setup_meilisearch(opt: &Opt) -> anyhow::Result<(Arc<IndexScheduler>, Arc<
auto_upgrade: opt.experimental_dumpless_upgrade, auto_upgrade: opt.experimental_dumpless_upgrade,
embedding_cache_cap: opt.experimental_embedding_cache_entries, embedding_cache_cap: opt.experimental_embedding_cache_entries,
}; };
let bin_major: u32 = VERSION_MAJOR.parse().unwrap(); let binary_version = (VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH);
let bin_minor: u32 = VERSION_MINOR.parse().unwrap();
let bin_patch: u32 = VERSION_PATCH.parse().unwrap();
let binary_version = (bin_major, bin_minor, bin_patch);
let empty_db = is_empty_db(&opt.db_path); let empty_db = is_empty_db(&opt.db_path);
let (index_scheduler, auth_controller) = if let Some(ref snapshot_path) = opt.import_snapshot { let (index_scheduler, auth_controller) = if let Some(ref snapshot_path) = opt.import_snapshot {

View File

@ -54,7 +54,7 @@ async fn version_requires_downgrade() {
std::fs::create_dir_all(&db_path).unwrap(); std::fs::create_dir_all(&db_path).unwrap();
let major = meilisearch_types::versioning::VERSION_MAJOR; let major = meilisearch_types::versioning::VERSION_MAJOR;
let minor = meilisearch_types::versioning::VERSION_MINOR; let minor = meilisearch_types::versioning::VERSION_MINOR;
let patch = meilisearch_types::versioning::VERSION_PATCH.parse::<u32>().unwrap() + 1; let patch = meilisearch_types::versioning::VERSION_PATCH + 1;
std::fs::write(db_path.join("VERSION"), format!("{major}.{minor}.{patch}")).unwrap(); std::fs::write(db_path.join("VERSION"), format!("{major}.{minor}.{patch}")).unwrap();
let options = Opt { experimental_dumpless_upgrade: true, ..default_settings }; let options = Opt { experimental_dumpless_upgrade: true, ..default_settings };
let err = Server::new_with_options(options).await.map(|_| ()).unwrap_err(); let err = Server::new_with_options(options).await.map(|_| ()).unwrap_err();

View File

@ -49,15 +49,10 @@ impl OfflineUpgrade {
const LAST_SUPPORTED_UPGRADE_TO_VERSION: &str = "1.12.7"; const LAST_SUPPORTED_UPGRADE_TO_VERSION: &str = "1.12.7";
let upgrade_list = [ let upgrade_list = [
( (v1_9_to_v1_10 as fn(&Path, u32, u32, u32) -> Result<(), anyhow::Error>, 1, 10, 0),
v1_9_to_v1_10 as fn(&Path, u32, u32, u32) -> Result<(), anyhow::Error>, (v1_10_to_v1_11, 1, 11, 0),
"1", (v1_11_to_v1_12, 1, 12, 0),
"10", (v1_12_to_v1_12_3, 1, 12, 3),
"0",
),
(v1_10_to_v1_11, "1", "11", "0"),
(v1_11_to_v1_12, "1", "12", "0"),
(v1_12_to_v1_12_3, "1", "12", "3"),
]; ];
let no_upgrade: usize = upgrade_list.len(); let no_upgrade: usize = upgrade_list.len();
@ -95,13 +90,8 @@ impl OfflineUpgrade {
if start_at == no_upgrade { if start_at == no_upgrade {
println!("No upgrade operation to perform, writing VERSION file"); println!("No upgrade operation to perform, writing VERSION file");
create_version_file( create_version_file(&self.db_path, target_major, target_minor, target_patch)
&self.db_path, .context("while writing VERSION file after the upgrade")?;
&target_major.to_string(),
&target_minor.to_string(),
&target_patch.to_string(),
)
.context("while writing VERSION file after the upgrade")?;
println!("Success"); println!("Success");
return Ok(()); return Ok(());
} }

View File

@ -1,6 +1,13 @@
pub static VERSION_MAJOR: &str = env!("CARGO_PKG_VERSION_MAJOR"); pub const VERSION_MAJOR: u32 = parse_u32(env!("CARGO_PKG_VERSION_MAJOR"));
pub static VERSION_MINOR: &str = env!("CARGO_PKG_VERSION_MINOR"); pub const VERSION_MINOR: u32 = parse_u32(env!("CARGO_PKG_VERSION_MINOR"));
pub static VERSION_PATCH: &str = env!("CARGO_PKG_VERSION_PATCH"); pub const VERSION_PATCH: u32 = parse_u32(env!("CARGO_PKG_VERSION_PATCH"));
const fn parse_u32(s: &str) -> u32 {
match u32::from_str_radix(s, 10) {
Ok(version) => version,
Err(_) => panic!("could not parse as u32"),
}
}
pub const RESERVED_VECTORS_FIELD_NAME: &str = "_vectors"; pub const RESERVED_VECTORS_FIELD_NAME: &str = "_vectors";
pub const RESERVED_GEO_FIELD_NAME: &str = "_geo"; pub const RESERVED_GEO_FIELD_NAME: &str = "_geo";

View File

@ -262,9 +262,9 @@ impl Index {
this.put_version( this.put_version(
&mut wtxn, &mut wtxn,
( (
constants::VERSION_MAJOR.parse().unwrap(), constants::VERSION_MAJOR,
constants::VERSION_MINOR.parse().unwrap(), constants::VERSION_MINOR,
constants::VERSION_PATCH.parse().unwrap(), constants::VERSION_PATCH,
), ),
)?; )?;
} }

View File

@ -1,7 +1,6 @@
use heed::RwTxn; use heed::RwTxn;
use super::UpgradeIndex; use super::UpgradeIndex;
use crate::constants::{VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH};
use crate::database_stats::DatabaseStats; use crate::database_stats::DatabaseStats;
use crate::progress::Progress; use crate::progress::Progress;
use crate::{make_enum_progress, Index, Result}; use crate::{make_enum_progress, Index, Result};
@ -51,10 +50,6 @@ impl UpgradeIndex for V1_13_1_To_Latest_V1_13 {
} }
fn target_version(&self) -> (u32, u32, u32) { fn target_version(&self) -> (u32, u32, u32) {
( (1, 13, 3)
VERSION_MAJOR.parse().unwrap(),
VERSION_MINOR.parse().unwrap(),
VERSION_PATCH.parse().unwrap(),
)
} }
} }