Skip to content

Commit 8234116

Browse files
committed
fix: dont reask trace for query if it fetched
1 parent 47659bb commit 8234116

File tree

5 files changed

+37
-7
lines changed

5 files changed

+37
-7
lines changed

src/containers/Tenant/Query/ExecuteResult/ExecuteResult.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -270,7 +270,9 @@ export function ExecuteResult({
270270
<CancelQueryButton queryId={queryId} tenantName={tenantName} />
271271
</React.Fragment>
272272
) : null}
273-
{data?.traceId ? <TraceButton traceId={data.traceId} /> : null}
273+
{data?.traceId ? (
274+
<TraceButton traceId={data.traceId} isTraceReady={result.isTraceReady} />
275+
) : null}
274276
</div>
275277
<div className={b('controls-left')}>
276278
{renderClipboardButton()}

src/containers/Tenant/Query/ExecuteResult/TraceButton.tsx

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,10 @@ import i18n from './i18n';
1111

1212
interface TraceUrlButtonProps {
1313
traceId: string;
14+
isTraceReady?: true;
1415
}
1516

16-
export function TraceButton({traceId}: TraceUrlButtonProps) {
17+
export function TraceButton({traceId, isTraceReady}: TraceUrlButtonProps) {
1718
const {traceCheck, traceView} = useClusterBaseInfo();
1819

1920
const checkTraceUrl = traceCheck?.url ? replaceParams(traceCheck.url, {traceId}) : '';
@@ -23,14 +24,14 @@ export function TraceButton({traceId}: TraceUrlButtonProps) {
2324

2425
React.useEffect(() => {
2526
let checkTraceMutation: {abort: () => void} | null;
26-
if (checkTraceUrl) {
27+
if (checkTraceUrl && !isTraceReady) {
2728
checkTraceMutation = checkTrace({url: checkTraceUrl});
2829
}
2930

3031
return () => checkTraceMutation?.abort();
31-
}, [checkTrace, checkTraceUrl]);
32+
}, [checkTrace, checkTraceUrl, isTraceReady]);
3233

33-
if (!traceUrl || isUninitialized) {
34+
if (!traceUrl || (isUninitialized && !isTraceReady)) {
3435
return null;
3536
}
3637

src/store/reducers/executeQuery.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ const MAXIMUM_QUERIES_IN_HISTORY = 20;
2222

2323
const CHANGE_USER_INPUT = 'query/CHANGE_USER_INPUT';
2424
const SET_QUERY_RESULT = 'query/SET_QUERY_RESULT';
25+
const SET_QUERY_TRACE_READY = 'query/SET_QUERY_TRACE_READY';
2526
const SAVE_QUERY_TO_HISTORY = 'query/SAVE_QUERY_TO_HISTORY';
2627
const UPDATE_QUERY_IN_HISTORY = 'query/UPDATE_QUERY_IN_HISTORY';
2728
const SET_QUERY_HISTORY_FILTER = 'query/SET_QUERY_HISTORY_FILTER';
@@ -63,6 +64,20 @@ const executeQuery: Reducer<ExecuteQueryState, ExecuteQueryAction> = (
6364
};
6465
}
6566

67+
case SET_QUERY_TRACE_READY: {
68+
if (state.result) {
69+
return {
70+
...state,
71+
result: {
72+
...state.result,
73+
isTraceReady: true,
74+
},
75+
};
76+
}
77+
78+
return state;
79+
}
80+
6681
case SET_QUERY_RESULT: {
6782
return {
6883
...state,
@@ -313,6 +328,12 @@ export function setQueryResult(data?: QueryResult) {
313328
} as const;
314329
}
315330

331+
export function setQueryTraceReady() {
332+
return {
333+
type: SET_QUERY_TRACE_READY,
334+
} as const;
335+
}
336+
316337
export const goToPreviousQuery = () => {
317338
return {
318339
type: GO_TO_PREVIOUS_QUERY,

src/store/reducers/trace.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import {api} from './api';
2+
import {setQueryTraceReady} from './executeQuery';
23

34
interface CheckTraceParams {
45
url: string;
@@ -7,9 +8,11 @@ interface CheckTraceParams {
78
export const traceApi = api.injectEndpoints({
89
endpoints: (build) => ({
910
checkTrace: build.mutation({
10-
queryFn: async ({url}: CheckTraceParams, {signal}) => {
11+
queryFn: async ({url}: CheckTraceParams, {signal, dispatch}) => {
1112
try {
1213
const response = await window.api.checkTrace({url}, {signal});
14+
15+
dispatch(setQueryTraceReady());
1316
return {data: response};
1417
} catch (error) {
1518
return {error: error};

src/types/store/executeQuery.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import type {
55
saveQueryToHistory,
66
setQueryHistoryFilter,
77
setQueryResult,
8+
setQueryTraceReady,
89
setTenantPath,
910
updateQueryInHistory,
1011
} from '../../store/reducers/executeQuery';
@@ -34,6 +35,7 @@ export type ExecuteQueryResult = {
3435
type: ResultType.EXECUTE;
3536
data?: IQueryResult;
3637
error?: unknown;
38+
isTraceReady?: true;
3739
} & CommonResultParams;
3840

3941
export type ExplainQueryResult = {
@@ -64,7 +66,8 @@ export type ExecuteQueryAction =
6466
| ReturnType<typeof saveQueryToHistory>
6567
| ReturnType<typeof updateQueryInHistory>
6668
| ReturnType<typeof setTenantPath>
67-
| ReturnType<typeof setQueryHistoryFilter>;
69+
| ReturnType<typeof setQueryHistoryFilter>
70+
| ReturnType<typeof setQueryTraceReady>;
6871

6972
export interface ExecuteQueryStateSlice {
7073
executeQuery: ExecuteQueryState;

0 commit comments

Comments
 (0)