Skip to content

SOLR-12613: node picker for cross-node screens - #5110

Open
iprithv wants to merge 4 commits into
apache:mainfrom
iprithv:admin-ui-node-picker
Open

iprithv wants to merge 4 commits into
apache:mainfrom
iprithv:admin-ui-node-picker

Conversation

@iprithv

@iprithv iprithv commented Oct 12, 2026 •

Copy link
Copy Markdown
Contributor

https://issues.apache.org/jira/browse/SOLR-12613

HACKATHON :)

added a Node picker so Thread Dump, Java Properties, Logging, Cores, and Dashboard can target any live node via the existing nodes= proxy.

sidebar is split into Cluster and Node. Works in SolrCloud and stays out of the way in standalone.

…d Cluster/Node sidebar.

Signed-off-by: prithvi <prithvisivasankar@gmail.com>
@iprithv
iprithv force-pushed the admin-ui-node-picker branch from 4915123 to fc0b096 Compare October 12, 2026 14:41
@iprithv

iprithv commented Oct 12, 2026

Copy link
Copy Markdown
Contributor Author
after-cluster-dashboard before-standalone-cores

Signed-off-by: prithvi <prithvisivasankar@gmail.com>
… tests.

Signed-off-by: prithvi <prithvisivasankar@gmail.com>
@iprithv iprithv changed the title node picker for cross-node screens SOLR-12613: [HACKATHON] node picker for cross-node screens Oct 12, 2026
@iprithv iprithv changed the title SOLR-12613: [HACKATHON] node picker for cross-node screens SOLR-12613: node picker for cross-node screens Oct 12, 2026
@janhoy
janhoy self-requested a review October 12, 2026 18:24
@janhoy

janhoy commented Oct 12, 2026

Copy link
Copy Markdown
Contributor

First question: The "node selector" dropdown, I suppose will still be valid only for the current node, i.e. query, update, schema, segments etc etc? Users may believe that it also obeys the chosen node. Not sure how to deal with that.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🟡 Changes recommended

Persisted targets can display local data as remote, and remote Core Admin views can execute mutations against the wrong node.

6 open findings
What changed in this PR

Adds cross-node targeting to the legacy Admin UI and supporting V2 node APIs.

Changes:

  • Adds a persistent live-node picker and reorganizes the sidebar.
  • Extends node-local APIs with nodes proxy support.
  • Adds backend proxy integration tests and UI styling.
