From ee54d3171e4d4c5b69fb093ea2aa5858a086efcb Mon Sep 17 00:00:00 2001 From: Louis Dureuil Date: Thu, 21 Dec 2023 15:26:12 +0100 Subject: [PATCH] Check experimental feature at query time --- index-scheduler/src/batch.rs | 3 --- meilisearch/src/routes/indexes/settings.rs | 17 +++++++++++++++-- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/index-scheduler/src/batch.rs b/index-scheduler/src/batch.rs index c1c7af7ac..f6ed8392c 100644 --- a/index-scheduler/src/batch.rs +++ b/index-scheduler/src/batch.rs @@ -1351,9 +1351,6 @@ impl IndexScheduler { for (task, (_, settings)) in tasks.iter_mut().zip(settings) { let checked_settings = settings.clone().check(); - if matches!(checked_settings.embedders, milli::update::Setting::Set(_)) { - self.features().check_vector("Passing `embedders` in settings")? - } task.details = Some(Details::SettingsUpdate { settings: Box::new(settings) }); apply_settings_to_builder(&checked_settings, &mut builder); diff --git a/meilisearch/src/routes/indexes/settings.rs b/meilisearch/src/routes/indexes/settings.rs index feb174a1b..3ab6afe07 100644 --- a/meilisearch/src/routes/indexes/settings.rs +++ b/meilisearch/src/routes/indexes/settings.rs @@ -90,7 +90,10 @@ macro_rules! make_setting_route { ..Default::default() }; - let new_settings = new_settings.validate()?; + let new_settings = $crate::routes::indexes::settings::validate_settings( + new_settings, + &index_scheduler, + )?; let allow_index_creation = index_scheduler.filters().allow_index_creation(&index_uid); @@ -653,7 +656,7 @@ pub async fn update_all( let index_uid = IndexUid::try_from(index_uid.into_inner())?; let new_settings = body.into_inner(); - let new_settings = new_settings.validate()?; + let new_settings = validate_settings(new_settings, &index_scheduler)?; analytics.publish( "Settings Updated".to_string(), @@ -803,3 +806,13 @@ pub async fn delete_all( debug!("returns: {:?}", task); Ok(HttpResponse::Accepted().json(task)) } + +fn validate_settings( + settings: Settings, + index_scheduler: &IndexScheduler, +) -> Result, ResponseError> { + if matches!(settings.embedders, Setting::Set(_)) { + index_scheduler.features().check_vector("Passing `embedders` in settings")? + } + Ok(settings.validate()?) +}