From 47659bba27fcac6b134f89c783fd663dbdf5c622 Mon Sep 17 00:00:00 2001 From: Anton Standrik Date: Tue, 29 Oct 2024 17:32:24 +0300 Subject: [PATCH 1/2] fix: tracing issues --- .../Query/ExecuteResult/TraceButton.tsx | 26 +++++++------------ src/services/api.ts | 9 ++++--- src/store/reducers/trace.ts | 2 +- 3 files changed, 16 insertions(+), 21 deletions(-) diff --git a/src/containers/Tenant/Query/ExecuteResult/TraceButton.tsx b/src/containers/Tenant/Query/ExecuteResult/TraceButton.tsx index e07042390..37fa5dc6e 100644 --- a/src/containers/Tenant/Query/ExecuteResult/TraceButton.tsx +++ b/src/containers/Tenant/Query/ExecuteResult/TraceButton.tsx @@ -5,14 +5,10 @@ import {Button} from '@gravity-ui/uikit'; import {useClusterBaseInfo} from '../../../../store/reducers/cluster/cluster'; import {traceApi} from '../../../../store/reducers/trace'; -import {SECOND_IN_MS} from '../../../../utils/constants'; -import {useDelayed} from '../../../../utils/hooks/useDelayed'; import {replaceParams} from '../utils/replaceParams'; import i18n from './i18n'; -const TIME_BEFORE_CHECK = 15 * SECOND_IN_MS; - interface TraceUrlButtonProps { traceId: string; } @@ -23,27 +19,25 @@ export function TraceButton({traceId}: TraceUrlButtonProps) { const checkTraceUrl = traceCheck?.url ? replaceParams(traceCheck.url, {traceId}) : ''; const traceUrl = traceView?.url ? replaceParams(traceView.url, {traceId}) : ''; - // We won't get any trace data at first 15 seconds for sure - const [readyToFetch, resetDelay] = useDelayed(TIME_BEFORE_CHECK); + const [checkTrace, {isLoading, isUninitialized}] = traceApi.useCheckTraceMutation(); React.useEffect(() => { - resetDelay(); - }, [traceId, resetDelay]); + let checkTraceMutation: {abort: () => void} | null; + if (checkTraceUrl) { + checkTraceMutation = checkTrace({url: checkTraceUrl}); + } - const {isFetching} = traceApi.useCheckTraceQuery( - {url: checkTraceUrl}, - {skip: !checkTraceUrl || !readyToFetch}, - ); + return () => checkTraceMutation?.abort(); + }, [checkTrace, checkTraceUrl]); - if (!traceUrl) { + if (!traceUrl || isUninitialized) { return null; } - const loading = !readyToFetch || isFetching; return (