Shilun Fan created HDDS-15362:
---------------------------------

             Summary: [DiskBalancer] Handle zero-capacity volumes in status 
report
                 Key: HDDS-15362
                 URL: https://issues.apache.org/jira/browse/HDDS-15362
             Project: Apache Ozone
          Issue Type: Bug
          Components: Ozone Datanode
            Reporter: Shilun Fan
            Assignee: Shilun Fan


DiskBalancer status/report generation may throw a NullPointerException when a 
datanode contains a zero-capacity volume.

VolumeFixedUsage does not calculate utilization for a volume whose capacity is 
0:

 
{code:java}
this.utilization = usage.getCapacity() > 0
    ? computeUtilization(...)
    : null; {code}
However, DiskBalancerService.buildVolumeReportProto() builds report entries for 
all volumes and calls:
{code:java}
v.getUtilization() {code}
Since getUtilization() requires a non-null value, a zero-capacity volume causes 
the status/report path to fail with:
{code:java}
java.lang.NullPointerException: utilization == null {code}
HDDS-15300 already handles zero-capacity volumes in the container choosing 
policy, but the report generation path still needs to preserve and safely 
report such volumes.

The proposed fix is to keep zero-capacity volumes in the report and set their 
utilization to 0.0, instead of calling getUtilization(). This avoids the 
exception while retaining useful volume information in DiskBalancer status 
output.

 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to