Skip to content

Commit

Permalink
Ignore canceled promises
Browse files Browse the repository at this point in the history
  • Loading branch information
afgomez authored and Alejandro Fernández Gómez committed Oct 13, 2020
1 parent 190fba1 commit 24286bb
Show file tree
Hide file tree
Showing 13 changed files with 49 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

import createContainer from 'constate';
import { useMemo, useState, useEffect } from 'react';
import { useTrackedPromise } from '../../../utils/use_tracked_promise';
import { ignoreCanceledPromise, useTrackedPromise } from '../../../utils/use_tracked_promise';
import {
getMlCapabilitiesResponsePayloadRT,
GetMlCapabilitiesResponsePayload,
Expand All @@ -31,6 +31,7 @@ export const useLogAnalysisCapabilities = () => {
onResolve: (response) => {
setMlCapabilities(response);
},
onReject: ignoreCanceledPromise,
},
[]
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import {
ValidationUIError,
} from '../../../components/logging/log_analysis_setup/initial_configuration_step';
import { useKibanaContextForPlugin } from '../../../hooks/use_kibana';
import { useTrackedPromise } from '../../../utils/use_tracked_promise';
import { ignoreCanceledPromise, useTrackedPromise } from '../../../utils/use_tracked_promise';
import { ModuleDescriptor, ModuleSourceConfiguration } from './log_analysis_module_types';

type SetupHandler = (
Expand Down Expand Up @@ -193,6 +193,7 @@ export const useAnalysisSetupState = <JobType extends string>({
onResolve: ({ data: { datasets } }) => {
updateIndicesWithAvailableDatasets(datasets);
},
onReject: ignoreCanceledPromise,
},
[validIndexNames, sourceConfiguration.timestampField, startTime, endTime]
);
Expand Down
3 changes: 2 additions & 1 deletion x-pack/plugins/infra/public/containers/logs/log_flyout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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 { useTrackedPromise } from '../../utils/use_tracked_promise';
import { ignoreCanceledPromise, useTrackedPromise } from '../../utils/use_tracked_promise';
import { fetchLogEntriesItem } from './log_entries/api/fetch_log_entries_item';
import { useLogSourceContext } from './log_source';

Expand Down Expand Up @@ -49,6 +49,7 @@ export const useLogFlyout = () => {
setFlyoutItem(data || null);
}
},
onReject: ignoreCanceledPromise,
},
[sourceId, flyoutId]
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
import { useEffect, useMemo, useState } from 'react';

import { TimeKey } from '../../../../common/time';
import { useTrackedPromise } from '../../../utils/use_tracked_promise';
import { ignoreCanceledPromise, 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';
Expand Down Expand Up @@ -50,6 +50,7 @@ export const useLogEntryHighlights = (
onResolve: (response) => {
setLogEntryHighlights(response.data);
},
onReject: ignoreCanceledPromise,
},
[sourceId, startTimestamp, endTimestamp, centerPoint, size, filterQuery, highlightTerms]
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
import { useEffect, useMemo, useState } from 'react';
import { debounce } from 'lodash';

import { useTrackedPromise } from '../../../utils/use_tracked_promise';
import { ignoreCanceledPromise, 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';
Expand Down Expand Up @@ -51,6 +51,7 @@ export const useLogSummaryHighlights = (
onResolve: (response) => {
setLogSummaryHighlights(response.data);
},
onReject: ignoreCanceledPromise,
},
[sourceId, startTimestamp, endTimestamp, bucketSize, filterQuery, highlightTerms]
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import {
LogSourceConfigurationPropertiesPatch,
LogSourceStatus,
} from '../../../../common/http_api/log_sources';
import { useTrackedPromise } from '../../../utils/use_tracked_promise';
import { ignoreCanceledPromise, 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';
Expand Down Expand Up @@ -47,6 +47,7 @@ export const useLogSource = ({ sourceId, fetch }: { sourceId: string; fetch: Htt

setSourceConfiguration(data);
},
onReject: ignoreCanceledPromise,
},
[sourceId, fetch]
);
Expand All @@ -65,6 +66,7 @@ export const useLogSource = ({ sourceId, fetch }: { sourceId: string; fetch: Htt
setSourceConfiguration(data);
loadSourceStatus();
},
onReject: ignoreCanceledPromise,
},
[sourceId, fetch]
);
Expand All @@ -82,6 +84,7 @@ export const useLogSource = ({ sourceId, fetch }: { sourceId: string; fetch: Htt

setSourceStatus(data);
},
onReject: ignoreCanceledPromise,
},
[sourceId, fetch]
);
Expand Down Expand Up @@ -139,7 +142,9 @@ export const useLogSource = ({ sourceId, fetch }: { sourceId: string; fetch: Htt
);

const loadSource = useCallback(() => {
return Promise.all([loadSourceConfiguration(), loadSourceStatus()]);
return Promise.all([loadSourceConfiguration(), loadSourceStatus()]).catch(
ignoreCanceledPromise
);
}, [loadSourceConfiguration, loadSourceStatus]);

const initialize = useCallback(async () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 { useTrackedPromise } from '../../../utils/use_tracked_promise';
import { ignoreCanceledPromise, useTrackedPromise } from '../../../utils/use_tracked_promise';
import { LogEntry, LogEntriesCursor } from '../../../../common/http_api';
import { useKibanaContextForPlugin } from '../../../hooks/use_kibana';

Expand Down Expand Up @@ -63,6 +63,7 @@ export function useLogStream({
onResolve: ({ data }) => {
setEntries(data.entries);
},
onReject: ignoreCanceledPromise,
},
[sourceId, startTimestamp, endTimestamp, query]
);
Expand Down
5 changes: 4 additions & 1 deletion x-pack/plugins/infra/public/containers/source/source.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import {
UpdateSourceMutation,
} from '../../graphql/types';
import { DependencyError, useApolloClient } from '../../utils/apollo_context';
import { useTrackedPromise } from '../../utils/use_tracked_promise';
import { ignoreCanceledPromise, 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';
Expand Down Expand Up @@ -57,6 +57,7 @@ export const useSource = ({ sourceId }: { sourceId: string }) => {
onResolve: (response) => {
setSource(response.data.source);
},
onReject: ignoreCanceledPromise,
},
[apolloClient, sourceId]
);
Expand Down Expand Up @@ -87,6 +88,7 @@ export const useSource = ({ sourceId }: { sourceId: string }) => {
setSource(response.data.createSource.source);
}
},
onReject: ignoreCanceledPromise,
},
[apolloClient, sourceId]
);
Expand Down Expand Up @@ -117,6 +119,7 @@ export const useSource = ({ sourceId }: { sourceId: string }) => {
setSource(response.data.updateSource.source);
}
},
onReject: ignoreCanceledPromise,
},
[apolloClient, sourceId]
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import { useMemo, useState } from 'react';

