This is an automated email from the ASF dual-hosted git repository. vogievetsky pushed a commit to branch segment_timeline2 in repository https://gitbox.apache.org/repos/asf/druid.git
commit 797fabae237e0b565cc7ab902c95ec1fe26f7fb1 Author: Vadim Ogievetsky <[email protected]> AuthorDate: Tue Nov 12 15:26:20 2024 -0800 increment store only on appropriate engine --- .../current-dart-panel/current-dart-panel.tsx | 12 ++++-------- .../views/workbench-view/query-tab/query-tab.tsx | 13 +++++++------ .../recent-query-task-panel.tsx | 18 ++++-------------- .../src/views/workbench-view/work-state-store.ts | 22 +++++++++++++++++----- 4 files changed, 32 insertions(+), 33 deletions(-) diff --git a/web-console/src/views/workbench-view/current-dart-panel/current-dart-panel.tsx b/web-console/src/views/workbench-view/current-dart-panel/current-dart-panel.tsx index 321ad40fc8f..5f104b75f2d 100644 --- a/web-console/src/views/workbench-view/current-dart-panel/current-dart-panel.tsx +++ b/web-console/src/views/workbench-view/current-dart-panel/current-dart-panel.tsx @@ -20,7 +20,7 @@ import { Button, Icon, Intent, Menu, MenuDivider, MenuItem, Popover } from '@blu import { type IconName, IconNames } from '@blueprintjs/icons'; import classNames from 'classnames'; import copy from 'copy-to-clipboard'; -import React, { useCallback, useState } from 'react'; +import React, { useState } from 'react'; import { useStore } from 'zustand'; import { Loader } from '../../../components'; @@ -30,7 +30,7 @@ import { Api, AppToaster } from '../../../singletons'; import { formatDuration, prettyFormatIsoDate } from '../../../utils'; import { CancelQueryDialog } from '../cancel-query-dialog/cancel-query-dialog'; import { DartDetailsDialog } from '../dart-details-dialog/dart-details-dialog'; -import { workStateStore } from '../work-state-store'; +import { getMsqDartVersion, WORK_STATE_STORE } from '../work-state-store'; import './current-dart-panel.scss'; @@ -59,13 +59,8 @@ export const CurrentDartPanel = React.memo(function CurrentViberPanel( const [showSql, setShowSql] = useState<string | undefined>(); const [confirmCancelId, setConfirmCancelId] = useState<string | undefined>(); - const workStateVersion = useStore( - workStateStore, - useCallback(state => state.version, []), - ); - const [dartQueryEntriesState, queryManager] = useQueryManager<number, DartQueryEntry[]>({ - query: workStateVersion, + query: useStore(WORK_STATE_STORE, getMsqDartVersion), processQuery: async (_, cancelToken) => { return (await Api.instance.get('/druid/v2/sql/dart', { cancelToken })).data.queries; }, @@ -178,6 +173,7 @@ export const CurrentDartPanel = React.memo(function CurrentViberPanel( message: 'Query canceled', intent: Intent.SUCCESS, }); + queryManager.rerunLastQuery(); } catch { AppToaster.show({ message: 'Could not cancel query', diff --git a/web-console/src/views/workbench-view/query-tab/query-tab.tsx b/web-console/src/views/workbench-view/query-tab/query-tab.tsx index 63865054446..e0bcf54e582 100644 --- a/web-console/src/views/workbench-view/query-tab/query-tab.tsx +++ b/web-console/src/views/workbench-view/query-tab/query-tab.tsx @@ -61,7 +61,7 @@ import { metadataStateStore } from '../metadata-state-store'; import { ResultTablePane } from '../result-table-pane/result-table-pane'; import type { RunPanelProps } from '../run-panel/run-panel'; import { RunPanel } from '../run-panel/run-panel'; -import { workStateStore } from '../work-state-store'; +import { WORK_STATE_STORE } from '../work-state-store'; import './query-tab.scss'; @@ -362,12 +362,13 @@ export const QueryTab = React.memo(function QueryTab(props: QueryTabProps) { // eslint-disable-next-line react-hooks/exhaustive-deps }, [executionState.data, executionState.error]); - const incrementWorkVersion = useStore( - workStateStore, - useCallback(state => state.increment, []), - ); useEffect(() => { - incrementWorkVersion(); + const effectiveEngine = query.getEffectiveEngine(); + if (effectiveEngine === 'sql-msq-task') { + WORK_STATE_STORE.getState().incrementMsqTask(); + } else if (effectiveEngine === 'sql-msq-dart') { + WORK_STATE_STORE.getState().incrementMsqDart(); + } // eslint-disable-next-line react-hooks/exhaustive-deps }, [executionState.loading, Boolean(executionState.intermediate)]); diff --git a/web-console/src/views/workbench-view/recent-query-task-panel/recent-query-task-panel.tsx b/web-console/src/views/workbench-view/recent-query-task-panel/recent-query-task-panel.tsx index 682f5fd4d38..33073e961e3 100644 --- a/web-console/src/views/workbench-view/recent-query-task-panel/recent-query-task-panel.tsx +++ b/web-console/src/views/workbench-view/recent-query-task-panel/recent-query-task-panel.tsx @@ -22,7 +22,7 @@ import { IconNames } from '@blueprintjs/icons'; import { T } from '@druid-toolkit/query'; import classNames from 'classnames'; import copy from 'copy-to-clipboard'; -import React, { useCallback, useState } from 'react'; +import React, { useState } from 'react'; import { useStore } from 'zustand'; import { Loader } from '../../../components'; @@ -38,7 +38,7 @@ import { queryDruidSql, } from '../../../utils'; import { CancelQueryDialog } from '../cancel-query-dialog/cancel-query-dialog'; -import { workStateStore } from '../work-state-store'; +import { getMsqTaskVersion, WORK_STATE_STORE } from '../work-state-store'; import './recent-query-task-panel.scss'; @@ -83,13 +83,8 @@ export const RecentQueryTaskPanel = React.memo(function RecentQueryTaskPanel( const [confirmCancelId, setConfirmCancelId] = useState<string | undefined>(); - const workStateVersion = useStore( - workStateStore, - useCallback(state => state.version, []), - ); - const [queryTaskHistoryState, queryManager] = useQueryManager<number, RecentQueryEntry[]>({ - query: workStateVersion, + query: useStore(WORK_STATE_STORE, getMsqTaskVersion), processQuery: async (_, cancelToken) => { return await queryDruidSql<RecentQueryEntry>( { @@ -116,11 +111,6 @@ LIMIT 100`, const now = useClock(); - const incrementWorkVersion = useStore( - workStateStore, - useCallback(state => state.increment, []), - ); - const queryTaskHistory = queryTaskHistoryState.getSomeData(); return ( <div className="recent-query-task-panel"> @@ -275,7 +265,7 @@ LIMIT 100`, message: 'Query canceled', intent: Intent.SUCCESS, }); - incrementWorkVersion(); + queryManager.rerunLastQuery(); } catch { AppToaster.show({ message: 'Could not cancel query', diff --git a/web-console/src/views/workbench-view/work-state-store.ts b/web-console/src/views/workbench-view/work-state-store.ts index ee03a70c030..38fb8d8e673 100644 --- a/web-console/src/views/workbench-view/work-state-store.ts +++ b/web-console/src/views/workbench-view/work-state-store.ts @@ -19,11 +19,23 @@ import { createStore } from 'zustand'; interface WorkState { - version: number; - increment(): void; + msqTaskVersion: number; + msqDartVersion: number; + incrementMsqTask(): void; + incrementMsqDart(): void; } -export const workStateStore = createStore<WorkState>(set => ({ - version: 0, - increment: () => set(state => ({ version: state.version + 1 })), +export const WORK_STATE_STORE = createStore<WorkState>(set => ({ + msqTaskVersion: 0, + msqDartVersion: 0, + incrementMsqTask: () => set(state => ({ msqTaskVersion: state.msqTaskVersion + 1 })), + incrementMsqDart: () => set(state => ({ msqDartVersion: state.msqDartVersion + 1 })), })); + +export function getMsqTaskVersion(store: WorkState): number { + return store.msqTaskVersion; +} + +export function getMsqDartVersion(store: WorkState): number { + return store.msqDartVersion; +} --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