File Description
solr/​webapp/​web/​partials/​logging-levels.html Adds cluster-wide logging notice.
solr/​webapp/​web/​partials/​index.html Displays the selected node.
solr/​webapp/​web/​partials/​cores.html Uses cloud-mode state consistently.
solr/​webapp/​web/​partials/​cloud.html Adds node dashboard and Admin UI links.
solr/​webapp/​web/​js/​angular/​services.js Introduces persistent node-target state.
solr/​webapp/​web/​js/​angular/​controllers/​threads.js Targets thread dumps by node.
solr/​webapp/​web/​js/​angular/​controllers/​logging.js Targets log messages and adjusts level broadcasting.
solr/​webapp/​web/​js/​angular/​controllers/​java-properties.js Targets Java properties by node.
solr/​webapp/​web/​js/​angular/​controllers/​index.js Targets dashboard system information.
solr/​webapp/​web/​js/​angular/​controllers/​cores.js Loads core status from selected nodes.
solr/​webapp/​web/​js/​angular/​controllers/​collection-overview.js Guards missing collection data.
solr/​webapp/​web/​js/​angular/​controllers/​cloud.js Connects node rows to target selection.
solr/​webapp/​web/​js/​angular/​app.js Integrates node state into navigation.
solr/​webapp/​web/​index.html Adds the node picker and reorganized menu.
solr/​webapp/​web/​css/​angular/​menu.css Styles the reorganized sidebar and selectors.
solr/​webapp/​web/​css/​angular/​logging.css Styles the logging notice.
solr/​webapp/​web/​css/​angular/​common.css Styles the selected-node badge.
solr/​webapp/​web/​css/​angular/​cloud.css Styles node Admin UI links.
solr/​core/​src/​test/​org/​apache/​solr/​handler/​admin/​ThreadDumpHandlerTest.java Adapts thread-dump tests.
solr/​core/​src/​test/​org/​apache/​solr/​handler/​admin/​api/​NodeLoggingAPITest.java Adapts logging API tests.
solr/​core/​src/​test/​org/​apache/​solr/​handler/​admin/​api/​NodeAdminProxySolrCloudTest.java Tests proxied node APIs.
solr/​core/​src/​java/​org/​apache/​solr/​handler/​admin/​ThreadDumpHandler.java Adapts the V1 thread handler.
solr/​core/​src/​java/​org/​apache/​solr/​handler/​admin/​LoggingHandler.java Adapts the V1 logging handler.
solr/​core/​src/​java/​org/​apache/​solr/​handler/​admin/​api/​NodeThreadsAPI.java Adds thread-dump proxying.
solr/​core/​src/​java/​org/​apache/​solr/​handler/​admin/​api/​NodeLogging.java Adds logging-read proxying.
solr/​core/​src/​java/​org/​apache/​solr/​handler/​admin/​api/​GetNodeProperties.java Adds properties proxying.
solr/​core/​src/​java/​org/​apache/​solr/​handler/​admin/​api/​CoreStatus.java Adds core-status proxying.
solr/​api/​src/​java/​org/​apache/​solr/​client/​api/​model/​NodeThreadsResponse.java Supports keyed remote responses.
solr/​api/​src/​java/​org/​apache/​solr/​client/​api/​model/​NodePropertiesResponse.java Supports keyed remote responses.
solr/​api/​src/​java/​org/​apache/​solr/​client/​api/​model/​LoggingResponse.java Supports keyed remote responses.
solr/​api/​src/​java/​org/​apache/​solr/​client/​api/​model/​CoreStatusResponse.java Supports keyed remote responses.
solr/​api/​src/​java/​org/​apache/​solr/​client/​api/​endpoint/​NodeThreadsApi.java Adds the nodes parameter.
solr/​api/​src/​java/​org/​apache/​solr/​client/​api/​endpoint/​NodePropertiesApi.java Adds the nodes parameter.
solr/​api/​src/​java/​org/​apache/​solr/​client/​api/​endpoint/​NodeLoggingApis.java Adds logging nodes parameters.
solr/​api/​src/​java/​org/​apache/​solr/​client/​api/​endpoint/​CoreApis.java Adds core-status node targeting.
changelog/​unreleased/​PR#5110-admin-ui-node-picker.yml Documents the feature.

🧠 Review effort: Balanced


💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment on lines +23 to +26
CoresV2.getAllCoreStatus(NodeTarget.withNodes({}), function(error, data, response) {
$timeout(function() {
if (error) { ApiErrorHandler.handle(response); return; }
var payload = NodeTarget.unwrap(data, response) || {};
Comment thread solr/webapp/web/js/angular/app.js Outdated
Comment thread solr/webapp/web/js/angular/controllers/logging.js Outdated
Comment thread solr/webapp/web/js/angular/services.js
Comment thread solr/webapp/web/index.html Outdated
Comment thread solr/webapp/web/js/angular/services.js
@janhoy
janhoy requested a balanced review from Copilot October 12, 2026 21:54

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@iprithv

iprithv commented Oct 12, 2026

Copy link
Copy Markdown
Contributor Author

First question: The "node selector" dropdown, I suppose will still be valid only for the current node, i.e. query, update, schema, segments etc etc? Users may believe that it also obeys the chosen node. Not sure how to deal with that.

yeah.. picker is only for the Node screens. core menu already hides on a remote node, and i added a "Node screens only" hint :)

Comment thread solr/webapp/web/index.html Outdated
ng-options="node as nodeLabel(node) for node in liveNodes"></select>
</div>
<p id="node-selector-hint" ng-class="{remote: viewingRemoteNode}">
{{ viewingRemoteNode ? 'Remote node (Node screens only)' : 'This node — Node screens only' }}

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

I'm not convinced with this either...any better messaging which would help hre? @janhoy

Signed-off-by: prithvi <prithvisivasankar@gmail.com>
@iprithv
iprithv force-pushed the admin-ui-node-picker branch from 2365a02 to 996861b Compare October 12, 2026 22:28
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.

3 participants