mirror of
				https://github.com/meilisearch/meilisearch.git
				synced 2025-10-29 23:16:26 +00:00 
			
		
		
		
	Remove the write txn method from the index scheduler
This commit is contained in:
		| @@ -56,7 +56,7 @@ use meilisearch_types::features::{ | ||||
| }; | ||||
| use meilisearch_types::heed::byteorder::BE; | ||||
| use meilisearch_types::heed::types::{DecodeIgnore, SerdeJson, Str, I128}; | ||||
| use meilisearch_types::heed::{self, Database, Env, RoTxn, RwTxn, WithoutTls}; | ||||
| use meilisearch_types::heed::{self, Database, Env, RoTxn, WithoutTls}; | ||||
| use meilisearch_types::milli::index::IndexEmbeddingConfig; | ||||
| use meilisearch_types::milli::update::IndexerConfig; | ||||
| use meilisearch_types::milli::vector::{Embedder, EmbedderOptions, EmbeddingConfigs}; | ||||
| @@ -311,11 +311,7 @@ impl IndexScheduler { | ||||
|         Ok(this) | ||||
|     } | ||||
|  | ||||
|     pub fn write_txn(&self) -> Result<RwTxn> { | ||||
|         self.env.write_txn().map_err(|e| e.into()) | ||||
|     } | ||||
|  | ||||
|     pub fn read_txn(&self) -> Result<RoTxn<WithoutTls>> { | ||||
|     fn read_txn(&self) -> Result<RoTxn<WithoutTls>> { | ||||
|         self.env.read_txn().map_err(|e| e.into()) | ||||
|     } | ||||
|  | ||||
| @@ -901,8 +897,9 @@ impl IndexScheduler { | ||||
|         res.map(EmbeddingConfigs::new) | ||||
|     } | ||||
|  | ||||
|     pub fn chat_settings(&self, rtxn: &RoTxn, uid: &str) -> Result<Option<ChatCompletionSettings>> { | ||||
|         self.chat_settings.get(rtxn, uid).map_err(Into::into) | ||||
|     pub fn chat_settings(&self, uid: &str) -> Result<Option<ChatCompletionSettings>> { | ||||
|         let rtxn = self.env.read_txn()?; | ||||
|         self.chat_settings.get(&rtxn, uid).map_err(Into::into) | ||||
|     } | ||||
|  | ||||
|     /// Return true if chat workspace exists. | ||||
| @@ -911,17 +908,18 @@ impl IndexScheduler { | ||||
|         Ok(self.chat_settings.remap_data_type::<DecodeIgnore>().get(&rtxn, name)?.is_some()) | ||||
|     } | ||||
|  | ||||
|     pub fn put_chat_settings( | ||||
|         &self, | ||||
|         wtxn: &mut RwTxn, | ||||
|         uid: &str, | ||||
|         settings: &ChatCompletionSettings, | ||||
|     ) -> Result<()> { | ||||
|         self.chat_settings.put(wtxn, uid, settings).map_err(Into::into) | ||||
|     pub fn put_chat_settings(&self, uid: &str, settings: &ChatCompletionSettings) -> Result<()> { | ||||
|         let mut wtxn = self.env.write_txn()?; | ||||
|         self.chat_settings.put(&mut wtxn, uid, settings)?; | ||||
|         wtxn.commit()?; | ||||
|         Ok(()) | ||||
|     } | ||||
|  | ||||
|     pub fn delete_chat_settings(&self, wtxn: &mut RwTxn, uid: &str) -> Result<bool> { | ||||
|         self.chat_settings.delete(wtxn, uid).map_err(Into::into) | ||||
|     pub fn delete_chat_settings(&self, uid: &str) -> Result<bool> { | ||||
|         let mut wtxn = self.env.write_txn()?; | ||||
|         let deleted = self.chat_settings.delete(&mut wtxn, uid)?; | ||||
|         wtxn.commit()?; | ||||
|         Ok(deleted) | ||||
|     } | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -315,8 +315,7 @@ async fn non_streamed_chat( | ||||
|     )); | ||||
|  | ||||
|     let filters = index_scheduler.filters(); | ||||
|     let rtxn = index_scheduler.read_txn()?; | ||||
|     let chat_settings = match index_scheduler.chat_settings(&rtxn, workspace_uid).unwrap() { | ||||
|     let chat_settings = match index_scheduler.chat_settings(workspace_uid).unwrap() { | ||||
|         Some(settings) => settings, | ||||
|         None => { | ||||
|             return Err(ResponseError::from_msg( | ||||
| @@ -413,8 +412,7 @@ async fn streamed_chat( | ||||
|     index_scheduler.features().check_chat_completions("using the /chats chat completions route")?; | ||||
|     let filters = index_scheduler.filters(); | ||||
|  | ||||
|     let rtxn = index_scheduler.read_txn()?; | ||||
|     let chat_settings = match index_scheduler.chat_settings(&rtxn, workspace_uid)? { | ||||
|     let chat_settings = match index_scheduler.chat_settings(workspace_uid)? { | ||||
|         Some(settings) => settings, | ||||
|         None => { | ||||
|             return Err(ResponseError::from_msg( | ||||
| @@ -423,7 +421,6 @@ async fn streamed_chat( | ||||
|             )) | ||||
|         } | ||||
|     }; | ||||
|     drop(rtxn); | ||||
|  | ||||
|     let config = Config::new(&chat_settings); | ||||
|     let auth_token = extract_token_from_request(&req)?.unwrap().to_string(); | ||||
|   | ||||
| @@ -72,10 +72,8 @@ pub async fn delete_chat( | ||||
| ) -> Result<HttpResponse, ResponseError> { | ||||
|     index_scheduler.features().check_chat_completions("deleting a chat")?; | ||||
|  | ||||
|     let mut wtxn = index_scheduler.write_txn()?; | ||||
|     let workspace_uid = workspace_uid.into_inner(); | ||||
|     if index_scheduler.delete_chat_settings(&mut wtxn, &workspace_uid)? { | ||||
|         wtxn.commit()?; | ||||
|     if index_scheduler.delete_chat_settings(&workspace_uid)? { | ||||
|         Ok(HttpResponse::NoContent().finish()) | ||||
|     } else { | ||||
|         Err(ResponseError::from_msg(format!("chat {workspace_uid} not found"), Code::ChatNotFound)) | ||||
|   | ||||
| @@ -42,8 +42,7 @@ async fn get_settings( | ||||
|     let ChatsParam { workspace_uid } = chats_param.into_inner(); | ||||
|  | ||||
|     // TODO do a spawn_blocking here ??? | ||||
|     let rtxn = index_scheduler.read_txn()?; | ||||
|     let mut settings = match index_scheduler.chat_settings(&rtxn, &workspace_uid)? { | ||||
|     let mut settings = match index_scheduler.chat_settings(&workspace_uid)? { | ||||
|         Some(settings) => settings, | ||||
|         None => { | ||||
|             return Err(ResponseError::from_msg( | ||||
| @@ -68,8 +67,7 @@ async fn patch_settings( | ||||
|     let ChatsParam { workspace_uid } = chats_param.into_inner(); | ||||
|  | ||||
|     // TODO do a spawn_blocking here | ||||
|     let mut wtxn = index_scheduler.write_txn()?; | ||||
|     let old_settings = index_scheduler.chat_settings(&wtxn, &workspace_uid)?.unwrap_or_default(); | ||||
|     let old_settings = index_scheduler.chat_settings(&workspace_uid)?.unwrap_or_default(); | ||||
|  | ||||
|     let prompts = match new.prompts { | ||||
|         Setting::Set(new_prompts) => DbChatCompletionPrompts { | ||||
| @@ -147,8 +145,7 @@ async fn patch_settings( | ||||
|     // ); | ||||
|  | ||||
|     settings.validate()?; | ||||
|     index_scheduler.put_chat_settings(&mut wtxn, &workspace_uid, &settings)?; | ||||
|     wtxn.commit()?; | ||||
|     index_scheduler.put_chat_settings(&workspace_uid, &settings)?; | ||||
|  | ||||
|     settings.hide_secrets(); | ||||
|  | ||||
| @@ -165,11 +162,9 @@ async fn reset_settings( | ||||
|     index_scheduler.features().check_chat_completions("using the /chats/settings route")?; | ||||
|  | ||||
|     let ChatsParam { workspace_uid } = chats_param.into_inner(); | ||||
|     let mut wtxn = index_scheduler.write_txn()?; | ||||
|     if index_scheduler.chat_settings(&wtxn, &workspace_uid)?.is_some() { | ||||
|     if index_scheduler.chat_settings(&workspace_uid)?.is_some() { | ||||
|         let settings = Default::default(); | ||||
|         index_scheduler.put_chat_settings(&mut wtxn, &workspace_uid, &settings)?; | ||||
|         wtxn.commit()?; | ||||
|         index_scheduler.put_chat_settings(&workspace_uid, &settings)?; | ||||
|         Ok(HttpResponse::Ok().json(settings)) | ||||
|     } else { | ||||
|         Err(ResponseError::from_msg( | ||||
|   | ||||
		Reference in New Issue
	
	Block a user