import { LogEntryCategoryExample } from '../../../../common/http_api';
import { useKibanaContextForPlugin } from '../../../hooks/use_kibana';
import { useTrackedPromise } from '../../../utils/use_tracked_promise';
import { ignoreCanceledPromise, useTrackedPromise } from '../../../utils/use_tracked_promise';
import { callGetLogEntryCategoryExamplesAPI } from './service_calls/get_log_entry_category_examples';

export const useLogEntryCategoryExamples = ({
Expand Down Expand Up @@ -48,6 +48,7 @@ export const useLogEntryCategoryExamples = ({
onResolve: ({ data: { examples } }) => {
setLogEntryCategoryExamples(examples);
},
onReject: ignoreCanceledPromise,
},
[categoryId, endTime, exampleCount, sourceId, startTime]
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ 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;

Expand Down Expand Up @@ -61,7 +62,10 @@ export const LogEntryRatePageContent = memo(() => {
const { showModuleList } = useLogAnalysisSetupFlyoutStateContext();

const fetchAllJobStatuses = useCallback(
() => Promise.all([fetchLogEntryCategoriesJobStatus(), fetchLogEntryRateJobStatus()]),
() =>
Promise.all([fetchLogEntryCategoriesJobStatus(), fetchLogEntryRateJobStatus()]).catch(
ignoreCanceledPromise
),
[fetchLogEntryCategoriesJobStatus, fetchLogEntryRateJobStatus]
);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,11 @@

import { useMemo, useState, useCallback, useEffect, useReducer } from 'react';
import { useMount } from 'react-use';
import { useTrackedPromise, CanceledPromiseError } from '../../../utils/use_tracked_promise';
import {
useTrackedPromise,
CanceledPromiseError,
ignoreCanceledPromise,
} 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 {
Expand Down Expand Up @@ -212,6 +216,7 @@ export const useLogEntryAnomaliesResults = ({
}
setLogEntryAnomalies(anomalies);
},
onReject: ignoreCanceledPromise,
},
[
sourceId,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import { useMemo, useState } from 'react';

import { LogEntryExample } from '../../../../common/http_api';
import { useKibanaContextForPlugin } from '../../../hooks/use_kibana';
import { useTrackedPromise } from '../../../utils/use_tracked_promise';
import { ignoreCanceledPromise, useTrackedPromise } from '../../../utils/use_tracked_promise';
import { callGetLogEntryExamplesAPI } from './service_calls/get_log_entry_examples';

export const useLogEntryExamples = ({
Expand Down Expand Up @@ -48,6 +48,7 @@ export const useLogEntryExamples = ({
onResolve: ({ data: { examples } }) => {
setLogEntryExamples(examples);
},
onReject: ignoreCanceledPromise,
},
[dataset, endTime, exampleCount, sourceId, startTime]
);
Expand Down
11 changes: 11 additions & 0 deletions x-pack/plugins/infra/public/utils/use_tracked_promise.ts
Original file line number Diff line number Diff line change
Expand Up @@ -259,4 +259,15 @@ 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;

0 comments on commit 24286bb

Please sign in to comment.