diff --git a/docs/configuration/index.md b/docs/configuration/index.md index 5723d8926e4d..91168d9471a1 100644 --- a/docs/configuration/index.md +++ b/docs/configuration/index.md @@ -953,7 +953,7 @@ The following table shows the dynamic configuration properties for the Coordinat |`decommissioningNodes`|List of Historical servers to decommission. Coordinator will not assign new segments to decommissioning servers, and segments will be moved away from them to be placed on non-decommissioning servers at the maximum rate specified by `maxSegmentsToMove`.|none| |`pauseCoordination`|Boolean flag for whether or not the Coordinator should execute its various duties of coordinating the cluster. Setting this to true essentially pauses all coordination work while allowing the API to remain up. Duties that are paused include all classes that implement the `CoordinatorDuty` interface. Such duties include: segment balancing, segment compaction, submitting kill tasks for unused segments (if enabled), logging of used segments in the cluster, marking of newly unused or overshadowed segments, matching and execution of load/drop rules for used segments, unloading segments that are no longer marked as used from Historical servers. An example of when an admin may want to pause coordination would be if they are doing deep storage maintenance on HDFS name nodes with downtime and don't want the Coordinator to be directing Historical nodes to hit the name node with API requests until maintenance is done and the deep store is declared healthy for use again.|false| |`replicateAfterLoadTimeout`|Boolean flag for whether or not additional replication is needed for segments that have failed to load due to the expiry of `druid.coordinator.load.timeout`. If this is set to true, the Coordinator will attempt to replicate the failed segment on a different historical server. This helps improve the segment availability if there are a few slow Historicals in the cluster. However, the slow Historical may still load the segment later and the Coordinator may issue drop requests if the segment is over-replicated.|false| -|`turboLoadingNodes`| List of Historical servers to place in turbo loading mode. These servers use a larger thread-pool to load segments faster but at the cost of query performance. For servers specified in `turboLoadingNodes`, `druid.coordinator.loadqueuepeon.http.batchSize` is ignored and the coordinator uses the value of the respective `numLoadingThreads` instead. |none| +|`turboLoadingNodes`| Experimental. List of Historical servers to place in turbo loading mode. These servers use a larger thread-pool to load segments faster but at the cost of query performance. For servers specified in `turboLoadingNodes`, `druid.coordinator.loadqueuepeon.http.batchSize` is ignored and the coordinator uses the value of the respective `numLoadingThreads` instead.Please use this config with caution. All servers should eventually be removed from this list once the segment loading on the respective historicals is finished. |none| ##### Smart segment loading diff --git a/web-console/src/components/auto-form/auto-form.tsx b/web-console/src/components/auto-form/auto-form.tsx index 7026ca5d5dc6..746e7dc4ce84 100644 --- a/web-console/src/components/auto-form/auto-form.tsx +++ b/web-console/src/components/auto-form/auto-form.tsx @@ -28,7 +28,7 @@ import { IconNames } from '@blueprintjs/icons'; import type { JSX } from 'react'; import React from 'react'; -import { deepDelete, deepGet, deepSet, durationSanitizer } from '../../utils'; +import { deepDelete, deepGet, deepSet, durationSanitizer, EXPERIMENTAL_ICON } from '../../utils'; import { ArrayInput } from '../array-input/array-input'; import { FancyNumericInput } from '../fancy-numeric-input/fancy-numeric-input'; import { FormGroupWithInfo } from '../form-group-with-info/form-group-with-info'; @@ -65,6 +65,7 @@ export interface Field { max?: number; zeroMeansUndefined?: boolean; height?: string; + experimental?: Functor; disabled?: Functor; defined?: Functor; required?: Functor; @@ -509,10 +510,20 @@ export class AutoForm> extends React.PureComponent if (!model) return; const label = field.label || AutoForm.makeLabelName(field.name); + const experimental = AutoForm.evaluateFunctor(field.experimental, model, false); return ( + {`${label} `} + {EXPERIMENTAL_ICON} + > + ) : ( + label + ) + } info={field.info ? {field.info} : undefined} > {this.renderFieldInput(field)} diff --git a/web-console/src/components/header-bar/__snapshots__/header-bar.spec.tsx.snap b/web-console/src/components/header-bar/__snapshots__/header-bar.spec.tsx.snap index d8e883e50e4c..d713f2fa86f1 100644 --- a/web-console/src/components/header-bar/__snapshots__/header-bar.spec.tsx.snap +++ b/web-console/src/components/header-bar/__snapshots__/header-bar.spec.tsx.snap @@ -168,7 +168,15 @@ exports[`HeaderBar matches snapshot 1`] = ` disabled={false} href="#explore" icon="map" - label="(experimental)" + labelElement={ + + } multiline={false} popoverProps={{}} selected={false} diff --git a/web-console/src/components/header-bar/header-bar.tsx b/web-console/src/components/header-bar/header-bar.tsx index 46c1e9340fde..140edc051c1b 100644 --- a/web-console/src/components/header-bar/header-bar.tsx +++ b/web-console/src/components/header-bar/header-bar.tsx @@ -44,6 +44,7 @@ import { import { Capabilities } from '../../helpers'; import { getLink } from '../../links'; import { + EXPERIMENTAL_ICON, localStorageGetJson, LocalStorageKeys, localStorageRemove, @@ -153,7 +154,7 @@ export const HeaderBar = React.memo(function HeaderBar(props: HeaderBarProps) { [ > ), }, + { + name: 'turboLoadingNodes', + type: 'string-array', + experimental: true, + info: ( + <> + + List of Historical servers to place in turbo loading mode. These servers use a larger + thread-pool to load segments faster but at the cost of query performance. For servers + specified in turboLoadingNodes,{' '} + druid.coordinator.loadqueuepeon.http.batchSize is ignored and the coordinator + uses the value of the respective numLoadingThreads instead. + + + Please use this config with caution. All servers should eventually be removed from this + list once the segment loading on the respective historicals is finished. + + > + ), + }, { name: 'killDataSourceWhitelist', label: 'Kill datasource whitelist', diff --git a/web-console/src/utils/general.tsx b/web-console/src/utils/general.tsx index d204c7a89e07..1cb6765b86f8 100644 --- a/web-console/src/utils/general.tsx +++ b/web-console/src/utils/general.tsx @@ -16,7 +16,7 @@ * limitations under the License. */ -import { Classes, Intent } from '@blueprintjs/core'; +import { Classes, Icon, Intent } from '@blueprintjs/core'; import type { IconName } from '@blueprintjs/icons'; import { IconNames } from '@blueprintjs/icons'; import copy from 'copy-to-clipboard'; @@ -708,3 +708,7 @@ export function toggle(xs: readonly T[], x: T, eq?: (a: T, b: T) => boolean): const e = eq || ((a, b) => a === b); return xs.find(_ => e(_, x)) ? xs.filter(d => !e(d, x)) : xs.concat([x]); } + +export const EXPERIMENTAL_ICON = ( + +); diff --git a/web-console/src/views/sql-data-loader-view/schema-step/schema-step.tsx b/web-console/src/views/sql-data-loader-view/schema-step/schema-step.tsx index 232c6635361f..f3ee9fa2adc4 100644 --- a/web-console/src/views/sql-data-loader-view/schema-step/schema-step.tsx +++ b/web-console/src/views/sql-data-loader-view/schema-step/schema-step.tsx @@ -22,7 +22,6 @@ import { ButtonGroup, Callout, FormGroup, - Icon, Intent, Menu, MenuDivider, @@ -83,6 +82,7 @@ import { dataTypeToIcon, deepSet, DruidError, + EXPERIMENTAL_ICON, filterMap, oneOf, queryDruidSql, @@ -107,8 +107,6 @@ import { RollupAnalysisPane } from './rollup-analysis-pane/rollup-analysis-pane' import './schema-step.scss'; -const EXPERIMENTAL_ICON = ; - const queryRunner = new QueryRunner(); function digestQueryString(queryString: string): {
+ List of Historical servers to place in turbo loading mode. These servers use a larger + thread-pool to load segments faster but at the cost of query performance. For servers + specified in turboLoadingNodes,{' '} + druid.coordinator.loadqueuepeon.http.batchSize is ignored and the coordinator + uses the value of the respective numLoadingThreads instead. +
turboLoadingNodes
druid.coordinator.loadqueuepeon.http.batchSize
numLoadingThreads
+ Please use this config with caution. All servers should eventually be removed from this + list once the segment loading on the respective historicals is finished. +