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]

Reply via email to