From 36e4ddd79f81cfc12ccbae99b5645d73cfc881e9 Mon Sep 17 00:00:00 2001 From: Dmitry Tomashevich <39378793+Dmitriynj@users.noreply.github.com> Date: Tue, 12 Apr 2022 10:31:55 +0500 Subject: [PATCH] [Discover] Cancel long running request after navigating out from Discover (#129444) * [Discover] cancel search on navigating out * [Discover] fix abortController reference Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../application/main/utils/use_saved_search.ts | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/plugins/discover/public/application/main/utils/use_saved_search.ts b/src/plugins/discover/public/application/main/utils/use_saved_search.ts index c8a59d2eb3167..8197979e103eb 100644 --- a/src/plugins/discover/public/application/main/utils/use_saved_search.ts +++ b/src/plugins/discover/public/application/main/utils/use_saved_search.ts @@ -147,7 +147,6 @@ export const useSavedSearch = ({ * Values that shouldn't trigger re-rendering when changed */ const refs = useRef<{ - abortController?: AbortController; autoRefreshDone?: AutoRefreshDoneFn; }>({}); @@ -172,6 +171,7 @@ export const useSavedSearch = ({ searchSource, initialFetchStatus, }); + let abortController: AbortController; const subscription = fetch$.subscribe(async (val) => { if (!validateTimeRange(timefilter.getTime(), services.toastNotifications)) { @@ -179,12 +179,12 @@ export const useSavedSearch = ({ } inspectorAdapters.requests.reset(); - refs.current.abortController?.abort(); - refs.current.abortController = new AbortController(); + abortController?.abort(); + abortController = new AbortController(); const autoRefreshDone = refs.current.autoRefreshDone; await fetchAll(dataSubjects, searchSource, val === 'reset', { - abortController: refs.current.abortController, + abortController, appStateContainer: stateContainer.appStateContainer, data, initialFetchStatus, @@ -205,7 +205,10 @@ export const useSavedSearch = ({ } }); - return () => subscription.unsubscribe(); + return () => { + abortController?.abort(); + subscription.unsubscribe(); + }; }, [ data, data.query.queryString,