diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/api.ts b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/api.ts index 05706981a681dc..72a9bf6e84441b 100644 --- a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/api.ts +++ b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/api.ts @@ -178,8 +178,14 @@ export const getCaseIdsFromAlertId = async ({ * * @param host id */ -export const getHostMetadata = async ({ agentId }: { agentId: string }): Promise => +export const getHostMetadata = async ({ + agentId, + signal, +}: { + agentId: string; + signal?: AbortSignal; +}): Promise => KibanaServices.get().http.fetch( resolvePathVariables(HOST_METADATA_GET_ROUTE, { id: agentId }), - { method: 'get' } + { method: 'GET', signal } ); diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_host_isolation_status.tsx b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_host_isolation_status.tsx index 3bdd8c98137852..259a377b10b796 100644 --- a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_host_isolation_status.tsx +++ b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_host_isolation_status.tsx @@ -38,18 +38,23 @@ export const useHostIsolationStatus = ({ const { addError } = useAppToasts(); useEffect(() => { + const abortCtrl = new AbortController(); // isMounted tracks if a component is mounted before changing state let isMounted = true; let fleetAgentId: string; const fetchData = async () => { try { - const metadataResponse = await getHostMetadata({ agentId }); + const metadataResponse = await getHostMetadata({ agentId, signal: abortCtrl.signal }); if (isMounted) { setIsIsolated(isEndpointHostIsolated(metadataResponse.metadata)); setAgentStatus(metadataResponse.host_status); fleetAgentId = metadataResponse.metadata.elastic.agent.id; } } catch (error) { + // don't show self-aborted requests errors to the user + if (error.name === 'AbortError') { + return; + } addError(error.message, { title: ISOLATION_STATUS_FAILURE }); } @@ -80,6 +85,7 @@ export const useHostIsolationStatus = ({ return () => { // updates to show component is unmounted isMounted = false; + abortCtrl.abort(); }; }, [addError, agentId]); return { loading, isIsolated, agentStatus, pendingIsolation, pendingUnisolation };