From 524f0d80db00eeb9f60aee952146dd874f753d67 Mon Sep 17 00:00:00 2001 From: Abhishek Kumar Date: Mon, 28 Jul 2025 17:56:25 +0530 Subject: [PATCH] server: fix NaN values for external resource metrics (#11302) CPU and RAM values for external resource metrics was showing NaN values. This fixes the behaviour. Signed-off-by: Abhishek Kumar --- .../main/java/com/cloud/api/query/dao/HostJoinDaoImpl.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/server/src/main/java/com/cloud/api/query/dao/HostJoinDaoImpl.java b/server/src/main/java/com/cloud/api/query/dao/HostJoinDaoImpl.java index fd963179aa2..66472597f97 100644 --- a/server/src/main/java/com/cloud/api/query/dao/HostJoinDaoImpl.java +++ b/server/src/main/java/com/cloud/api/query/dao/HostJoinDaoImpl.java @@ -207,8 +207,7 @@ public class HostJoinDaoImpl extends GenericDaoBase implements hostResponse.setMemWithOverprovisioning(decimalFormat.format(memWithOverprovisioning)); hostResponse.setMemoryAllocated(mem); hostResponse.setMemoryAllocatedBytes(mem); - String memoryAllocatedPercentage = decimalFormat.format((float) mem / memWithOverprovisioning * 100.0f) +"%"; - hostResponse.setMemoryAllocatedPercentage(memoryAllocatedPercentage); + hostResponse.setMemoryAllocatedPercentage(calculateResourceAllocatedPercentage(mem, memWithOverprovisioning)); String hostTags = host.getTag(); hostResponse.setHostTags(hostTags); @@ -401,6 +400,9 @@ public class HostJoinDaoImpl extends GenericDaoBase implements } private String calculateResourceAllocatedPercentage(float resource, float resourceWithOverProvision) { + if (resource == 0 || resourceWithOverProvision == 0) { + return "0.00%"; + } DecimalFormat decimalFormat = new DecimalFormat("#.##"); return decimalFormat.format(((float)resource / resourceWithOverProvision * 100.0f)) + "%"; }