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); }