You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@druid.apache.org by vo...@apache.org on 2022/09/22 02:39:34 UTC
[druid] branch master updated: append to exisitng callout (#13130)
This is an automated email from the ASF dual-hosted git repository.
vogievetsky pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/druid.git
The following commit(s) were added to refs/heads/master by this push:
new f1d3728371 append to exisitng callout (#13130)
f1d3728371 is described below
commit f1d3728371731dae22ed88af6ee904acf0f0d6f0
Author: Vadim Ogievetsky <va...@ogievetsky.com>
AuthorDate: Wed Sep 21 19:39:28 2022 -0700
append to exisitng callout (#13130)
---
.../src/views/load-data-view/info-messages.tsx | 48 +++++++++++++++++++++-
.../src/views/load-data-view/load-data-view.tsx | 8 +++-
2 files changed, 53 insertions(+), 3 deletions(-)
diff --git a/web-console/src/views/load-data-view/info-messages.tsx b/web-console/src/views/load-data-view/info-messages.tsx
index 7d7235bc3d..2d151ea995 100644
--- a/web-console/src/views/load-data-view/info-messages.tsx
+++ b/web-console/src/views/load-data-view/info-messages.tsx
@@ -16,12 +16,13 @@
* limitations under the License.
*/
-import { Callout, Code, FormGroup } from '@blueprintjs/core';
+import { Button, Callout, Code, FormGroup, Intent } from '@blueprintjs/core';
import React from 'react';
import { ExternalLink, LearnMore } from '../../components';
import { DimensionMode, getIngestionDocLink, IngestionSpec } from '../../druid-models';
import { getLink } from '../../links';
+import { deepGet, deepSet } from '../../utils';
export interface ConnectMessageProps {
inlineMode: boolean;
@@ -216,3 +217,48 @@ export const SpecMessage = React.memo(function SpecMessage() {
</FormGroup>
);
});
+
+export interface AppendToExistingIssueProps {
+ spec: Partial<IngestionSpec>;
+ onChangeSpec(newSpec: Partial<IngestionSpec>): void;
+}
+
+export const AppendToExistingIssue = React.memo(function AppendToExistingIssue(
+ props: AppendToExistingIssueProps,
+) {
+ const { spec, onChangeSpec } = props;
+
+ const partitionsSpecType = deepGet(spec, 'spec.tuningConfig.partitionsSpec.type');
+ if (
+ partitionsSpecType === 'dynamic' ||
+ deepGet(spec, 'spec.ioConfig.appendToExisting') !== true
+ ) {
+ return null;
+ }
+
+ const dynamicPartitionSpec = {
+ type: 'dynamic',
+ maxRowsPerSegment:
+ deepGet(spec, 'spec.tuningConfig.partitionsSpec.maxRowsPerSegment') ||
+ deepGet(spec, 'spec.tuningConfig.partitionsSpec.targetRowsPerSegment'),
+ };
+
+ return (
+ <FormGroup>
+ <Callout intent={Intent.DANGER}>
+ <p>
+ Only <Code>dynamic</Code> partitioning supports <Code>appendToExisting: true</Code>. You
+ have currently selected <Code>{partitionsSpecType}</Code> partitioning.
+ </p>
+ <Button
+ intent={Intent.SUCCESS}
+ onClick={() =>
+ onChangeSpec(deepSet(spec, 'spec.tuningConfig.partitionsSpec', dynamicPartitionSpec))
+ }
+ >
+ Change to <Code>dynamic</Code> partitioning
+ </Button>
+ </Callout>
+ </FormGroup>
+ );
+});
diff --git a/web-console/src/views/load-data-view/load-data-view.tsx b/web-console/src/views/load-data-view/load-data-view.tsx
index 989263a880..e4322e34e5 100644
--- a/web-console/src/views/load-data-view/load-data-view.tsx
+++ b/web-console/src/views/load-data-view/load-data-view.tsx
@@ -168,6 +168,7 @@ import { ExamplePicker } from './example-picker/example-picker';
import { FilterTable, filterTableSelectedColumnName } from './filter-table/filter-table';
import { FormEditor } from './form-editor/form-editor';
import {
+ AppendToExistingIssue,
ConnectMessage,
FilterMessage,
ParserMessage,
@@ -3002,6 +3003,7 @@ export class LoadDataView extends React.PureComponent<LoadDataViewProps, LoadDat
<div className="control">
<PartitionMessage />
{nonsensicalSingleDimPartitioningMessage}
+ <AppendToExistingIssue spec={spec} onChangeSpec={this.updateSpec} />
</div>
{this.renderNextBar({
disabled: invalidPartitionConfig(spec),
@@ -3095,8 +3097,8 @@ export class LoadDataView extends React.PureComponent<LoadDataViewProps, LoadDat
label: 'Append to existing',
type: 'boolean',
defaultValue: false,
- defined: spec =>
- deepGet(spec, 'spec.tuningConfig.partitionsSpec.type') === 'dynamic',
+ // appendToExisting can only be set on 'dynamic' portioning.
+ // We chose to show it always and instead have a specific message, separate from this form, to notify the user of the issue.
info: (
<>
Creates segments as additional shards of the latest version, effectively
@@ -3165,6 +3167,7 @@ export class LoadDataView extends React.PureComponent<LoadDataViewProps, LoadDat
</div>
<div className="control">
<PublishMessage />
+ <AppendToExistingIssue spec={spec} onChangeSpec={this.updateSpec} />
</div>
{this.renderNextBar({})}
</>
@@ -3233,6 +3236,7 @@ export class LoadDataView extends React.PureComponent<LoadDataViewProps, LoadDat
>{`There is an issue with the spec: ${issueWithSpec}`}</Callout>
</FormGroup>
)}
+ <AppendToExistingIssue spec={spec} onChangeSpec={this.updateSpec} />
</div>
<div className="next-bar">
{!isEmptyIngestionSpec(spec) && (
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@druid.apache.org
For additional commands, e-mail: commits-help@druid.apache.org