Skip to content

Conversation

@devabhishekpal
Copy link
Contributor

@devabhishekpal devabhishekpal commented Jan 5, 2026

What changes were proposed in this pull request?

Create the Cluster Capacity page UI

Please describe your PR in detail:

  • This PR adds a Cluster Capacity page to the Recon UI.
  • The intention of this page is to provide a clear picture of the space usage breakdown to the end user.
  • It intends to alleviate some of the pain points regarding stuck deletions by showing more details into the pending deletion and the stages where it is pending.

What is the link to the Apache JIRA

https://issues.apache.org/jira/browse/HDDS-13183

How was this patch tested?

Patch was tested manually.

Screenshot 2026-01-05 at 13 40 39 Screenshot 2026-01-05 at 13 40 49 Screenshot 2026-01-05 at 13 41 27 Screenshot 2026-01-05 at 13 41 13 Screenshot 2026-01-20 at 12 02 16 Screenshot 2026-01-05 at 13 40 29 Screenshot 2026-01-05 at 13 40 02 Screenshot 2026-01-20 at 12 02 07

Copy link
Contributor

@devmadhuu devmadhuu left a comment

Choose a reason for hiding this comment

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

Thanks @devabhishekpal for the patch.

  1. I think , we decided to use datanode dropdown as combo of textbox and dropdown, where user can enter also to search in long list of drop down if needed.
  2. We need export option for datanodes card atleast.
  3. By default, datanodes in dropdown needs to be populated in descending order of pending deletion size.
  4. We should gray out the list of failed datanodes in dropdown as their pending deletion data is no longer useful for user to be displayed. This should be possible using css.
  5. How are we planning to handle the case when the API response will be having duplicate nodes with same name. Pls check the API behavior in cases when same name DNs joins the cluster and if API will have response because API response contains datanode names as well as UUID, and UUID is only being treated as unique.

Copy link
Contributor

@priyeshkaratha priyeshkaratha left a comment

Choose a reason for hiding this comment

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

Thanks @devabhishekpal for working on the patch.
I have two comments regarding current UI implementation for showing DN pendingDeletion and related refreshing strategy. Please have a look on that.

Copy link
Contributor

@priyeshkaratha priyeshkaratha left a comment

Choose a reason for hiding this comment

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

Thanks @devabhishekpal for updating the patch. Overall changes LGTM

@devabhishekpal
Copy link
Contributor Author

@adoroszlai I have added the commons-csv library from apache commons.
It would be great if you could take a look as well in case we have any existing library which serves the purpose.

Copy link
Contributor

@adoroszlai adoroszlai left a comment

Choose a reason for hiding this comment

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

Thanks @devabhishekpal for the heads-up.

I have added the commons-csv library from apache commons. It would be great if you could take a look as well in case we have any existing library which serves the purpose.

dependency check failure has instructions on what needs to be done when adding new one.

<commons-collections.version>4.4</commons-collections.version>
<commons-compress.version>1.27.1</commons-compress.version>
<commons-configuration2.version>2.12.0</commons-configuration2.version>
<commons-csv.version>1.10.0</commons-csv.version>
Copy link
Contributor

Choose a reason for hiding this comment

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

Can we use the latest version, 1.14.2? Otherwise dependabot will submit PR to update this anyway, so we can skip that step.

Copy link
Contributor

@devmadhuu devmadhuu left a comment

Choose a reason for hiding this comment

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

Thanks @devabhishekpal for the patch. Kindly add unit and integration test for the code including new API end point. Also UI dev tests. And a small nit.

return Response.status(Response.Status.ACCEPTED)
.entity(stream)
.type("text/csv")
.header("Content-Disposition", "attachment; filename=\"pending_deletion_stats.csv\"")
Copy link
Contributor

Choose a reason for hiding this comment

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

if pending deletion data is for all datanodes, then we can rename the csv as "pending_deletion_alldatanode_stats.csv"

@yandrey321
Copy link

yandrey321 commented Jan 21, 2026

[Usability issue] Its better to use grid (+ pagination or infinity scrolling and filtering/sorting/searching capabilities) with info for all data data nodes. In case of hundreds datanodes it would be hard to explore and pinpoint data nodes that cause probles.

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.

5 participants