From 025c2d040de18c02e9d7def0d4fbbcd1cd88ba05 Mon Sep 17 00:00:00 2001 From: Walter Rafelsberger Date: Tue, 6 Feb 2024 12:50:38 +0100 Subject: [PATCH] [ML] AIOps: Fix rerender issue with relative time ranges like "Last 15 minutes" (#176130) ## Summary Fixes #176066. Regression introduced in #175289. Fixes a rerendering issue with relative time ranges like "Last 15 minutes". The memoization didn't work correctly because for the relative time range we would constantly get updated bounds. ### Checklist Delete any items that are not applicable to this PR. - [x] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios - [x] [Flaky Test Runner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1) was used on any tests changed - [x] This was checked for breaking API changes and was [labeled appropriately](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process) --- .../log_rate_analysis_content.tsx | 5 +---- .../log_rate_analysis_content_wrapper.tsx | 4 ---- .../log_rate_analysis/log_rate_analysis_page.tsx | 1 - x-pack/plugins/aiops/public/hooks/use_data.ts | 2 +- .../aiops/public/hooks/use_document_count_stats.ts | 12 +++++++----- .../test/functional/apps/aiops/log_rate_analysis.ts | 3 +-- 6 files changed, 10 insertions(+), 17 deletions(-) diff --git a/x-pack/plugins/aiops/public/components/log_rate_analysis/log_rate_analysis_content/log_rate_analysis_content.tsx b/x-pack/plugins/aiops/public/components/log_rate_analysis/log_rate_analysis_content/log_rate_analysis_content.tsx index daac98f67f7502..1ed80f54be2a68 100644 --- a/x-pack/plugins/aiops/public/components/log_rate_analysis/log_rate_analysis_content/log_rate_analysis_content.tsx +++ b/x-pack/plugins/aiops/public/components/log_rate_analysis/log_rate_analysis_content/log_rate_analysis_content.tsx @@ -15,7 +15,6 @@ import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; import type { DataView } from '@kbn/data-views-plugin/public'; -import type { Dictionary } from '@kbn/ml-url-state'; import { LOG_RATE_ANALYSIS_TYPE, type LogRateAnalysisType, @@ -62,7 +61,6 @@ export function getDocumentCountStatsSplitLabel( export interface LogRateAnalysisContentProps { /** The data view to analyze. */ dataView: DataView; - setGlobalState?: (params: Dictionary) => void; /** Timestamp for the start of the range for initial analysis */ initialAnalysisStart?: number | WindowParameters; timeRange?: { min: Moment; max: Moment }; @@ -84,7 +82,6 @@ export interface LogRateAnalysisContentProps { export const LogRateAnalysisContent: FC = ({ dataView, - setGlobalState, initialAnalysisStart: incomingInitialAnalysisStart, timeRange, esSearchQuery = DEFAULT_SEARCH_QUERY, @@ -150,7 +147,7 @@ export const LogRateAnalysisContent: FC = ({ dataView, 'log_rate_analysis', searchQuery, - setGlobalState, + undefined, currentSelectedSignificantItem, currentSelectedGroup, undefined, diff --git a/x-pack/plugins/aiops/public/components/log_rate_analysis/log_rate_analysis_content/log_rate_analysis_content_wrapper.tsx b/x-pack/plugins/aiops/public/components/log_rate_analysis/log_rate_analysis_content/log_rate_analysis_content_wrapper.tsx index 62fac2312ebfdb..42ae9b2cf08688 100644 --- a/x-pack/plugins/aiops/public/components/log_rate_analysis/log_rate_analysis_content/log_rate_analysis_content_wrapper.tsx +++ b/x-pack/plugins/aiops/public/components/log_rate_analysis/log_rate_analysis_content/log_rate_analysis_content_wrapper.tsx @@ -40,8 +40,6 @@ export interface LogRateAnalysisContentWrapperProps { stickyHistogram?: boolean; /** App dependencies */ appDependencies: AiopsAppDependencies; - /** On global timefilter update */ - setGlobalState?: any; /** Timestamp for start of initial analysis */ initialAnalysisStart?: number | WindowParameters; /** Optional time range */ @@ -66,7 +64,6 @@ export interface LogRateAnalysisContentWrapperProps { export const LogRateAnalysisContentWrapper: FC = ({ dataView, appDependencies, - setGlobalState, initialAnalysisStart, timeRange, esSearchQuery, @@ -100,7 +97,6 @@ export const LogRateAnalysisContentWrapper: FC = ({ stickyHistogram }) => { embeddingOrigin={AIOPS_TELEMETRY_ID.AIOPS_DEFAULT_SOURCE} esSearchQuery={searchQuery} onWindowParametersChange={onWindowParametersHandler} - setGlobalState={setGlobalState} stickyHistogram={stickyHistogram} /> diff --git a/x-pack/plugins/aiops/public/hooks/use_data.ts b/x-pack/plugins/aiops/public/hooks/use_data.ts index 4f0e2526d7a1db..36cfdbca0f52f1 100644 --- a/x-pack/plugins/aiops/public/hooks/use_data.ts +++ b/x-pack/plugins/aiops/public/hooks/use_data.ts @@ -57,7 +57,7 @@ export const useData = ( const timeRangeMemoized = useMemo( () => timefilter.getActiveBounds(), // eslint-disable-next-line react-hooks/exhaustive-deps - [JSON.stringify(timefilter.getActiveBounds())] + [lastRefresh, JSON.stringify(timefilter.getTime())] ); const fieldStatsRequest: DocumentStatsSearchStrategyParams | undefined = useMemo(() => { diff --git a/x-pack/plugins/aiops/public/hooks/use_document_count_stats.ts b/x-pack/plugins/aiops/public/hooks/use_document_count_stats.ts index c154640acd4e84..6acbb0855d253d 100644 --- a/x-pack/plugins/aiops/public/hooks/use_document_count_stats.ts +++ b/x-pack/plugins/aiops/public/hooks/use_document_count_stats.ts @@ -77,13 +77,13 @@ export function useDocumentCountStats>({}); + const cacheKey = stringHash( + `${JSON.stringify(searchParams)}_${JSON.stringify(searchParamsCompare)}` + ); + const fetchDocumentCountData = useCallback(async () => { if (!searchParams) return; - const cacheKey = stringHash( - `${JSON.stringify(searchParams)}_${JSON.stringify(searchParamsCompare)}` - ); - if (documentStatsCache[cacheKey]) { setDocumentStats(documentStatsCache[cacheKey]); return; @@ -172,7 +172,9 @@ export function useDocumentCountStats {