From 273de60a5f6414c36d106dfe8133456bfe84b3a1 Mon Sep 17 00:00:00 2001 From: abhi Date: Wed, 25 Jan 2012 11:32:10 +0530 Subject: [PATCH] bug 12875: Every time XenServerResource sends fullsync to CS, it should clear up VM status for this cluster and update with latest VM status for this cluster getting from XAPI. reviewed by: anthony --- .../hypervisor/xen/resource/CitrixResourceBase.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/core/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java b/core/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java index 70b3beb90ee..1f3675934a8 100755 --- a/core/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java +++ b/core/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java @@ -6644,7 +6644,9 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe } protected HashMap> fullClusterSync(Connection conn) { - XenServerPoolVms vms = new XenServerPoolVms(); + synchronized (_cluster.intern()) { + s_vms.clear(_cluster); + } try { Map vm_map = VM.getAllRecords(conn); //USE THIS TO GET ALL VMS FROM A CLUSTER for (VM.Record record: vm_map.values()) { @@ -6658,7 +6660,9 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe String host_uuid = null; if( ! isRefNull(host) ) { host_uuid = host.getUuid(conn); - vms.put(_cluster, host_uuid, vm_name, state); + synchronized (_cluster.intern()) { + s_vms.put(_cluster, host_uuid, vm_name, state); + } } if (s_logger.isTraceEnabled()) { s_logger.trace("VM " + vm_name + ": powerstate = " + ps + "; vm state=" + state.toString()); @@ -6669,7 +6673,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe s_logger.warn(msg, e); throw new CloudRuntimeException(msg); } - return vms.getClusterVmState(_cluster); + return s_vms.getClusterVmState(_cluster); }