From 1e7af6372a2dc0e83c170c53162ff42b3bc895cd Mon Sep 17 00:00:00 2001 From: Loakesh Indiran <66478092+Loaki07@users.noreply.github.com> Date: Sun, 23 Nov 2025 19:38:25 +0530 Subject: [PATCH] fix: add `use_cache` & `clear_cache` for `_multi_search_stream` (#9249) --- .../http/request/search/multi_streams.rs | 26 ++++++++++++++----- web/src/composables/useStreamingSearch.ts | 7 +++++ 2 files changed, 27 insertions(+), 6 deletions(-) diff --git a/src/handler/http/request/search/multi_streams.rs b/src/handler/http/request/search/multi_streams.rs index f3e6fb40dd..6ace4db3cb 100644 --- a/src/handler/http/request/search/multi_streams.rs +++ b/src/handler/http/request/search/multi_streams.rs @@ -48,18 +48,20 @@ use crate::{ auth::UserEmail, functions, http::{ - get_dashboard_info_from_request, get_enable_align_histogram_from_request, - get_fallback_order_by_col_from_request, get_or_create_trace_id, - get_search_event_context_from_request, get_search_type_from_request, - get_stream_type_from_request, + get_clear_cache_from_request, get_dashboard_info_from_request, + get_enable_align_histogram_from_request, get_fallback_order_by_col_from_request, + get_or_create_trace_id, get_search_event_context_from_request, + get_search_type_from_request, get_stream_type_from_request, + get_use_cache_from_request, }, stream::get_settings_max_query_range, }, }, handler::http::request::search::{Headers, error_utils::map_error_to_http_response}, service::{ - search as SearchService, search::streaming::process_search_stream_request_multi, - self_reporting::report_request_usage_stats, setup_tracing_with_trace_id, + search::{self as SearchService, streaming::process_search_stream_request_multi}, + self_reporting::report_request_usage_stats, + setup_tracing_with_trace_id, }, }; @@ -1270,8 +1272,20 @@ pub async fn search_multi_stream( let mut queries = multi_req.to_query_req(); + // Set each of the sql queries with use_cache from query params + let clear_cache = get_clear_cache_from_request(&query); + #[allow(unused_assignments)] + let mut use_cache = get_use_cache_from_request(&query) && !clear_cache; + // Disable cache temporarily for `multi_stream_search` + // TODO: fix cache + use_cache = false; + // Before making any requests, first check the sql expressions can be decoded correctly for req in queries.iter_mut() { + // Update `use_cache` & `clear_cache` from query params + req.use_cache = use_cache; + req.clear_cache = clear_cache; + if let Err(e) = req.decode() { #[cfg(feature = "enterprise")] let error_message = e.to_string(); diff --git a/web/src/composables/useStreamingSearch.ts b/web/src/composables/useStreamingSearch.ts index 6ee0162385..637012af31 100644 --- a/web/src/composables/useStreamingSearch.ts +++ b/web/src/composables/useStreamingSearch.ts @@ -216,6 +216,13 @@ const useHttpStreaming = () => { if (clear_cache) url += `&clear_cache=${clear_cache}`; if (meta?.is_ui_histogram) url += `&is_ui_histogram=${meta?.is_ui_histogram}`; + + if(type === "histogram") { + let is_multi_stream_search = false; + if (queryReq.query?.sql.indexOf(' UNION ALL ') !== -1) is_multi_stream_search = true; + url += `&is_multi_stream_search=${is_multi_stream_search}`; + } + } else if (type === "values") { const fieldsString = meta?.fields.join(","); url = `/_values_stream`;