From adcc66d9088b0d2912a2e72a205910aa49862981 Mon Sep 17 00:00:00 2001 From: astandrik Date: Mon, 23 Jun 2025 13:44:10 +0300 Subject: [PATCH 1/2] fix: disable oidc streaming --- .../Tenant/Query/QueryEditor/QueryEditor.tsx | 8 +++++++- .../Tenant/Query/QuerySettingsDialog/TimeoutLabel.tsx | 9 ++++++++- src/utils/hooks/useQueryExecutionSettings.ts | 10 +++++++++- 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/src/containers/Tenant/Query/QueryEditor/QueryEditor.tsx b/src/containers/Tenant/Query/QueryEditor/QueryEditor.tsx index d4264bc159..3803321028 100644 --- a/src/containers/Tenant/Query/QueryEditor/QueryEditor.tsx +++ b/src/containers/Tenant/Query/QueryEditor/QueryEditor.tsx @@ -2,6 +2,7 @@ import React from 'react'; import type {Settings} from '@gravity-ui/react-data-table'; import {isEqual} from 'lodash'; +import {StringParam, useQueryParams} from 'use-query-params'; import {v4 as uuidv4} from 'uuid'; import SplitPane from '../../../../components/SplitPane'; @@ -94,10 +95,15 @@ export default function QueryEditor(props: QueryEditorProps) { const [lastExecutedQueryText, setLastExecutedQueryText] = React.useState(''); const [isQueryStreamingEnabled] = useSetting(ENABLE_QUERY_STREAMING); + // Temporary check: disable streaming if backend parameter contains "oidc" + const [{backend}] = useQueryParams({backend: StringParam}); + const isOidcBackend = backend && backend.includes('oidc'); + const isStreamingEnabled = useStreamingAvailable() && isQueryStreamingEnabled && - querySettings.queryMode === QUERY_MODES.query; + querySettings.queryMode === QUERY_MODES.query && + !isOidcBackend; const [sendQuery] = queryApi.useUseSendQueryMutation(); const [streamQuery] = queryApi.useUseStreamQueryMutation(); diff --git a/src/containers/Tenant/Query/QuerySettingsDialog/TimeoutLabel.tsx b/src/containers/Tenant/Query/QuerySettingsDialog/TimeoutLabel.tsx index 4be7444027..1e4048928e 100644 --- a/src/containers/Tenant/Query/QuerySettingsDialog/TimeoutLabel.tsx +++ b/src/containers/Tenant/Query/QuerySettingsDialog/TimeoutLabel.tsx @@ -1,4 +1,5 @@ import {HelpMark, Switch} from '@gravity-ui/uikit'; +import {StringParam, useQueryParams} from 'use-query-params'; import {cn} from '../../../../utils/cn'; import {ENABLE_QUERY_STREAMING} from '../../../../utils/constants'; @@ -20,7 +21,13 @@ interface TimeoutLabelProps { export function TimeoutLabel({isDisabled, isChecked, onToggle}: TimeoutLabelProps) { const [isQueryStreamingEnabled] = useSetting(ENABLE_QUERY_STREAMING); - if (isQueryStreamingEnabled) { + // Temporary check: disable streaming UI if backend parameter contains "oidc" + const [{backend}] = useQueryParams({backend: StringParam}); + const isOidcBackend = backend && backend.includes('oidc'); + + const shouldShowStreamingUI = isQueryStreamingEnabled && !isOidcBackend; + + if (shouldShowStreamingUI) { return (
{ const [useShowPlanToSvg] = useSetting(USE_SHOW_PLAN_SVG_KEY); const [enableQueryStreaming] = useSetting(ENABLE_QUERY_STREAMING); + // Temporary check: disable streaming behavior if backend parameter contains "oidc" + const [{backend}] = useQueryParams({backend: StringParam}); + const isOidcBackend = backend && backend.includes('oidc'); + + const effectiveStreamingEnabled = enableQueryStreaming && !isOidcBackend; + const setQueryExecutionSettings = React.useCallback( (settings: QuerySettings) => { setSettings({ @@ -39,7 +47,7 @@ export const useQueryExecutionSettings = () => { const settings: QuerySettings = { ...validatedSettings, timeout: - enableQueryStreaming && validatedSettings.queryMode === QUERY_MODES.query + effectiveStreamingEnabled && validatedSettings.queryMode === QUERY_MODES.query ? validatedSettings.timeout || null : validatedSettings.timeout || undefined, statisticsMode: useShowPlanToSvg ? STATISTICS_MODES.full : validatedSettings.statisticsMode, From 99b90e4dbc57e841542ce735200590cab24a3836 Mon Sep 17 00:00:00 2001 From: astandrik Date: Mon, 23 Jun 2025 13:50:12 +0300 Subject: [PATCH 2/2] fix: copilot review --- .../Tenant/Query/QueryEditor/QueryEditor.tsx | 5 ++--- .../Tenant/Query/QuerySettingsDialog/TimeoutLabel.tsx | 5 ++--- src/utils/hooks/useDisableOidcStreaming.ts | 10 ++++++++++ src/utils/hooks/useQueryExecutionSettings.ts | 6 ++---- 4 files changed, 16 insertions(+), 10 deletions(-) create mode 100644 src/utils/hooks/useDisableOidcStreaming.ts diff --git a/src/containers/Tenant/Query/QueryEditor/QueryEditor.tsx b/src/containers/Tenant/Query/QueryEditor/QueryEditor.tsx index 3803321028..78969c5d20 100644 --- a/src/containers/Tenant/Query/QueryEditor/QueryEditor.tsx +++ b/src/containers/Tenant/Query/QueryEditor/QueryEditor.tsx @@ -2,7 +2,6 @@ import React from 'react'; import type {Settings} from '@gravity-ui/react-data-table'; import {isEqual} from 'lodash'; -import {StringParam, useQueryParams} from 'use-query-params'; import {v4 as uuidv4} from 'uuid'; import SplitPane from '../../../../components/SplitPane'; @@ -40,6 +39,7 @@ import { useTypedSelector, } from '../../../../utils/hooks'; import {useChangedQuerySettings} from '../../../../utils/hooks/useChangedQuerySettings'; +import {useDisableOidcStreaming} from '../../../../utils/hooks/useDisableOidcStreaming'; import {useLastQueryExecutionSettings} from '../../../../utils/hooks/useLastQueryExecutionSettings'; import {DEFAULT_QUERY_SETTINGS, QUERY_ACTIONS, QUERY_MODES} from '../../../../utils/query'; import {useCurrentSchema} from '../../TenantContext'; @@ -96,8 +96,7 @@ export default function QueryEditor(props: QueryEditorProps) { const [isQueryStreamingEnabled] = useSetting(ENABLE_QUERY_STREAMING); // Temporary check: disable streaming if backend parameter contains "oidc" - const [{backend}] = useQueryParams({backend: StringParam}); - const isOidcBackend = backend && backend.includes('oidc'); + const isOidcBackend = useDisableOidcStreaming(); const isStreamingEnabled = useStreamingAvailable() && diff --git a/src/containers/Tenant/Query/QuerySettingsDialog/TimeoutLabel.tsx b/src/containers/Tenant/Query/QuerySettingsDialog/TimeoutLabel.tsx index 1e4048928e..a1c9fe4797 100644 --- a/src/containers/Tenant/Query/QuerySettingsDialog/TimeoutLabel.tsx +++ b/src/containers/Tenant/Query/QuerySettingsDialog/TimeoutLabel.tsx @@ -1,9 +1,9 @@ import {HelpMark, Switch} from '@gravity-ui/uikit'; -import {StringParam, useQueryParams} from 'use-query-params'; import {cn} from '../../../../utils/cn'; import {ENABLE_QUERY_STREAMING} from '../../../../utils/constants'; import {useSetting} from '../../../../utils/hooks'; +import {useDisableOidcStreaming} from '../../../../utils/hooks/useDisableOidcStreaming'; import {QUERY_SETTINGS_FIELD_SETTINGS} from './constants'; import i18n from './i18n'; @@ -22,8 +22,7 @@ export function TimeoutLabel({isDisabled, isChecked, onToggle}: TimeoutLabelProp const [isQueryStreamingEnabled] = useSetting(ENABLE_QUERY_STREAMING); // Temporary check: disable streaming UI if backend parameter contains "oidc" - const [{backend}] = useQueryParams({backend: StringParam}); - const isOidcBackend = backend && backend.includes('oidc'); + const isOidcBackend = useDisableOidcStreaming(); const shouldShowStreamingUI = isQueryStreamingEnabled && !isOidcBackend; diff --git a/src/utils/hooks/useDisableOidcStreaming.ts b/src/utils/hooks/useDisableOidcStreaming.ts new file mode 100644 index 0000000000..26277966cd --- /dev/null +++ b/src/utils/hooks/useDisableOidcStreaming.ts @@ -0,0 +1,10 @@ +import {StringParam, useQueryParams} from 'use-query-params'; + +/** + * Temporary hook to check if streaming should be disabled for OIDC backends + * Returns true if the backend parameter contains "oidc" + */ +export const useDisableOidcStreaming = () => { + const [{backend}] = useQueryParams({backend: StringParam}); + return backend && backend.includes('oidc'); +}; diff --git a/src/utils/hooks/useQueryExecutionSettings.ts b/src/utils/hooks/useQueryExecutionSettings.ts index f486d2a6b6..e9b8dd1efd 100644 --- a/src/utils/hooks/useQueryExecutionSettings.ts +++ b/src/utils/hooks/useQueryExecutionSettings.ts @@ -1,7 +1,5 @@ import React from 'react'; -import {StringParam, useQueryParams} from 'use-query-params'; - import {useTracingLevelOptionAvailable} from '../../store/reducers/capabilities/hooks'; import type {QuerySettings} from '../../types/store/query'; import { @@ -16,6 +14,7 @@ import { querySettingsRestoreSchema, } from '../query'; +import {useDisableOidcStreaming} from './useDisableOidcStreaming'; import {useSetting} from './useSetting'; export const useQueryExecutionSettings = () => { @@ -27,8 +26,7 @@ export const useQueryExecutionSettings = () => { const [enableQueryStreaming] = useSetting(ENABLE_QUERY_STREAMING); // Temporary check: disable streaming behavior if backend parameter contains "oidc" - const [{backend}] = useQueryParams({backend: StringParam}); - const isOidcBackend = backend && backend.includes('oidc'); + const isOidcBackend = useDisableOidcStreaming(); const effectiveStreamingEnabled = enableQueryStreaming && !isOidcBackend;