Repository: cloudstack Updated Branches: refs/heads/master e717450e0 -> 95c7ffbd4
fixed NPE on calculating vm snasphot volume size Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/95c7ffbd Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/95c7ffbd Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/95c7ffbd Branch: refs/heads/master Commit: 95c7ffbd46f9f674b8813a7b992c17019eb00137 Parents: e717450 Author: Anthony Xu <[email protected]> Authored: Mon Oct 13 10:29:58 2014 -0700 Committer: Anthony Xu <[email protected]> Committed: Mon Oct 13 10:49:45 2014 -0700 ---------------------------------------------------------------------- .../xenserver/resource/CitrixResourceBase.java | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/95c7ffbd/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java ---------------------------------------------------------------------- diff --git a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java index e3c3943..b669181 100644 --- a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java +++ b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java @@ -6241,11 +6241,11 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe // add size of snapshot vdi node, usually this only contains meta data size = size + vdi.getPhysicalUtilisation(conn); // add size of snapshot vdi parent, this contains data - if (parentVDI != null) + if (!isRefNull(parentVDI)) size = size + parentVDI.getPhysicalUtilisation(conn).longValue(); } } catch (Exception e) { - s_logger.debug("Exception occurs when calculate " + "snapshot capacity for volumes: " + e.getMessage()); + s_logger.debug("Exception occurs when calculate snapshot capacity for volumes: due to " + e.toString()); continue; } } @@ -6257,13 +6257,17 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe try { String vName = vmr.getNameLabel(conn); if (vName != null && vName.contains(vmName) && vmr.getIsASnapshot(conn)) { - VDI memoryVDI = vmr.getSuspendVDI(conn); - size = size + memoryVDI.getParent(conn).getPhysicalUtilisation(conn); - size = size + memoryVDI.getPhysicalUtilisation(conn); + if (!isRefNull(memoryVDI)) { + size = size + memoryVDI.getPhysicalUtilisation(conn); + VDI pMemoryVDI = memoryVDI.getParent(conn); + if (!isRefNull(pMemoryVDI)) { + size = size + pMemoryVDI.getPhysicalUtilisation(conn); + } + } } } catch (Exception e) { - s_logger.debug("Exception occurs when calculate " + "snapshot capacity for memory: " + e.getMessage()); + s_logger.debug("Exception occurs when calculate snapshot capacity for memory: due to " + e.toString()); continue; } }
