From fb579e956252d0971653825ba6a2066ddd83273e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alejandro=20Fern=C3=A1ndez=20G=C3=B3mez?= Date: Mon, 19 Oct 2020 15:30:12 +0200 Subject: [PATCH] Revert "Avoid setting log module state if parent components are not mounted" This reverts commits: - f3098a5f1a8ae367b2734eff32ebe00aaa14c560. - 24286bb7e3efe6b44bfd95b69eb4dacbd55ad4cb. --- .../log_analysis_capabilities.tsx | 3 +-- .../logs/log_analysis/log_analysis_module.tsx | 20 +++++++------------ .../log_analysis_module_definition.tsx | 10 ++-------- .../log_analysis/log_analysis_setup_state.ts | 3 +-- .../public/containers/logs/log_flyout.tsx | 3 +-- .../log_highlights/log_entry_highlights.tsx | 3 +-- .../log_highlights/log_summary_highlights.ts | 3 +-- .../containers/logs/log_source/log_source.ts | 9 ++------- .../containers/logs/log_stream/index.ts | 3 +-- .../infra/public/containers/source/source.tsx | 5 +---- .../use_log_entry_category_examples.tsx | 3 +-- .../logs/log_entry_rate/page_content.tsx | 6 +----- .../use_log_entry_anomalies_results.ts | 7 +------ .../log_entry_rate/use_log_entry_examples.ts | 3 +-- .../infra/public/utils/use_tracked_promise.ts | 11 ---------- 15 files changed, 22 insertions(+), 70 deletions(-) diff --git a/x-pack/plugins/infra/public/containers/logs/log_analysis/log_analysis_capabilities.tsx b/x-pack/plugins/infra/public/containers/logs/log_analysis/log_analysis_capabilities.tsx index ccb8a602941ae9..74b316f78259fc 100644 --- a/x-pack/plugins/infra/public/containers/logs/log_analysis/log_analysis_capabilities.tsx +++ b/x-pack/plugins/infra/public/containers/logs/log_analysis/log_analysis_capabilities.tsx @@ -6,7 +6,7 @@ import createContainer from 'constate'; import { useMemo, useState, useEffect } from 'react'; -import { ignoreCanceledPromise, useTrackedPromise } from '../../../utils/use_tracked_promise'; +import { useTrackedPromise } from '../../../utils/use_tracked_promise'; import { getMlCapabilitiesResponsePayloadRT, GetMlCapabilitiesResponsePayload, @@ -31,7 +31,6 @@ export const useLogAnalysisCapabilities = () => { onResolve: (response) => { setMlCapabilities(response); }, - onReject: ignoreCanceledPromise, }, [] ); diff --git a/x-pack/plugins/infra/public/containers/logs/log_analysis/log_analysis_module.tsx b/x-pack/plugins/infra/public/containers/logs/log_analysis/log_analysis_module.tsx index 5d816951baa23e..27ef0039ae49f8 100644 --- a/x-pack/plugins/infra/public/containers/logs/log_analysis/log_analysis_module.tsx +++ b/x-pack/plugins/infra/public/containers/logs/log_analysis/log_analysis_module.tsx @@ -5,7 +5,6 @@ */ import { useCallback, useMemo } from 'react'; -import { useMountedState } from 'react-use'; import { DatasetFilter } from '../../../../common/log_analysis'; import { useKibanaContextForPlugin } from '../../../hooks/use_kibana'; import { useTrackedPromise } from '../../../utils/use_tracked_promise'; @@ -20,7 +19,6 @@ export const useLogAnalysisModule = ({ moduleDescriptor: ModuleDescriptor; }) => { const { services } = useKibanaContextForPlugin(); - const isMounted = useMountedState(); const { spaceId, sourceId, timestampField } = sourceConfiguration; const [moduleStatus, dispatchModuleStatus] = useModuleStatus(moduleDescriptor.jobTypes); @@ -32,19 +30,15 @@ export const useLogAnalysisModule = ({ return await moduleDescriptor.getJobSummary(spaceId, sourceId, services.http.fetch); }, onResolve: (jobResponse) => { - if (isMounted()) { - dispatchModuleStatus({ - type: 'fetchedJobStatuses', - payload: jobResponse, - spaceId, - sourceId, - }); - } + dispatchModuleStatus({ + type: 'fetchedJobStatuses', + payload: jobResponse, + spaceId, + sourceId, + }); }, onReject: () => { - if (isMounted()) { - dispatchModuleStatus({ type: 'failedFetchingJobStatuses' }); - } + dispatchModuleStatus({ type: 'failedFetchingJobStatuses' }); }, }, [spaceId, sourceId] diff --git a/x-pack/plugins/infra/public/containers/logs/log_analysis/log_analysis_module_definition.tsx b/x-pack/plugins/infra/public/containers/logs/log_analysis/log_analysis_module_definition.tsx index b1d0f56e7ff7a3..7a5c1d354dc34f 100644 --- a/x-pack/plugins/infra/public/containers/logs/log_analysis/log_analysis_module_definition.tsx +++ b/x-pack/plugins/infra/public/containers/logs/log_analysis/log_analysis_module_definition.tsx @@ -5,7 +5,6 @@ */ import { useCallback, useMemo, useState } from 'react'; -import { useMountedState } from 'react-use'; import { getJobId } from '../../../../common/log_analysis'; import { useKibanaContextForPlugin } from '../../../hooks/use_kibana'; import { useTrackedPromise } from '../../../utils/use_tracked_promise'; @@ -21,7 +20,6 @@ export const useLogAnalysisModuleDefinition = ({ moduleDescriptor: ModuleDescriptor; }) => { const { services } = useKibanaContextForPlugin(); - const isMounted = useMountedState(); const [moduleDefinition, setModuleDefinition] = useState< GetMlModuleResponsePayload | undefined >(); @@ -47,14 +45,10 @@ export const useLogAnalysisModuleDefinition = ({ return await moduleDescriptor.getModuleDefinition(services.http.fetch); }, onResolve: (response) => { - if (isMounted()) { - setModuleDefinition(response); - } + setModuleDefinition(response); }, onReject: () => { - if (isMounted()) { - setModuleDefinition(undefined); - } + setModuleDefinition(undefined); }, }, [moduleDescriptor.getModuleDefinition, spaceId, sourceId] diff --git a/x-pack/plugins/infra/public/containers/logs/log_analysis/log_analysis_setup_state.ts b/x-pack/plugins/infra/public/containers/logs/log_analysis/log_analysis_setup_state.ts index 53a2f4a226268b..750a7104a3a98f 100644 --- a/x-pack/plugins/infra/public/containers/logs/log_analysis/log_analysis_setup_state.ts +++ b/x-pack/plugins/infra/public/containers/logs/log_analysis/log_analysis_setup_state.ts @@ -19,7 +19,7 @@ import { ValidationUIError, } from '../../../components/logging/log_analysis_setup/initial_configuration_step'; import { useKibanaContextForPlugin } from '../../../hooks/use_kibana'; -import { ignoreCanceledPromise, useTrackedPromise } from '../../../utils/use_tracked_promise'; +import { useTrackedPromise } from '../../../utils/use_tracked_promise'; import { ModuleDescriptor, ModuleSourceConfiguration } from './log_analysis_module_types'; type SetupHandler = ( @@ -193,7 +193,6 @@ export const useAnalysisSetupState = ({ onResolve: ({ data: { datasets } }) => { updateIndicesWithAvailableDatasets(datasets); }, - onReject: ignoreCanceledPromise, }, [validIndexNames, sourceConfiguration.timestampField, startTime, endTime] ); diff --git a/x-pack/plugins/infra/public/containers/logs/log_flyout.tsx b/x-pack/plugins/infra/public/containers/logs/log_flyout.tsx index 7344c1515095be..9ed2f5ad175c75 100644 --- a/x-pack/plugins/infra/public/containers/logs/log_flyout.tsx +++ b/x-pack/plugins/infra/public/containers/logs/log_flyout.tsx @@ -11,7 +11,7 @@ import React, { useContext, useEffect, useMemo, useState } from 'react'; import { LogEntriesItem } from '../../../common/http_api'; import { useKibanaContextForPlugin } from '../../hooks/use_kibana'; import { UrlStateContainer } from '../../utils/url_state'; -import { ignoreCanceledPromise, useTrackedPromise } from '../../utils/use_tracked_promise'; +import { useTrackedPromise } from '../../utils/use_tracked_promise'; import { fetchLogEntriesItem } from './log_entries/api/fetch_log_entries_item'; import { useLogSourceContext } from './log_source'; @@ -49,7 +49,6 @@ export const useLogFlyout = () => { setFlyoutItem(data || null); } }, - onReject: ignoreCanceledPromise, }, [sourceId, flyoutId] ); diff --git a/x-pack/plugins/infra/public/containers/logs/log_highlights/log_entry_highlights.tsx b/x-pack/plugins/infra/public/containers/logs/log_highlights/log_entry_highlights.tsx index 166837091b1dcd..b4edebe8f8207c 100644 --- a/x-pack/plugins/infra/public/containers/logs/log_highlights/log_entry_highlights.tsx +++ b/x-pack/plugins/infra/public/containers/logs/log_highlights/log_entry_highlights.tsx @@ -7,7 +7,7 @@ import { useEffect, useMemo, useState } from 'react'; import { TimeKey } from '../../../../common/time'; -import { ignoreCanceledPromise, useTrackedPromise } from '../../../utils/use_tracked_promise'; +import { useTrackedPromise } from '../../../utils/use_tracked_promise'; import { fetchLogEntriesHighlights } from './api/fetch_log_entries_highlights'; import { LogEntry, LogEntriesHighlightsResponse } from '../../../../common/http_api'; import { useKibanaContextForPlugin } from '../../../hooks/use_kibana'; @@ -50,7 +50,6 @@ export const useLogEntryHighlights = ( onResolve: (response) => { setLogEntryHighlights(response.data); }, - onReject: ignoreCanceledPromise, }, [sourceId, startTimestamp, endTimestamp, centerPoint, size, filterQuery, highlightTerms] ); diff --git a/x-pack/plugins/infra/public/containers/logs/log_highlights/log_summary_highlights.ts b/x-pack/plugins/infra/public/containers/logs/log_highlights/log_summary_highlights.ts index efc04c839876a0..14366891dbf593 100644 --- a/x-pack/plugins/infra/public/containers/logs/log_highlights/log_summary_highlights.ts +++ b/x-pack/plugins/infra/public/containers/logs/log_highlights/log_summary_highlights.ts @@ -7,7 +7,7 @@ import { useEffect, useMemo, useState } from 'react'; import { debounce } from 'lodash'; -import { ignoreCanceledPromise, useTrackedPromise } from '../../../utils/use_tracked_promise'; +import { useTrackedPromise } from '../../../utils/use_tracked_promise'; import { fetchLogSummaryHighlights } from './api/fetch_log_summary_highlights'; import { LogEntriesSummaryHighlightsResponse } from '../../../../common/http_api'; import { useBucketSize } from '../log_summary/bucket_size'; @@ -51,7 +51,6 @@ export const useLogSummaryHighlights = ( onResolve: (response) => { setLogSummaryHighlights(response.data); }, - onReject: ignoreCanceledPromise, }, [sourceId, startTimestamp, endTimestamp, bucketSize, filterQuery, highlightTerms] ); diff --git a/x-pack/plugins/infra/public/containers/logs/log_source/log_source.ts b/x-pack/plugins/infra/public/containers/logs/log_source/log_source.ts index 2a6bf830b6c900..e2dd4c523c03f7 100644 --- a/x-pack/plugins/infra/public/containers/logs/log_source/log_source.ts +++ b/x-pack/plugins/infra/public/containers/logs/log_source/log_source.ts @@ -14,7 +14,7 @@ import { LogSourceConfigurationPropertiesPatch, LogSourceStatus, } from '../../../../common/http_api/log_sources'; -import { ignoreCanceledPromise, useTrackedPromise } from '../../../utils/use_tracked_promise'; +import { useTrackedPromise } from '../../../utils/use_tracked_promise'; import { callFetchLogSourceConfigurationAPI } from './api/fetch_log_source_configuration'; import { callFetchLogSourceStatusAPI } from './api/fetch_log_source_status'; import { callPatchLogSourceConfigurationAPI } from './api/patch_log_source_configuration'; @@ -47,7 +47,6 @@ export const useLogSource = ({ sourceId, fetch }: { sourceId: string; fetch: Htt setSourceConfiguration(data); }, - onReject: ignoreCanceledPromise, }, [sourceId, fetch] ); @@ -66,7 +65,6 @@ export const useLogSource = ({ sourceId, fetch }: { sourceId: string; fetch: Htt setSourceConfiguration(data); loadSourceStatus(); }, - onReject: ignoreCanceledPromise, }, [sourceId, fetch] ); @@ -84,7 +82,6 @@ export const useLogSource = ({ sourceId, fetch }: { sourceId: string; fetch: Htt setSourceStatus(data); }, - onReject: ignoreCanceledPromise, }, [sourceId, fetch] ); @@ -142,9 +139,7 @@ export const useLogSource = ({ sourceId, fetch }: { sourceId: string; fetch: Htt ); const loadSource = useCallback(() => { - return Promise.all([loadSourceConfiguration(), loadSourceStatus()]).catch( - ignoreCanceledPromise - ); + return Promise.all([loadSourceConfiguration(), loadSourceStatus()]); }, [loadSourceConfiguration, loadSourceStatus]); const initialize = useCallback(async () => { diff --git a/x-pack/plugins/infra/public/containers/logs/log_stream/index.ts b/x-pack/plugins/infra/public/containers/logs/log_stream/index.ts index 7f1a941eaca92b..4a6da6063e9603 100644 --- a/x-pack/plugins/infra/public/containers/logs/log_stream/index.ts +++ b/x-pack/plugins/infra/public/containers/logs/log_stream/index.ts @@ -7,7 +7,7 @@ import { useState, useMemo } from 'react'; import { esKuery } from '../../../../../../../src/plugins/data/public'; import { fetchLogEntries } from '../log_entries/api/fetch_log_entries'; -import { ignoreCanceledPromise, useTrackedPromise } from '../../../utils/use_tracked_promise'; +import { useTrackedPromise } from '../../../utils/use_tracked_promise'; import { LogEntry, LogEntriesCursor } from '../../../../common/http_api'; import { useKibanaContextForPlugin } from '../../../hooks/use_kibana'; @@ -63,7 +63,6 @@ export function useLogStream({ onResolve: ({ data }) => { setEntries(data.entries); }, - onReject: ignoreCanceledPromise, }, [sourceId, startTimestamp, endTimestamp, query] ); diff --git a/x-pack/plugins/infra/public/containers/source/source.tsx b/x-pack/plugins/infra/public/containers/source/source.tsx index afcc82d0cad313..96bbd858c3a4bf 100644 --- a/x-pack/plugins/infra/public/containers/source/source.tsx +++ b/x-pack/plugins/infra/public/containers/source/source.tsx @@ -14,7 +14,7 @@ import { UpdateSourceMutation, } from '../../graphql/types'; import { DependencyError, useApolloClient } from '../../utils/apollo_context'; -import { ignoreCanceledPromise, useTrackedPromise } from '../../utils/use_tracked_promise'; +import { useTrackedPromise } from '../../utils/use_tracked_promise'; import { createSourceMutation } from './create_source.gql_query'; import { sourceQuery } from './query_source.gql_query'; import { updateSourceMutation } from './update_source.gql_query'; @@ -57,7 +57,6 @@ export const useSource = ({ sourceId }: { sourceId: string }) => { onResolve: (response) => { setSource(response.data.source); }, - onReject: ignoreCanceledPromise, }, [apolloClient, sourceId] ); @@ -88,7 +87,6 @@ export const useSource = ({ sourceId }: { sourceId: string }) => { setSource(response.data.createSource.source); } }, - onReject: ignoreCanceledPromise, }, [apolloClient, sourceId] ); @@ -119,7 +117,6 @@ export const useSource = ({ sourceId }: { sourceId: string }) => { setSource(response.data.updateSource.source); } }, - onReject: ignoreCanceledPromise, }, [apolloClient, sourceId] ); diff --git a/x-pack/plugins/infra/public/pages/logs/log_entry_categories/use_log_entry_category_examples.tsx b/x-pack/plugins/infra/public/pages/logs/log_entry_categories/use_log_entry_category_examples.tsx index dbe0bc31c04f98..84b9f045288cc3 100644 --- a/x-pack/plugins/infra/public/pages/logs/log_entry_categories/use_log_entry_category_examples.tsx +++ b/x-pack/plugins/infra/public/pages/logs/log_entry_categories/use_log_entry_category_examples.tsx @@ -8,7 +8,7 @@ import { useMemo, useState } from 'react'; import { LogEntryCategoryExample } from '../../../../common/http_api'; import { useKibanaContextForPlugin } from '../../../hooks/use_kibana'; -import { ignoreCanceledPromise, useTrackedPromise } from '../../../utils/use_tracked_promise'; +import { useTrackedPromise } from '../../../utils/use_tracked_promise'; import { callGetLogEntryCategoryExamplesAPI } from './service_calls/get_log_entry_category_examples'; export const useLogEntryCategoryExamples = ({ @@ -48,7 +48,6 @@ export const useLogEntryCategoryExamples = ({ onResolve: ({ data: { examples } }) => { setLogEntryCategoryExamples(examples); }, - onReject: ignoreCanceledPromise, }, [categoryId, endTime, exampleCount, sourceId, startTime] ); diff --git a/x-pack/plugins/infra/public/pages/logs/log_entry_rate/page_content.tsx b/x-pack/plugins/infra/public/pages/logs/log_entry_rate/page_content.tsx index 344cd0bd315ef3..d8edcd87eb2a07 100644 --- a/x-pack/plugins/infra/public/pages/logs/log_entry_rate/page_content.tsx +++ b/x-pack/plugins/infra/public/pages/logs/log_entry_rate/page_content.tsx @@ -27,7 +27,6 @@ import { useLogSourceContext } from '../../../containers/logs/log_source'; import { LogEntryRateResultsContent } from './page_results_content'; import { LogEntryRateSetupContent } from './page_setup_content'; import { useInterval } from '../../../hooks/use_interval'; -import { ignoreCanceledPromise } from '../../../utils/use_tracked_promise'; const JOB_STATUS_POLLING_INTERVAL = 30000; @@ -62,10 +61,7 @@ export const LogEntryRatePageContent = memo(() => { const { showModuleList } = useLogAnalysisSetupFlyoutStateContext(); const fetchAllJobStatuses = useCallback( - () => - Promise.all([fetchLogEntryCategoriesJobStatus(), fetchLogEntryRateJobStatus()]).catch( - ignoreCanceledPromise - ), + () => Promise.all([fetchLogEntryCategoriesJobStatus(), fetchLogEntryRateJobStatus()]), [fetchLogEntryCategoriesJobStatus, fetchLogEntryRateJobStatus] ); diff --git a/x-pack/plugins/infra/public/pages/logs/log_entry_rate/use_log_entry_anomalies_results.ts b/x-pack/plugins/infra/public/pages/logs/log_entry_rate/use_log_entry_anomalies_results.ts index a6fdd634dcc00f..37c99272f0872f 100644 --- a/x-pack/plugins/infra/public/pages/logs/log_entry_rate/use_log_entry_anomalies_results.ts +++ b/x-pack/plugins/infra/public/pages/logs/log_entry_rate/use_log_entry_anomalies_results.ts @@ -6,11 +6,7 @@ import { useMemo, useState, useCallback, useEffect, useReducer } from 'react'; import { useMount } from 'react-use'; -import { - useTrackedPromise, - CanceledPromiseError, - ignoreCanceledPromise, -} from '../../../utils/use_tracked_promise'; +import { useTrackedPromise, CanceledPromiseError } from '../../../utils/use_tracked_promise'; import { callGetLogEntryAnomaliesAPI } from './service_calls/get_log_entry_anomalies'; import { callGetLogEntryAnomaliesDatasetsAPI } from './service_calls/get_log_entry_anomalies_datasets'; import { @@ -216,7 +212,6 @@ export const useLogEntryAnomaliesResults = ({ } setLogEntryAnomalies(anomalies); }, - onReject: ignoreCanceledPromise, }, [ sourceId, diff --git a/x-pack/plugins/infra/public/pages/logs/log_entry_rate/use_log_entry_examples.ts b/x-pack/plugins/infra/public/pages/logs/log_entry_rate/use_log_entry_examples.ts index 36ca0cecbf3b08..e809ab9cd5a6f2 100644 --- a/x-pack/plugins/infra/public/pages/logs/log_entry_rate/use_log_entry_examples.ts +++ b/x-pack/plugins/infra/public/pages/logs/log_entry_rate/use_log_entry_examples.ts @@ -8,7 +8,7 @@ import { useMemo, useState } from 'react'; import { LogEntryExample } from '../../../../common/http_api'; import { useKibanaContextForPlugin } from '../../../hooks/use_kibana'; -import { ignoreCanceledPromise, useTrackedPromise } from '../../../utils/use_tracked_promise'; +import { useTrackedPromise } from '../../../utils/use_tracked_promise'; import { callGetLogEntryExamplesAPI } from './service_calls/get_log_entry_examples'; export const useLogEntryExamples = ({ @@ -48,7 +48,6 @@ export const useLogEntryExamples = ({ onResolve: ({ data: { examples } }) => { setLogEntryExamples(examples); }, - onReject: ignoreCanceledPromise, }, [dataset, endTime, exampleCount, sourceId, startTime] ); diff --git a/x-pack/plugins/infra/public/utils/use_tracked_promise.ts b/x-pack/plugins/infra/public/utils/use_tracked_promise.ts index f4be02f43e7ae9..42518127f68bf7 100644 --- a/x-pack/plugins/infra/public/utils/use_tracked_promise.ts +++ b/x-pack/plugins/infra/public/utils/use_tracked_promise.ts @@ -284,15 +284,4 @@ export class CanceledPromiseError extends Error { export class SilentCanceledPromiseError extends CanceledPromiseError {} -// Ideally we want `error: Error`, but a promise might be rejected with anything. -export function ignoreCanceledPromise(error: unknown) { - if (error instanceof CanceledPromiseError) { - return; - } - if (error instanceof Error) { - throw error; - } - return error; -} - const noOp = () => undefined;