Read MEILI_EXPERIMENTAL_REMOTE_SEARCH_TIMEOUT_SECONDS to override the default timeout in remote federated search

This commit is contained in:
Louis Dureuil
2025-10-06 17:50:20 +02:00
parent ac7a69d6db
commit da0ec8a270
2 changed files with 13 additions and 2 deletions

View File

@@ -44,7 +44,13 @@ pub async fn perform_federated_search(
features.check_network("Performing a remote federated search")?; features.check_network("Performing a remote federated search")?;
} }
let before_search = std::time::Instant::now(); let before_search = std::time::Instant::now();
let deadline = before_search + std::time::Duration::from_secs(30);
let timeout = std::env::var("MEILI_EXPERIMENTAL_REMOTE_SEARCH_TIMEOUT_SECONDS")
.ok()
.map(|p| p.parse().unwrap())
.unwrap_or(25);
let deadline = before_search + std::time::Duration::from_secs(timeout);
let required_hit_count = federation.limit + federation.offset; let required_hit_count = federation.limit + federation.offset;
let retrieve_vectors = queries.iter().any(|q| q.retrieve_vectors); let retrieve_vectors = queries.iter().any(|q| q.retrieve_vectors);

View File

@@ -105,7 +105,12 @@ pub async fn proxy_search(
let search_api_key = node.search_api_key.as_deref(); let search_api_key = node.search_api_key.as_deref();
let max_deadline = std::time::Instant::now() + std::time::Duration::from_secs(30); let timeout = std::env::var("MEILI_EXPERIMENTAL_REMOTE_SEARCH_TIMEOUT_SECONDS")
.ok()
.map(|p| p.parse().unwrap())
.unwrap_or(25);
let max_deadline = std::time::Instant::now() + std::time::Duration::from_secs(timeout);
let deadline = if let Some(deadline) = params.deadline { let deadline = if let Some(deadline) = params.deadline {
std::time::Instant::min(deadline, max_deadline) std::time::Instant::min(deadline, max_deadline)