Repository navigation
Conversation
…d Cluster/Node sidebar. Signed-off-by: prithvi <prithvisivasankar@gmail.com>
4915123 to
fc0b096
Compare
Signed-off-by: prithvi <prithvisivasankar@gmail.com>
… tests. Signed-off-by: prithvi <prithvisivasankar@gmail.com>
|
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. |
There was a problem hiding this comment.
🟡 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
Core Admin mutates the local node while displaying a remote core · New Premature false initialization bypasses asynchronous mode detection · New Node targeting depends on asynchronous live-node discovery · New Reloaded remote nodes trigger child requests against the local node · New Node selector lacks an accessible semantic label · New Missing browser coverage for node selection and session restoration · New
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
nodesproxy 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.
| CoresV2.getAllCoreStatus(NodeTarget.withNodes({}), function(error, data, response) { | ||
| $timeout(function() { | ||
| if (error) { ApiErrorHandler.handle(response); return; } | ||
| var payload = NodeTarget.unwrap(data, response) || {}; |
yeah.. picker is only for the Node screens. core menu already hides on a remote node, and i added a "Node screens only" hint :) |
| 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' }} |
There was a problem hiding this comment.
I'm not convinced with this either...any better messaging which would help hre? @janhoy
Signed-off-by: prithvi <prithvisivasankar@gmail.com>
2365a02 to
996861b
Compare





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.