Skip to content

feat: Improved UX in the Coordinator Dynamic Config form for server selection in Decommissioning servers and Turbo Loading servers#19254

Open
capistrant wants to merge 10 commits into
apache:masterfrom
capistrant:dynamic-server-selector-turbo+decom
Open

feat: Improved UX in the Coordinator Dynamic Config form for server selection in Decommissioning servers and Turbo Loading servers#19254
capistrant wants to merge 10 commits into
apache:masterfrom
capistrant:dynamic-server-selector-turbo+decom

Conversation

@capistrant
Copy link
Copy Markdown
Contributor

@capistrant capistrant commented Apr 2, 2026

Description

Broken out from #19250 due to that PR getting too large and difficult to review. This PR focuses on improving the UX for an operator working with two of the fields in the coordinator dynamic config form via web console. These fields are the decommissioning servers field and the turbo loading servers field. Each was formerly a string array where the operator was responsible for modifying a text block basically, making sure to properly format the change and not mistype, etc. I've replaced this behavior with a new dialog within the form where the console serves up lists of historicals split by tier for you to check/uncheck to modify the underlying lists of servers. There is also search filtering and tier level select/unselect. If the list contains servers(s) not announced in the cluster, you get a warning and can click to remove them as a convenience.

Note that this removes the possibility of filling in the text box with servers not in the cluster at that moment. However, this ability is not outright gone in the console, you can still click through to the raw json form and do whatever you please with the list.

image image image

Release note

Improve the UX for cluster operators when modifying the list of servers in decommissioning nodes and/or turbo loading nodes in the web console coordinator dynamic config form.


Key changed/added classes in this PR
  • web-console/src/dialogs/coordinator-dynamic-config-dialog/coordinator-dynamic-config-dialog.tsx
  • web-console/src/dialogs/coordinator-dynamic-config-dialog/server-multi-select-dialog.tsx
  • web-console/src/dialogs/coordinator-dynamic-config-dialog/tiered-servers.ts
  • web-console/src/druid-models/coordinator-dynamic-config/coordinator-dynamic-config.tsx

This PR has:

  • been self-reviewed.
  • added documentation for new or modified features or behaviors.
  • a release note entry in the PR description.
  • added Javadocs for most classes and all non-trivial methods. Linked related entities via Javadoc links.
  • added or updated version, license, or notice information in licenses.yaml
  • added comments explaining the "why" and the intent of the code wherever would not be obvious for an unfamiliar reader.
  • added unit tests or modified existing tests to cover new code paths, ensuring the threshold for code coverage is met.
  • added integration tests.
  • been tested in a test Druid cluster.

customDialog: ({ value, onValueChange, onClose }) => (
<ServerMultiSelectDialog
title="Decommissioning nodes"
servers={servers}
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[P2] Server picker can stay stuck loading

If the operator clicks edit for decommissioningNodes before the server-list query finishes, AutoForm stores this custom dialog JSX in its own state with servers still undefined. When serversState.data later arrives, the stored dialog element is not recreated, so the dialog keeps showing the Loader until the user closes and reopens it. Pass a live query state into the dialog or prevent opening the picker until the server list has resolved.

Copy link
Copy Markdown
Member

@FrankChen021 FrankChen021 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have reviewed the latest update for correctness, edge cases, UI state handling, and integration risks; no issues found.


This is an automated review by Codex GPT-5

Copy link
Copy Markdown
Member

@FrankChen021 FrankChen021 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have reviewed the code for correctness, edge cases, concurrency, and integration risks; no issues found.

Reviewed 11 of 11 changed files.


This is an automated review by Codex GPT-5.5

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants