From 64ddd61d4a768866023ce8648058992f4c42c542 Mon Sep 17 00:00:00 2001 From: Peter Pisljar Date: Mon, 21 Sep 2020 11:08:30 +0200 Subject: [PATCH] cleaning up esaggs (#77646) (#77967) --- .../data/public/search/expressions/esaggs.ts | 87 +++++++------------ .../helpers/timelion_request_handler.ts | 1 - .../public/timelion_vis_fn.ts | 1 - .../expressions/visualization_function.ts | 1 - 4 files changed, 32 insertions(+), 58 deletions(-) diff --git a/src/plugins/data/public/search/expressions/esaggs.ts b/src/plugins/data/public/search/expressions/esaggs.ts index 9b89bd1dcbfa6..1021ef0f91d52 100644 --- a/src/plugins/data/public/search/expressions/esaggs.ts +++ b/src/plugins/data/public/search/expressions/esaggs.ts @@ -20,7 +20,6 @@ import { get, hasIn } from 'lodash'; import { i18n } from '@kbn/i18n'; import { KibanaDatatable, KibanaDatatableColumn } from 'src/plugins/expressions/public'; -import { calculateObjectHash } from '../../../../../plugins/kibana_utils/public'; import { PersistedState } from '../../../../../plugins/visualizations/public'; import { Adapters } from '../../../../../plugins/inspector/public'; @@ -60,7 +59,6 @@ export interface RequestHandlerParams { indexPattern?: IIndexPattern; query?: Query; filters?: Filter[]; - forceFetch: boolean; filterManager: FilterManager; uiState?: PersistedState; partialRows?: boolean; @@ -80,7 +78,6 @@ const handleCourierRequest = async ({ indexPattern, query, filters, - forceFetch, partialRows, metricsAtAllLevels, inspectorAdapters, @@ -137,46 +134,35 @@ const handleCourierRequest = async ({ requestSearchSource.setField('filter', filters); requestSearchSource.setField('query', query); - const reqBody = await requestSearchSource.getSearchRequestBody(); - - const queryHash = calculateObjectHash(reqBody); - // We only need to reexecute the query, if forceFetch was true or the hash of the request body has changed - // since the last request - const shouldQuery = forceFetch || (searchSource as any).lastQuery !== queryHash; - - if (shouldQuery) { - inspectorAdapters.requests.reset(); - const request = inspectorAdapters.requests.start( - i18n.translate('data.functions.esaggs.inspector.dataRequest.title', { - defaultMessage: 'Data', + inspectorAdapters.requests.reset(); + const request = inspectorAdapters.requests.start( + i18n.translate('data.functions.esaggs.inspector.dataRequest.title', { + defaultMessage: 'Data', + }), + { + description: i18n.translate('data.functions.esaggs.inspector.dataRequest.description', { + defaultMessage: + 'This request queries Elasticsearch to fetch the data for the visualization.', }), - { - description: i18n.translate('data.functions.esaggs.inspector.dataRequest.description', { - defaultMessage: - 'This request queries Elasticsearch to fetch the data for the visualization.', - }), - } - ); - request.stats(getRequestInspectorStats(requestSearchSource)); - - try { - const response = await requestSearchSource.fetch({ abortSignal }); - - (searchSource as any).lastQuery = queryHash; - - request.stats(getResponseInspectorStats(response, searchSource)).ok({ json: response }); - - (searchSource as any).rawResponse = response; - } catch (e) { - // Log any error during request to the inspector - request.error({ json: e }); - throw e; - } finally { - // Add the request body no matter if things went fine or not - requestSearchSource.getSearchRequestBody().then((req: unknown) => { - request.json(req); - }); } + ); + request.stats(getRequestInspectorStats(requestSearchSource)); + + try { + const response = await requestSearchSource.fetch({ abortSignal }); + + request.stats(getResponseInspectorStats(response, searchSource)).ok({ json: response }); + + (searchSource as any).rawResponse = response; + } catch (e) { + // Log any error during request to the inspector + request.error({ json: e }); + throw e; + } finally { + // Add the request body no matter if things went fine or not + requestSearchSource.getSearchRequestBody().then((req: unknown) => { + request.json(req); + }); } // Note that rawResponse is not deeply cloned here, so downstream applications using courier @@ -207,19 +193,11 @@ const handleCourierRequest = async ({ : undefined, }; - const tabifyCacheHash = calculateObjectHash({ tabifyAggs: aggs, ...tabifyParams }); - // We only need to reexecute tabify, if either we did a new request or some input params to tabify changed - const shouldCalculateNewTabify = - shouldQuery || (searchSource as any).lastTabifyHash !== tabifyCacheHash; - - if (shouldCalculateNewTabify) { - (searchSource as any).lastTabifyHash = tabifyCacheHash; - (searchSource as any).tabifiedResponse = tabifyAggResponse( - aggs, - (searchSource as any).finalResponse, - tabifyParams - ); - } + (searchSource as any).tabifiedResponse = tabifyAggResponse( + aggs, + (searchSource as any).finalResponse, + tabifyParams + ); inspectorAdapters.data.setTabularLoader( () => @@ -294,7 +272,6 @@ export const esaggs = (): EsaggsExpressionFunctionDefinition => ({ query: get(input, 'query', undefined) as any, filters: get(input, 'filters', undefined), timeFields: args.timeFields, - forceFetch: true, metricsAtAllLevels: args.metricsAtAllLevels, partialRows: args.partialRows, inspectorAdapters: inspectorAdapters as Adapters, diff --git a/src/plugins/vis_type_timelion/public/helpers/timelion_request_handler.ts b/src/plugins/vis_type_timelion/public/helpers/timelion_request_handler.ts index 0cf6f3723a639..3442f84599fb8 100644 --- a/src/plugins/vis_type_timelion/public/helpers/timelion_request_handler.ts +++ b/src/plugins/vis_type_timelion/public/helpers/timelion_request_handler.ts @@ -78,7 +78,6 @@ export function getTimelionRequestHandler({ filters: Filter[]; query: Query; visParams: VisParams; - forceFetch?: boolean; }): Promise { const expression = visParams.expression; diff --git a/src/plugins/vis_type_timelion/public/timelion_vis_fn.ts b/src/plugins/vis_type_timelion/public/timelion_vis_fn.ts index 7be18a4774d94..d3c6ca5d90371 100644 --- a/src/plugins/vis_type_timelion/public/timelion_vis_fn.ts +++ b/src/plugins/vis_type_timelion/public/timelion_vis_fn.ts @@ -76,7 +76,6 @@ export const getTimelionVisualizationConfig = ( query: get(input, 'query') as Query, filters: get(input, 'filters') as Filter[], visParams, - forceFetch: true, }); response.visType = TIMELION_VIS_NAME; diff --git a/src/plugins/visualizations/public/expressions/visualization_function.ts b/src/plugins/visualizations/public/expressions/visualization_function.ts index 68a153f4272a3..f4241808940b2 100644 --- a/src/plugins/visualizations/public/expressions/visualization_function.ts +++ b/src/plugins/visualizations/public/expressions/visualization_function.ts @@ -117,7 +117,6 @@ export const visualization = (): ExpressionFunctionVisualization => ({ uiState, inspectorAdapters, queryFilter: getFilterManager(), - forceFetch: true, aggs, }); }